<?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>158166</bug_id>
          
          <creation_ts>2016-05-27 14:24:28 -0700</creation_ts>
          <short_desc>callOnMainThread() should not copy captured lambda variables</short_desc>
          <delta_ts>2016-05-31 12:51:52 -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>Web Template Framework</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=158173</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=158172</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158111</dependson>
    
    <dependson>158230</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1197214</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 14:24:28 -0700</bug_when>
    <thetext>callOnMainThread() should not copy captured lambda variables to reduce the risk of thread-related races.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197274</commentid>
    <comment_count>1</comment_count>
      <attachid>280012</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 16:53:21 -0700</bug_when>
    <thetext>Created attachment 280012
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197276</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-27 16:55:53 -0700</bug_when>
    <thetext>Attachment 280012 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:132:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:314:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:333:  Missing space before {  [whitespace/braces] [5]
Total errors found: 3 in 54 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197295</commentid>
    <comment_count>3</comment_count>
      <attachid>280015</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 18:27:54 -0700</bug_when>
    <thetext>Created attachment 280015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197296</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-27 18:29:14 -0700</bug_when>
    <thetext>Attachment 280015 did not pass style-queue:


ERROR: Source/WebCore/platform/MemoryPressureHandler.cpp:175:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:112:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 61 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197298</commentid>
    <comment_count>5</comment_count>
      <attachid>280016</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 19:01:50 -0700</bug_when>
    <thetext>Created attachment 280016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197299</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-27 19:02:37 -0700</bug_when>
    <thetext>Attachment 280016 did not pass style-queue:


ERROR: Source/WebCore/platform/MemoryPressureHandler.cpp:175:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:112:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 61 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197301</commentid>
    <comment_count>7</comment_count>
      <attachid>280017</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 19:27:26 -0700</bug_when>
    <thetext>Created attachment 280017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197302</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-27 19:29:38 -0700</bug_when>
    <thetext>Attachment 280017 did not pass style-queue:


ERROR: Source/WebCore/platform/MemoryPressureHandler.cpp:175:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:112:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 61 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197303</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 20:01:07 -0700</bug_when>
    <thetext>Patch is ready for review. It is building everywhere and passing the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197309</commentid>
    <comment_count>10</comment_count>
      <attachid>280017</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-27 20:49:07 -0700</bug_when>
    <thetext>Comment on attachment 280017
Patch

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

This is so great.

r-, but the changes are just mechanical replacements.

This patch makes it clear to me I&apos;ll need to try to update the style checker rules for lambda captures :)

Imagine the style checker caught all these protectors - Now would be a great time to update them! :)

&gt; Source/WTF/wtf/FunctionDispatcher.h:30
&gt; +#include &lt;wtf/Functional.h&gt;

Should we call the new header NoncopyableFunction.h, as that is its only contents?

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:175
&gt; +        ScrollingThread::dispatch([]() { WTF::releaseFastMallocFreeMemory(); });

Please put this on two lines - I don&apos;t think there should ever be an exception for any lambda, no matter how simple it is, as it is important for them to stand out at a glance.

&gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:435
&gt; +    callOnMainThread([strongSelf = RetainPtr&lt;WebMediaSessionHelper&gt;(self)] () {

protectedSelf (Here, and everywhere else where we touch a &quot;strongSelf&quot;)

&gt; Source/WebCore/platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:326
&gt; +    callOnMainThread([strongThis = Ref&lt;AudioSourceProviderAVFObjC&gt;(*this), numberOfChannels, sampleRate] {

protectedThis (here, and everywhere else we touch a &quot;strongThis&quot;)

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:279
&gt; +    callOnMainThread([strongSelf = WTFMove(strongSelf), strongData = WTFMove(strongData), trackID, hasSessionSemaphore = WTFMove(hasSessionSemaphore)] {

protectedInitData

&gt; Source/WebKit/Storage/StorageThread.cpp:112
&gt; +        (*it)-&gt;dispatch([]() { WTF::releaseFastMallocFreeMemory(); });

Please put this on two lines - I don&apos;t think there should ever be an exception for any lambda, no matter how simple it is, as it is important for them to stand out at a glance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197311</commentid>
    <comment_count>11</comment_count>
      <attachid>280019</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 21:42:06 -0700</bug_when>
    <thetext>Created attachment 280019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197319</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-27 22:02:50 -0700</bug_when>
    <thetext>MockSourceBufferPrivate - exit_code: 65

huh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197320</commentid>
    <comment_count>13</comment_count>
      <attachid>280019</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-27 22:06:17 -0700</bug_when>
    <thetext>Comment on attachment 280019
Patch

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

r+ (with one nit) assuming you get the build working.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:279
&gt; -    RetainPtr&lt;WebAVStreamDataParserListener&gt; strongSelf = self;
&gt; +    RetainPtr&lt;WebAVStreamDataParserListener&gt; protectedSelf = self;
&gt;  
&gt; -    RetainPtr&lt;NSData&gt; strongData = initData;
&gt; +    RetainPtr&lt;NSData&gt; protectedInitData = initData;
&gt;      OSObjectPtr&lt;dispatch_semaphore_t&gt; hasSessionSemaphore = adoptOSObject(dispatch_semaphore_create(0));
&gt; -    callOnMainThread([strongSelf, strongData, trackID,  hasSessionSemaphore] {
&gt; -        if (strongSelf-&gt;_parent)
&gt; -            strongSelf-&gt;_parent-&gt;didProvideContentKeyRequestInitializationDataForTrackID(strongData.get(), trackID, hasSessionSemaphore);
&gt; +    callOnMainThread([protectedSelf = WTFMove(protectedSelf), protectedInitData = WTFMove(protectedInitData), trackID, hasSessionSemaphore = WTFMove(hasSessionSemaphore)] {

If you have to take another pass to get the builds working, you can initialize the two RetainPtrs here inside the lambda capture instead of having the local variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197321</commentid>
    <comment_count>14</comment_count>
      <attachid>280021</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 22:12:10 -0700</bug_when>
    <thetext>Created attachment 280021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197330</commentid>
    <comment_count>15</comment_count>
      <attachid>280021</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 22:50:32 -0700</bug_when>
    <thetext>Comment on attachment 280021
Patch

Clearing flags on attachment: 280021

Committed r201482: &lt;http://trac.webkit.org/changeset/201482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197331</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-27 22:50:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197582</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-30 02:17:09 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 280021 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 280021
&gt; 
&gt; Committed r201482: &lt;http://trac.webkit.org/changeset/201482&gt;

It broke the WinCairo (curl) build, see build.webkit.org for details.
(cc-ing port maintainers)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197827</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 10:52:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201515</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280012</attachid>
            <date>2016-05-27 16:53:21 -0700</date>
            <delta_ts>2016-05-27 18:27:49 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>158166_callOnMainThread.patch</filename>
            <type>text/plain</type>
            <size>79667</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhkZGJkYTMuLjBk
NjRiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE0
LDYgKzExNCw3IEBACiAJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4
dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Uy
OUMzM0QxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi87IH07CiAJCTgx
MzQwMTM4MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5jcHAgKi87IH07CiAJCTgxMzQwMTM5MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM3MTVC
MDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLzsgfTsKKwkJODMxOUU0QTExQ0Y4RjBGNDAwRkVC
NDRFIC8qIEZ1bmN0aW9uYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzMTlFNEEwMUNGOEYwRjQwMEZFQjQ0RSAvKiBGdW5jdGlvbmFsLmggKi87IH07
CiAJCTgzRkJBOTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkJBOTMxMTlERjQ1OTcwMEYzMEFE
QiAvKiBUeXBlQ2FzdHMuaCAqLzsgfTsKIAkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8qIFJl
ZkNvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2RjQ2RjVGMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi87IH07CiAJCTkzOTM0
QkQzMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3T2JqQy5tbSAqLzsgfTsKQEAgLTQzNyw2ICs0MzgsNyBAQAogCQk3RTI5QzMz
RDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT2JqY1J1bnRpbWVFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MzE5RTRBMDFDRjhGMEY0MDBGRUI0NEUgLyogRnVuY3Rpb25hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUNhc3RzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RjQ2RjVGMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3Vu
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZkNvdW50ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0
cmluZ1ZpZXdPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
U3RyaW5nVmlld09iakMubW07IHBhdGggPSBtYWMvU3RyaW5nVmlld09iakMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjYsNiArODI4LDcgQEAKIAkJCQlBOEE0NzJBNjE1MUE4
MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICovLAogCQkJCTFBMUQ4QjlEMTczMTg3OTgwMDE0MURB
NCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwICovLAogCQkJCTFBMUQ4QjlCMTczMTg2Q0UwMDE0
MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuaCAqLywKKwkJCQk4MzE5RTRBMDFDRjhGMEY0MDBG
RUI0NEUgLyogRnVuY3Rpb25hbC5oICovLAogCQkJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAv
KiBHZXRQdHIuaCAqLywKIAkJCQkwRkVDODRBRTFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2Rl
V29ya2xpc3QuaCAqLywKIAkJCQkyQ0NEODkyOTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFu
RGF0ZVRpbWUuY3BwICovLApAQCAtMTMyOSw2ICsxMzMyLDcgQEAKIAkJCQkwRkIzMTdDNDFDNDg4
MDAxMDA3RTM5NUEgLyogU3lzdGVtVHJhY2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0
MzMxNTFBODI1QjAwNDEyM0ZGIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0NDQxNTFBODI1QjAwNDEyM0ZGIC8qIFRleHRQb3NpdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODMxOUU0QTExQ0Y4RjBGNDAwRkVCNDRFIC8qIEZ1bmN0aW9uYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QTQ3NDQ3MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRGdW5jdGlvbklu
dm9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDQ5MTUxQTgyNUIwMDQxMjNGRiAv
KiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQ0QjE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oIGIvU291cmNlL1dURi93
dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgKaW5kZXggYWMwZTAxZi4uNzBmNDRhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgKQEAgLTI3LDY2ICsyNywxMSBAQAogI2RlZmluZSBGdW5j
dGlvbkRpc3BhdGNoZXJfaAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIAotLy8gRklYTUU6IE1vdmUgdGhpcyB0byBpdHMgb3duIGhlYWRlciAo
ZS5nLiBGdW5jdGlvbmFsLmgpLgotLy8gRklYTUU6IFdlIGNvdWxkIG1ha2UgdGhpcyB0ZW1wbGF0
ZWQgdG8gc3VwcG9ydCBvdGhlciBsYW1iZGFzIHRoYW4gdm9pZCgpIGFuZCBtYWtlIHRoaXMgbW9y
ZSByZXVzYWJsZS4KLWNsYXNzIE5vbmNvcHlhYmxlRnVuY3Rpb24gewotcHVibGljOgotICAgIE5v
bmNvcHlhYmxlRnVuY3Rpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
YWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFs
dWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgotICAgIE5vbmNvcHlh
YmxlRnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJs
ZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlPj4o
V1RGTW92ZShjYWxsYWJsZSkpKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCko
KSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1fY2FsbGFibGVXcmFwcGVyKQotICAgICAgICAg
ICAgbV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoKTsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxhYmxlV3JhcHBlcjsgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6
dHlwZT4KLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYg
Y2FsbGFibGUpCi0gICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKTsK
LSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBjbGFzcyBDYWxs
YWJsZVdyYXBwZXJCYXNlIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAg
cHVibGljOgotICAgICAgICB2aXJ0dWFsIH5DYWxsYWJsZVdyYXBwZXJCYXNlKCkgeyB9Ci0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbGwoKSA9IDA7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENhbGxhYmxlVHlwZT4KLSAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXIgZmluYWwgOiBw
dWJsaWMgQ2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNp
dCBDYWxsYWJsZVdyYXBwZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgICAgICA6
IG1fY2FsbGFibGUoV1RGTW92ZShjYWxsYWJsZSkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0g
ICAgICAgIENhbGxhYmxlV3JhcHBlcihjb25zdCBDYWxsYWJsZVdyYXBwZXImKSA9IGRlbGV0ZTsK
LSAgICAgICAgQ2FsbGFibGVXcmFwcGVyJiBvcGVyYXRvcj0oY29uc3QgQ2FsbGFibGVXcmFwcGVy
JikgPSBkZWxldGU7Ci0KLSAgICAgICAgdm9pZCBjYWxsKCkgZmluYWwgeyBtX2NhbGxhYmxlKCk7
IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENhbGxhYmxlVHlwZSBtX2NhbGxhYmxlOwotICAg
IH07Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVyQmFzZT4gbV9jYWxsYWJs
ZVdyYXBwZXI7Ci19OwotCiAvLyBGdW5jdGlvbkRpc3BhdGNoZXIgaXMgYW4gYWJzdHJhY3QgcmVw
cmVzZW50YXRpb24gb2Ygc29tZXRoaW5nIHRoYXQgZnVuY3Rpb25zIGNhbiBiZQogLy8gZGlzcGF0
Y2hlZCB0by4gVGhpcyBjYW4gZm9yIGV4YW1wbGUgYmUgYSBydW4gbG9vcCBvciBhIHdvcmsgcXVl
dWUuCiAKQEAgLTEwMyw2ICs0OCw1IEBAIHByb3RlY3RlZDoKIH0gLy8gbmFtZXNwYWNlIFdURgog
CiB1c2luZyBXVEY6OkZ1bmN0aW9uRGlzcGF0Y2hlcjsKLXVzaW5nIFdURjo6Tm9uY29weWFibGVG
dW5jdGlvbjsKIAogI2VuZGlmIC8vIEZ1bmN0aW9uRGlzcGF0Y2hlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkxODYwZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uYWwuaApAQCAtMCwwICsxLDk1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFjZSBX
VEYgeworCisvLyBGSVhNRTogV2UgY291bGQgbWFrZSB0aGlzIHRlbXBsYXRlZCB0byBzdXBwb3J0
IG90aGVyIGxhbWJkYXMgdGhhbiB2b2lkKCkgYW5kIG1ha2UgdGhpcyBtb3JlIHJldXNhYmxlLgor
Y2xhc3MgTm9uY29weWFibGVGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgTm9uY29weWFibGVGdW5j
dGlvbigpID0gZGVmYXVsdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwg
Y2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8
Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgTm9uY29weWFibGVGdW5jdGlvbihD
YWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6
Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3ZlKGNhbGxh
YmxlKSkpCisgICAgeworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9jYWxsYWJsZVdyYXBwZXIpCisgICAgICAgICAgICBtX2NhbGxhYmxl
V3JhcHBlci0+Y2FsbCgpOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fY2FsbGFibGVXcmFwcGVyOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIE5v
bmNvcHlhYmxlRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKKyAg
ICB7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJs
ZVdyYXBwZXI8Q2FsbGFibGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkpOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCisgICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9KHN0
ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBudWxscHRy
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCitwcml2YXRlOgorICAgIGNsYXNzIENh
bGxhYmxlV3JhcHBlckJhc2UgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNhbGxhYmxlV3JhcHBlckJhc2UoKSB7IH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbCgpID0gMDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2FsbGFibGVUeXBlPgorICAgIGNsYXNzIENhbGxhYmxlV3JhcHBlciBmaW5hbCA6
IHB1YmxpYyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxp
Y2l0IENhbGxhYmxlV3JhcHBlcihDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKKyAgICAgICAgICAg
IDogbV9jYWxsYWJsZShXVEZNb3ZlKGNhbGxhYmxlKSkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgQ2FsbGFibGVXcmFwcGVyKGNvbnN0IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRl
OworICAgICAgICBDYWxsYWJsZVdyYXBwZXImIG9wZXJhdG9yPShjb25zdCBDYWxsYWJsZVdyYXBw
ZXImKSA9IGRlbGV0ZTsKKworICAgICAgICB2b2lkIGNhbGwoKSBmaW5hbCB7IG1fY2FsbGFibGUo
KTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2FsbGFibGVUeXBlIG1fY2FsbGFibGU7Cisg
ICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsYWJsZVdyYXBwZXJCYXNlPiBtX2NhbGxh
YmxlV3JhcHBlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Ok5vbmNv
cHlhYmxlRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCmluZGV4IDQ2NTU1ZDUuLmQzZjAyNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01haW5UaHJlYWQuY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIHN0YXRpYyBUaHJlYWRJZGVu
dGlmaWVyIG1haW5UaHJlYWRJZGVudGlmaWVyOwogCiBzdGF0aWMgU3RhdGljTG9jayBtYWluVGhy
ZWFkRnVuY3Rpb25RdWV1ZU11dGV4OwogCi1zdGF0aWMgRGVxdWU8c3RkOjpmdW5jdGlvbjx2b2lk
ICgpPj4mIGZ1bmN0aW9uUXVldWUoKQorc3RhdGljIERlcXVlPE5vbmNvcHlhYmxlRnVuY3Rpb24+
JiBmdW5jdGlvblF1ZXVlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVxdWU8c3Rk
OjpmdW5jdGlvbjx2b2lkICgpPj4+IGZ1bmN0aW9uUXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPERlcXVlPE5vbmNvcHlhYmxlRnVuY3Rpb24+PiBmdW5jdGlvblF1ZXVlOwogICAgIHJl
dHVybiBmdW5jdGlvblF1ZXVlOwogfQogCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBkaXNwYXRj
aEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKIAogICAgIGF1dG8gc3RhcnRUaW1lID0gc3RkOjpj
aHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGZ1bmN0aW9uOworICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24gZnVuY3Rpb247CiAKICAgICB3aGls
ZSAodHJ1ZSkgewogICAgICAgICB7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBkaXNwYXRjaEZ1
bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKICAgICB9CiB9CiAKLXZvaWQgY2FsbE9uTWFpblRocmVh
ZChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQordm9pZCBjYWxsT25NYWluVGhyZWFk
KE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggMjBjZjFjYi4uMmU4ZWYxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQu
aApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxz
dGRpbnQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogCiBuYW1lc3BhY2UgV1RGIHsK
IApAQCAtNDAsNyArNDEsNyBAQCB0eXBlZGVmIHVpbnQzMl90IFRocmVhZElkZW50aWZpZXI7CiAv
LyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGNhbGxPbk1haW5UaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CitXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb24mJik7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxPbldlYlRocmVh
ZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4
IDQ4NTI3YjkuLmNkNGQzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTk3OSw3ICs5NzksNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24mIG9wZXJhdGlvbgogICAgICAgICAvLyBJZiB0aGUgSURCVmFsdWUgZG9lc24ndCBoYXZlIGFu
eSBkYXRhLCB0aGVuIHNvbWV0aGluZyB3ZW50IHdyb25nIHdyaXRpbmcgdGhlIGJsb2JzIHRvIGRp
c2suCiAgICAgICAgIC8vIEluIHRoYXQgY2FzZSwgd2UgY2Fubm90IHN1Y2Nlc3NmdWxseSBzdG9y
ZSB0aGlzIHJlY29yZCwgc28gd2UgY2FsbGJhY2sgd2l0aCBhbiBlcnJvci4KICAgICAgICAgYXV0
byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvcihwcm90ZWN0ZWRPcGVyYXRpb24tPmlkZW50
aWZpZXIoKSwgeyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVy
YWwoIkVycm9yIHByZXBhcmluZyBCbG9iL0ZpbGUgZGF0YSB0byBiZSBzdG9yZWQgaW4gb2JqZWN0
IHN0b3JlIikgfSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBwcm90ZWN0ZWRPcGVyYXRpb24gPSBXVEZNb3Zl
KHByb3RlY3RlZE9wZXJhdGlvbiksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSB7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBwcm90ZWN0ZWRPcGVyYXRpb24gPSBXVEZNb3ZlKHByb3RlY3RlZE9wZXJhdGlvbiksIHJl
c3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRPcGVyYXRp
b24tPmNvbXBsZXRlZChyZXN1bHQpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVl
c3QuY3BwCmluZGV4IDE4MDJjYzUuLjU2ZTVmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcApAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUGVybWlz
c2lvbkNoZWNrKGNvbnN0IFN0cmluZyYgc2FsdCwgYm9vbCBjYQogICAgIG1faWRIYXNoU2FsdCA9
IHNhbHQ7CiAgICAgbV9oYXZlUGVyc2lzdGVudFBlcm1pc3Npb24gPSBjYW5BY2Nlc3M7CiAKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwZXJtaXNzaW9uQ2hlY2tQcm90ZWN0b3JdIHsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwZXJtaXNzaW9uQ2hlY2tQcm90ZWN0b3IgPSBXVEZN
b3ZlKHBlcm1pc3Npb25DaGVja1Byb3RlY3RvcildIHsKICAgICAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXModGhpcyk7
CiAgICAgfSk7CiB9CkBAIC0xNjAsOCArMTYwLDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0
OjpkaWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3QoY29uc3QgVHJhY2tTb3VyY2VJbmYK
ICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBsYWJlbCwgaWQsIGdyb3VwSWQsIGRldmljZVR5cGUpKTsKICAgICB9
CiAKLSAgICBSZWZQdHI8TWVkaWFEZXZpY2VzUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBkZXZpY2VzXSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZjxNZWRpYURldmljZXNSZXF1ZXN0Pigq
dGhpcyksIGRldmljZXMgPSBXVEZNb3ZlKGRldmljZXMpXSB7CiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fcHJvbWlzZS5yZXNvbHZlKGRldmljZXMpOwogICAgIH0pOwogICAgIG1fcHJvdGVjdG9y
ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAppbmRleCA1OTU1
MjYwLi5iNDg1OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCkBAIC05
NSwxNCArOTUsMTQgQEAgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpNZWRpYUVuZHBvaW50
UGVlckNvbm5lY3Rpb24oUGVlckNvbm5lY3Rpb25CYWNrZW5kQ2wKICAgICBtX21lZGlhRW5kcG9p
bnQtPmdlbmVyYXRlRHRsc0luZm8oKTsKIH0KIAotdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnJ1blRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHRhc2spCit2b2lkIE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhOb25Db3B5YWJsZUZ1bmN0aW9uJiYgdGFzaykK
IHsKICAgICBpZiAobV9kdGxzRmluZ2VycHJpbnQuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gT25s
eSBvbmUgdGFzayBuZWVkcyB0byBiZSBkZWZlcnJlZCBzaW5jZSBpdCB3aWxsIGhvbGQgb2ZmIGFu
eSBvdGhlcnMgdW50aWwgY29tcGxldGVkLgogICAgICAgICBBU1NFUlQoIW1faW5pdGlhbERlZmVy
cmVkVGFzayk7Ci0gICAgICAgIG1faW5pdGlhbERlZmVycmVkVGFzayA9IHRhc2s7CisgICAgICAg
IG1faW5pdGlhbERlZmVycmVkVGFzayA9IFdURk1vdmUodGFzayk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQodGFzayk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RG
TW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzdGFy
dFJ1bm5pbmdUYXNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAppbmRleCBkZDNl
YzFhLi41MjhkOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBlZXJDb25u
ZWN0aW9uQmFja2VuZC5oIgogI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03Nyw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
TmVnb3RpYXRpb25OZWVkZWRTdGF0ZSgpIG92ZXJyaWRlIHsgbm90SW1wbGVtZW50ZWQoKTsgfTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIHJ1blRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKyAg
ICB2b2lkIHJ1blRhc2soTm9uQ29weWFibGVGdW5jdGlvbiYmKTsKICAgICB2b2lkIHN0YXJ0UnVu
bmluZ1Rhc2tzKCk7CiAKICAgICB2b2lkIGNyZWF0ZU9mZmVyVGFzayhSVENPZmZlck9wdGlvbnMm
LCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYpOwpAQCAtOTEsNyAr
OTIsNyBAQCBwcml2YXRlOgogICAgIFBlZXJDb25uZWN0aW9uQmFja2VuZENsaWVudCogbV9jbGll
bnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhRW5kcG9pbnQ+IG1fbWVkaWFFbmRwb2ludDsK
IAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2luaXRpYWxEZWZlcnJlZFRhc2s7CisgICAg
Tm9uQ29weWFibGVGdW5jdGlvbiBtX2luaXRpYWxEZWZlcnJlZFRhc2s7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U0RQUHJvY2Vzc29yPiBtX3NkcFByb2Nlc3NvcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5k
ZXggMDA0ZTRmYi4uOWU1YTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC0xMzUsMTEgKzEzNSwxMCBA
QCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmNvbnN0cmFpbnRzVmFsaWRhdGVkKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdQogICAgIGZvciAoYXV0byYgdmlkZW9UcmFjayA6IHZp
ZGVvVHJhY2tzKQogICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBlbmQodmlkZW9UcmFjay0+
cGVyc2lzdGVudElEKCkpOwogCi0gICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3Rl
ZFRoaXModGhpcyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8VXNlck1lZGlhUmVxdWVzdD4o
KnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICAvLyAyIC0gVGhlIGNvbnN0cmFpbnRzIGFyZSB2
YWxpZCwgYXNrIHRoZSB1c2VyIGZvciBhY2Nlc3MgdG8gbWVkaWEuCiAgICAgICAgIGlmIChVc2Vy
TWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyID0gcHJvdGVjdGVkVGhpcy0+bV9jb250cm9sbGVy
KQotICAgICAgICAgICAgY29udHJvbGxlci0+cmVxdWVzdFVzZXJNZWRpYUFjY2VzcygqcHJvdGVj
dGVkVGhpcy5nZXQoKSk7CisgICAgICAgICAgICBjb250cm9sbGVyLT5yZXF1ZXN0VXNlck1lZGlh
QWNjZXNzKHByb3RlY3RlZFRoaXMuZ2V0KCkpOwogICAgIH0pOwogfQogCkBAIC0xNDgsMTAgKzE0
Nyw5IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6dXNlck1lZGlhQWNjZXNzR3JhbnRlZChjb25z
dCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zCiAgICAgbV9hbGxvd2VkVmlkZW9EZXZpY2VV
SUQgPSB2aWRlb0RldmljZVVJRDsKICAgICBtX2F1ZGlvRGV2aWNlVUlEQWxsb3dlZCA9IGF1ZGlv
RGV2aWNlVUlEOwogCi0gICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRoaXMo
dGhpcyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgYXVkaW9EZXZpY2VV
SUQsIHZpZGVvRGV2aWNlVUlEXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IFJlZjxVc2VyTWVkaWFSZXF1ZXN0PigqdGhpcyksIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0Rl
dmljZVVJRF0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gMyAtIHRoZSB1c2VyIGdyYW50ZWQgYWNj
ZXNzLCBhc2sgcGxhdGZvcm0gdG8gY3JlYXRlIHRoZSBtZWRpYSBzdHJlYW0gZGVzY3JpcHRvcnMu
Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU1l
ZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMuZ2V0KCksIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0Rldmlj
ZVVJRCk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNy
ZWF0ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMucHRyKCksIGF1ZGlvRGV2aWNlVUlELCB2aWRl
b0RldmljZVVJRCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5ZGNlZTE5Li44ODE4MDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC03
OTcsOCArNzk3LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkK
IAogICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwogCi0gICAgICAgIFJlZlB0
cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcyA9IFJlZjxBdWRpb0NvbnRleHQ+KCp0aGlzKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmRlbGV0ZU1hcmtlZE5vZGVzKCk7CiAgICAgICAgIH0pOwogICAg
IH0KQEAgLTEwMDIsOCArMTAwMSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRp
b0RpZENoYW5nZSgpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0
ZUlzUGxheWluZ01lZGlhKCkgb24gdGhlIG1haW4gdGhyZWFkLCBzaW5jZQogICAgIC8vIHdlIGNv
dWxkIGJlIG9uIHRoZSBhdWRpbyBJL08gdGhyZWFkIGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2Vi
Q29yZSBjb3VsZCBibG9jay4KLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1ZGlvQ29udGV4dD4oKnRoaXMpXSB7
CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQwNjA3NTUuLmYwNmMyMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtNTM2NywxMiArNTM2Nyw4IEBAIFNlY3VyaXR5T3JpZ2luKiBEb2N1
bWVudDo6dG9wT3JpZ2luKCkgY29uc3QKIAogdm9pZCBEb2N1bWVudDo6cG9zdFRhc2soVGFzayB0
YXNrKQogewotICAgIFRhc2sqIHRhc2tQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1v
dmUodGFzaykpLnJlbGVhc2UoKTsKLSAgICBXZWFrUHRyPERvY3VtZW50PiBkb2N1bWVudFJlZmVy
ZW5jZShtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSk7Ci0KLSAgICBjYWxsT25NYWluVGhy
ZWFkKFs9XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbZG9jdW1lbnRSZWZlcmVuY2UgPSBtX3dl
YWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSwgdGFzayA9IFdURk1vdmUodGFzayldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxUYXNrPiB0YXNrKHRhc2tQdHIpOwogCiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpOwogICAgICAgICBpZiAoIWRvY3VtZW50KQpAQCAtNTM4
MCw5ICs1Mzc2LDkgQEAgdm9pZCBEb2N1bWVudDo6cG9zdFRhc2soVGFzayB0YXNrKQogCiAgICAg
ICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgICAgICBpZiAoKHBhZ2UgJiYg
cGFnZS0+ZGVmZXJzTG9hZGluZygpICYmIGRvY3VtZW50LT5hY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkKCkpIHx8ICFkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgZG9jdW1lbnQtPm1fcGVuZGluZ1Rhc2tzLmFwcGVuZChXVEZNb3ZlKCp0YXNrLnJlbGVh
c2UoKSkpOworICAgICAgICAgICAgZG9jdW1lbnQtPm1fcGVuZGluZ1Rhc2tzLmFwcGVuZChXVEZN
b3ZlKHRhc2spKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2so
KmRvY3VtZW50KTsKKyAgICAgICAgICAgIHRhc2sucGVyZm9ybVRhc2soKmRvY3VtZW50KTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDI3MTMzOTIu
LjZjYjI1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTI4MCw4ICsy
ODAsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHQoY29uc3QgU3RyaW5nJiBz
b3VyY2VVcmwpCiAgICAgaWYgKG1fY2FjaGVkU2NyaXB0KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gJm1fZWxlbWVudDsKLSAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCBlbGVtZW50XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
ZWxlbWVudCA9IFJlZjxFbGVtZW50PihtX2VsZW1lbnQpXSB7CiAgICAgICAgIGRpc3BhdGNoRXJy
b3JFdmVudCgpOwogICAgIH0pOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCAwZmI5MTI0Li42YjRiYmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiRmlsZVN0cmVhbUNsaWVudC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNjMsMTIgKzY0LDEyIEBAIGlu
bGluZSBBc3luY0ZpbGVTdHJlYW06OkludGVybmFsczo6SW50ZXJuYWxzKEZpbGVTdHJlYW1DbGll
bnQmIGNsaWVudCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQorc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRo
cmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogCi0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPE1lc3NhZ2VRdWV1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+PiBxdWV1ZTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPE5vbmNvcHlhYmxlRnVuY3Rpb24+PiBx
dWV1ZTsKIAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBjcmVhdGVGaWxlVGhyZWFkT25jZTsK
ICAgICBzdGQ6OmNhbGxfb25jZShjcmVhdGVGaWxlVGhyZWFkT25jZSwgW10gewpAQCAtODksNyAr
OTAsNyBAQCBzdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiYmIGZ1bmN0aW9uKQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1ZXVlLmdldCgpLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5j
dGlvbikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxOb25jb3B5
YWJsZUZ1bmN0aW9uPihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06
OkFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50JiBjbGllbnQpCkBAIC0xMDIsMzMgKzEw
MywyOCBAQCBBc3luY0ZpbGVTdHJlYW06On5Bc3luY0ZpbGVTdHJlYW0oKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICAvLyBSZWxlYXNlIHNvIHRoYXQgd2UgY2FuIGNvbnRy
b2wgdGhlIHRpbWluZyBvZiBkZWxldGlvbiBiZWxvdy4KLSAgICBhdXRvJiBpbnRlcm5hbHMgPSAq
bV9pbnRlcm5hbHMucmVsZWFzZSgpOwotCiAgICAgLy8gU2V0IGZsYWcgdG8gcHJldmVudCBjbGll
bnQgY2FsbGJhY2tzIGFuZCBhbHNvIHByZXZlbnQgcXVldWVkIG9wZXJhdGlvbnMgZnJvbSBzdGFy
dGluZy4KLSAgICBpbnRlcm5hbHMuZGVzdHJveWVkID0gdHJ1ZTsKKyAgICBtX2ludGVybmFscy0+
ZGVzdHJveWVkID0gdHJ1ZTsKIAogICAgIC8vIENhbGwgdGhyb3VnaCBmaWxlIHRocmVhZCBhbmQg
YmFjayB0byBtYWluIHRocmVhZCB0byBtYWtlIHN1cmUgZGVsZXRpb24gaGFwcGVucwogICAgIC8v
IGFmdGVyIGFsbCBmaWxlIHRocmVhZCBmdW5jdGlvbnMgYW5kIGFsbCBtYWluIHRocmVhZCBmdW5j
dGlvbnMgY2FsbGVkIGZyb20gdGhlbS4KLSAgICBjYWxsT25GaWxlVGhyZWFkKFsmaW50ZXJuYWxz
XSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoWyZpbnRlcm5hbHNdIHsKLSAgICAgICAgICAg
IGRlbGV0ZSAmaW50ZXJuYWxzOworICAgIGNhbGxPbkZpbGVUaHJlYWQoW2ludGVybmFscyA9IFdU
Rk1vdmUobV9pbnRlcm5hbHMpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtpbnRlcm5hbHMgPSBXVEZNb3ZlKGludGVybmFscyldIHsKICAgICAgICAgfSk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248c3RkOjpm
dW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiBvcGVyYXRpb24p
Cit2b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHN0ZDo6ZnVuY3Rp
b248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJiBvcGVyYXRpb24pCiB7
CiAgICAgYXV0byYgaW50ZXJuYWxzID0gKm1faW50ZXJuYWxzOwotICAgIGNhbGxPbkZpbGVUaHJl
YWQoWyZpbnRlcm5hbHMsIG9wZXJhdGlvbl0geworICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZpbnRl
cm5hbHMsIG9wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKV0gewogICAgICAgICAvLyBEb24n
dCBkbyB0aGUgb3BlcmF0aW9uIGlmIHN0b3Agd2FzIGFscmVhZHkgY2FsbGVkIG9uIHRoZSBtYWlu
IHRocmVhZC4gTm90ZSB0aGF0IHRoZXJlIGlzCiAgICAgICAgIC8vIGEgcmFjZSBoZXJlLCBidXQg
c2luY2Ugc2tpcHBpbmcgdGhlIG9wZXJhdGlvbiBpcyBhbiBvcHRpbWl6YXRpb24gaXQncyBPSyB0
aGF0IHdlIGNhbid0CiAgICAgICAgIC8vIGd1YXJhbnRlZSBleGFjdGx5IHdoaWNoIG9wZXJhdGlv
bnMgYXJlIHNraXBwZWQuIE5vdGUgdGhhdCB0aGlzIGlzIGFsc28gdGhlIG9ubHkgcmVhc29uCiAg
ICAgICAgIC8vIHdlIHVzZSBhbiBhdG9taWNfYm9vbCByYXRoZXIgdGhhbiBqdXN0IGEgYm9vbCBm
b3IgZGVzdHJveWVkLgogICAgICAgICBpZiAoaW50ZXJuYWxzLmRlc3Ryb3llZCkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkV29yayA9IG9wZXJhdGlvbihpbnRl
cm5hbHMuc3RyZWFtKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbJmludGVybmFscywgbWFp
blRocmVhZFdvcmtdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbJmludGVybmFscywgbWFp
blRocmVhZFdvcmsgPSBvcGVyYXRpb24oaW50ZXJuYWxzLnN0cmVhbSldIHsKICAgICAgICAgICAg
IGlmIChpbnRlcm5hbHMuZGVzdHJveWVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIG1haW5UaHJlYWRXb3JrKGludGVybmFscy5jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggNDI4ZjczMC4uZmY0ODFhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBwZXJmb3JtKHN0ZDo6
ZnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVh
bSYpPik7CisgICAgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lk
KEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmKTsKIAogICAgIHN0cnVjdCBJbnRl
cm5hbHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFscz4gbV9pbnRlcm5hbHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRl
eCAxMDAwMTM1Li5jNTk4YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1Ro
cmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKQEAgLTExNywxMCArMTE3LDggQEAgdm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHAKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1
cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIEJsb2JSZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNv
bGF0ZWQgY29weSBvZiBkYXRhLgotICAgICAgICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0
ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQodXJsLCBwYXRoLCBjb250ZW50VHlwZSk7Ci0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHRdIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRleHQpOwot
ICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTChibG9iUmVnaXN0
cnlDb250ZXh0LT51cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGJsb2JSZWdpc3Ry
eUNvbnRleHQtPnBhdGgpLCBibG9iUmVnaXN0cnlDb250ZXh0LT5jb250ZW50VHlwZSk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdp
c3RyeUNvbnRleHQ+KHVybCwgcGF0aCwgY29udGVudFR5cGUpXSB7CisgICAgICAgICAgICBibG9i
UmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKGNvbnRleHQtPnVybCwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOjpjcmVhdGUoY29udGV4dC0+cGF0aCksIGNvbnRleHQtPmNvbnRlbnRUeXBlKTsK
ICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtMTMxLDEwICsxMjksOCBAQCB2b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiBibAogICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBX
VEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8g
QmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29sYXRlZCBjb3B5IG9mIGRhdGEuCi0g
ICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQgPSBuZXcgQmxvYlJlZ2lzdHJ5Q29u
dGV4dCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtjb250ZXh0XSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qmxv
YlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAg
ICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51
cmwsIFdURk1vdmUoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+YmxvYlBhcnRzKSwgYmxvYlJlZ2lzdHJ5
Q29udGV4dC0+Y29udGVudFR5cGUpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0Pih1cmwsIFdURk1vdmUoYmxv
YlBhcnRzKSwgY29udGVudFR5cGUpXSB7CisgICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkwoY29udGV4dC0+dXJsLCBXVEZNb3ZlKGNvbnRleHQtPmJsb2JQYXJ0cyksIGNv
bnRleHQtPmNvbnRlbnRUeXBlKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtMTQ5LDEwICsx
NDUsOCBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmCiAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJsb2JS
ZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRhLgotICAgICAg
ICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQo
dXJsLCBzcmNVUkwpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0XSB7Ci0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lzdHJ5
Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxv
YlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51cmwsIGJsb2JSZWdpc3RyeUNvbnRleHQtPnNyY1VS
TCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJsb2JSZWdpc3RyeUNvbnRleHQ+KHVybCwgc3JjVVJMKV0geworICAgICAgICAgICAgYmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQtPnVybCwgY29udGV4dC0+c3JjVVJMKTsK
ICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtMTc4LDEwICsxNzIsOCBAQCB2b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJM
LCBjb25zdCBVUgogICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShuZXdVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJs
b2JSZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRhLgotICAg
ICAgICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRl
eHQobmV3VVJMLCBzcmNVUkwpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0LCBz
dGFydCwgZW5kXSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29u
dGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIGJsb2JSZWdp
c3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwg
YmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMLCBzdGFydCwgZW5kKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4
dD4obmV3VVJMLCBzcmNVUkwpLCBzdGFydCwgZW5kXSB7CisgICAgICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb250ZXh0LT51cmwsIGNvbnRleHQtPnNyY1VS
TCwgc3RhcnQsIGVuZCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTE5MywxMSArMTg1LDkg
QEAgdW5zaWduZWQgbG9uZyBsb25nIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKGNv
bnN0IFVSTCYgdXJsKQogICAgICAgICByZXN1bHRTaXplID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNp
emUodXJsKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJm
b3JtcyBhbiBpc29sYXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRl
eHQqIGNvbnRleHQgPSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwpOwogICAgICAgICBCaW5h
cnlTZW1hcGhvcmUgc2VtYXBob3JlOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0
LCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6ZV0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0gICAg
ICAgICAgICByZXN1bHRTaXplID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUoYmxvYlJlZ2lzdHJ5
Q29udGV4dC0+dXJsKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJsKSwgJnNlbWFwaG9yZSwgJnJlc3Vs
dFNpemVdIHsKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBibG9iUmVnaXN0cnkoKS5ibG9iU2l6
ZShjb250ZXh0LT51cmwpOwogICAgICAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOwogICAgICAg
ICB9KTsKICAgICAgICAgc2VtYXBob3JlLndhaXQoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjptYXgoKSk7CkBAIC0yMTQsMTAgKzIwNCw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJsb2JS
ZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRhLgotICAgICAg
ICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQo
dXJsKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0gewotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQo
Y29udGV4dCk7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChi
bG9iUmVnaXN0cnlDb250ZXh0LT51cmwpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0Pih1cmwpXSB7CisgICAg
ICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LT51cmwpOwog
ICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCA2ZGEyNDRlLi5lMWVkYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTIwOTAsMTAgKzIwOTAsOSBAQCB2b2lkIElj
b25EYXRhYmFzZTo6ZGlzcGF0Y2hEaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTE9uTWFpblRocmVh
ZChjb25zdCBTdHJpbmcmCiAgICAgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKTsKICAgICArK21f
bWFpblRocmVhZENhbGxiYWNrQ291bnQ7CiAKLSAgICBTdHJpbmcgcGFnZVVSTENvcHkgPSBwYWdl
VVJMLmlzb2xhdGVkQ29weSgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBhZ2VVUkxD
b3B5XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGFnZVVSTCA9IHBhZ2VVUkwuaXNv
bGF0ZWRDb3B5KCldIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGll
bnQtPmRpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKHBhZ2VVUkxDb3B5KTsKKyAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChwYWdlVVJMKTsKICAgICAgICAg
Y2hlY2tDbG9zZWRBZnRlck1haW5UaHJlYWRDYWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtMjEw
MywxMCArMjEwMiw5IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpkaXNwYXRjaERpZEltcG9ydEljb25E
YXRhRm9yUGFnZVVSTE9uTWFpblRocmVhZChjb25zdCBTdHJpbmcmCiAgICAgQVNTRVJUX0lDT05f
U1lOQ19USFJFQUQoKTsKICAgICArK21fbWFpblRocmVhZENhbGxiYWNrQ291bnQ7CiAKLSAgICBT
dHJpbmcgcGFnZVVSTENvcHkgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpOwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHBhZ2VVUkxDb3B5XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgcGFnZVVSTCA9IHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZEltcG9ydEljb25EYXRhRm9yUGFnZVVSTChw
YWdlVVJMQ29weSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkSW1wb3J0SWNvbkRhdGFGb3JQ
YWdlVVJMKHBhZ2VVUkwpOwogICAgICAgICBjaGVja0Nsb3NlZEFmdGVyTWFpblRocmVhZENhbGxi
YWNrKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291
cmNlVXNhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhy
ZWFkLmNwcAppbmRleCAyMzUwMGJlLi5lZjJhNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKQEAgLTc3LDkgKzc3LDkgQEAgdm9pZCBSZXNvdXJjZVVz
YWdlVGhyZWFkOjp3YWl0VW50aWxPYnNlcnZlcnMoKQogICAgICAgICBtX2NvbmRpdGlvbi53YWl0
KG1fbG9jayk7CiB9CiAKLXZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6bm90aWZ5T2JzZXJ2ZXJz
KFJlc291cmNlVXNhZ2VEYXRhJiBkYXRhKQordm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3Rp
ZnlPYnNlcnZlcnMoUmVzb3VyY2VVc2FnZURhdGEmJiBkYXRhKQogewotICAgIGNhbGxPbk1haW5U
aHJlYWQoW2RhdGFdKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbZGF0YSA9IFdU
Rk1vdmUoZGF0YSldKCkgbXV0YWJsZSB7CiAgICAgICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFJlc291cmNlVXNhZ2VEYXRhJik+PiBmdW5jdGlvbnM7CiAgICAgICAgIAogICAg
ICAgICB7CkBAIC0xMTcsNyArMTE3LDcgQEAgTk9fUkVUVVJOIHZvaWQgUmVzb3VyY2VVc2FnZVRo
cmVhZDo6dGhyZWFkQm9keSgpCiAKICAgICAgICAgUmVzb3VyY2VVc2FnZURhdGEgZGF0YTsKICAg
ICAgICAgcGxhdGZvcm1UaHJlYWRCb2R5KG1fdm0sIGRhdGEpOwotICAgICAgICBub3RpZnlPYnNl
cnZlcnMoZGF0YSk7CisgICAgICAgIG5vdGlmeU9ic2VydmVycyhXVEZNb3ZlKGRhdGEpKTsKIAog
ICAgICAgICBhdXRvIGR1cmF0aW9uID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkgLSBz
dGFydCk7CiAgICAgICAgIGF1dG8gZGlmZmVyZW5jZSA9IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHMoNTAwKSAtIGR1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNv
dXJjZVVzYWdlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJl
YWQuaAppbmRleCBmZDI1ODFhLi4yNWU0YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291
cmNlVXNhZ2VUaHJlYWQuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBS
ZXNvdXJjZVVzYWdlVGhyZWFkJiBzaW5nbGV0b24oKTsKIAogICAgIHZvaWQgd2FpdFVudGlsT2Jz
ZXJ2ZXJzKCk7Ci0gICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoUmVzb3VyY2VVc2FnZURhdGEmKTsK
KyAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhSZXNvdXJjZVVzYWdlRGF0YSYmKTsKIAogICAgIHZv
aWQgY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKICAgICBzdGF0aWMgdm9pZCB0aHJlYWRDYWxsYmFj
ayh2b2lkKiBzY3JvbGxpbmdUaHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKaW5kZXggNDY2OWExOS4uM2FkODYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCkBA
IC01OCw5ICs1OCw5IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQogICAgIHNjcm9sbGluZ1RocmVhZC53YWtlVXBSdW5Mb29w
KCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJh
cnJpZXIoTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoKFtm
dW5jdGlvbl0oKSBtdXRhYmxlIHsKKyAgICBkaXNwYXRjaChbZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1
bmN0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGZ1
bmN0aW9uKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5oCmluZGV4IGE3MDljY2QuLmJjMjdiY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBX
aWxsIGRpc3BhdGNoIHRoZSBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQgb25jZSBh
bGwgcGVuZGluZyBmdW5jdGlvbnMKICAgICAvLyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZCBoYXZl
IGZpbmlzaGVkIGV4ZWN1dGluZy4gVXNlZCBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaEJh
cnJpZXIoTm9uY29weWFibGVGdW5jdGlvbiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8U2Nyb2xsaW5nVGhyZWFkPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcAppbmRleCAwODJiZDczLi42
NjI2ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZUlPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9z
L1Njcm9sbGluZ1RyZWVJT1MuY3BwCkBAIC02Nyw5ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZUlPUzo6aW52YWxpZGF0ZSgpCiAgICAgLy8gU2luY2UgdGhpcyBjYW4gcG90ZW50aWFsbHkgYmUg
dGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IsCiAgICAgLy8g
d2UgbmVlZCB0byByZWxlYXNlIGl0IG9uIHRoZSBtYWluIHRocmVhZCBzaW5jZSBpdCBoYXMgbWVt
YmVyIHZhcmlhYmxlcyAoc3VjaCBhcyB0aW1lcnMpCiAgICAgLy8gdGhhdCBleHBlY3QgdG8gYmUg
ZGVzdHJveWVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IucmVsZWFzZSgp
LmxlYWtSZWYoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvcl0g
ewotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZGVyZWYoKTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvciA9IFdURk1vdmUobV9zY3JvbGxpbmdDb29yZGlu
YXRvcildIHsKICAgICB9KTsKIH0KIApAQCAtODYsMTAgKzg0LDcgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlSU9TOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
LCBjb25zdAogICAgIGlmIChub2RlSUQgPT0gcm9vdE5vZGUoKS0+c2Nyb2xsaW5nTm9kZUlEKCkp
CiAgICAgICAgIHNldE1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKIAot
ICAgIFJlZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yPiBzY3JvbGxpbmdDb29yZGluYXRv
ciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7Ci0gICAgYm9vbCBsb2NhbElzSGFuZGxpbmdQcm9n
cmFtbWF0aWNTY3JvbGwgPSBpc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsKCk7Ci0KLSAgICBj
YWxsT25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBzY3JvbGxQb3Np
dGlvbiwgbG9jYWxJc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsLCBzY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0
b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2Nh
bElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwgPSBpc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Ny
b2xsKCksIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb25dIHsKICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xs
KG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9s
bCwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAgICAgfSk7CiB9CkBAIC0xMjMsOCAr
MTE4LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlSU9TOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0Rp
ZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29v
cmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8QXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQs
IGhvcml6b250YWwsIHZlcnRpY2FsXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5n
Q29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIGhvcml6b250YWws
IHZlcnRpY2FsXSB7CiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRBY3RpdmVTY3Jv
bGxTbmFwSW5kaWNlcyhub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsKTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KaW5kZXggYmQ4MTg1
NC4uOGIzZjFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
bW0KQEAgLTc1LDExICs3NSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYzo6cmVsZWFzZVJlZmVyZW5jZXNUb1Njcm9sbGVySW1wc09uVGhlTWFpCiAgICAgaWYgKG1f
dmVydGljYWxTY3JvbGxlckltcCB8fCBtX2hvcml6b250YWxTY3JvbGxlckltcCkgewogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgaW4gcGxhY2UgZm9yIHRoZSB0aW1lIGJl
aW5nIHNpbmNlIE5TU2Nyb2xsZXJJbXBzIGNhbm5vdCBiZSBkZWFsbG9jYXRlZAogICAgICAgICAv
LyBvbiBhIG5vbi1tYWluIHRocmVhZC4gcmRhcjovL3Byb2JsZW0vMjQ1MzUwNTUKLSAgICAgICAg
TlNTY3JvbGxlckltcCAqcmV0YWluZWRWZXJ0aWNhbFNjcm9sbGVySW1wID0gbV92ZXJ0aWNhbFNj
cm9sbGVySW1wLmxlYWtSZWYoKTsKLSAgICAgICAgTlNTY3JvbGxlckltcCAqcmV0YWluZWRIb3Jp
em9udGFsU2Nyb2xsZXJJbXAgPSBtX2hvcml6b250YWxTY3JvbGxlckltcC5sZWFrUmVmKCk7Ci0g
ICAgICAgIFdURjo6Y2FsbE9uTWFpblRocmVhZChbcmV0YWluZWRWZXJ0aWNhbFNjcm9sbGVySW1w
LCByZXRhaW5lZEhvcml6b250YWxTY3JvbGxlckltcF0gewotICAgICAgICAgICAgW3JldGFpbmVk
VmVydGljYWxTY3JvbGxlckltcCByZWxlYXNlXTsKLSAgICAgICAgICAgIFtyZXRhaW5lZEhvcml6
b250YWxTY3JvbGxlckltcCByZWxlYXNlXTsKKyAgICAgICAgV1RGOjpjYWxsT25NYWluVGhyZWFk
KFt2ZXJ0aWNhbFNjcm9sbGVySW1wID0gV1RGTW92ZShtX3ZlcnRpY2FsU2Nyb2xsZXJJbXApLCBo
b3Jpem9udGFsU2Nyb2xsZXJJbXAgPSBXVEZNb3ZlKG1faG9yaXpvbnRhbFNjcm9sbGVySW1wKV0g
ewogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCmluZGV4IDEyY2Jj
YmYuLjE2NTk3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCkBAIC0zOTYsMTAgKzM5Niw3IEBA
IC0gKHZvaWQpZGVhbGxvYwogICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IGRlYWxsb2NdIik7CiAKICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIGF1dG8g
dm9sdW1lVmlldyA9IFdURk1vdmUoX3ZvbHVtZVZpZXcpOwotICAgICAgICBhdXRvIHJvdXRpbmdD
b250cm9sbGVyID0gV1RGTW92ZShfYWlyUGxheVByZXNlbmNlUm91dGluZ0NvbnRyb2xsZXIpOwot
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3ZvbHVtZVZpZXcsIHJvdXRpbmdDb250cm9sbGVy
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdm9sdW1lVmlldyA9IFdU
Rk1vdmUoX3ZvbHVtZVZpZXcpLCByb3V0aW5nQ29udHJvbGxlciA9IFdURk1vdmUoX2FpclBsYXlQ
cmVzZW5jZVJvdXRpbmdDb250cm9sbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBMT0co
TWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSAtIGRpcGF0Y2hlZCB0byBN
YWluVGhyZWFkIik7CiAKICAgICAgICAgICAgIHZvbHVtZVZpZXcuY2xlYXIoKTsKQEAgLTQzNSw4
ICs0MzIsNyBAQCAtICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKIAogICAgIExP
RyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXNdIik7CiAKLSAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBzdHJvbmdT
ZWxmID0gc2VsZjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSAoKSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25I
ZWxwZXI+KHNlbGYpXSAoKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9u
SGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdIC0gZGlwYXRjaGVkIHRvIE1haW5U
aHJlYWQiKTsKIAogICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRp
bmdDb250cm9sbGVyKQpAQCAtNDU0LDggKzQ1MCw3IEBAIC0gKHZvaWQpc3RvcE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzCiAKICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBz
dG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdIik7CiAKLSAgICBSZXRhaW5QdHI8V2ViTWVkaWFT
ZXNzaW9uSGVscGVyPiBzdHJvbmdTZWxmID0gc2VsZjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtz
dHJvbmdTZWxmXSAoKSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFJldGFp
blB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+KHNlbGYpXSAoKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc10g
LSBkaXBhdGNoZWQgdG8gTWFpblRocmVhZCIpOwogCiAgICAgICAgIGlmICghc3Ryb25nU2VsZi0+
X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDNkOTBkZWQuLjRkMTgwNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAg
LTMyMyw4ICszMjMsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJl
KENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogICAgIG1lbXNldChtX2xp
c3QuZ2V0KCksIDAsIGJ1ZmZlckxpc3RTaXplKTsKICAgICBtX2xpc3QtPm1OdW1iZXJCdWZmZXJz
ID0gbnVtYmVyT2ZDaGFubmVsczsKIAotICAgIFJlZlB0cjxBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQz4gc3Ryb25nVGhpcyA9IHRoaXM7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nVGhp
cywgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3N0cm9uZ1RoaXMgPSBSZWY8QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+KCp0aGlzKSwgbnVt
YmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0gewogICAgICAgICBzdHJvbmdUaGlzLT5tX2NsaWVu
dC0+c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcAppbmRleCA5ODYyMTE3Li42OTI4NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtODA2LDggKzgwNiw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWRO
b3RpZmljYXRpb24oTm90aWZpY2F0aW9uCiAgICAgaWYgKGRlbGF5RGlzcGF0Y2ggJiYgIW1fbWFp
blRocmVhZENhbGxQZW5kaW5nKSB7CiAgICAgICAgIG1fbWFpblRocmVhZENhbGxQZW5kaW5nID0g
dHJ1ZTsKIAotICAgICAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10geworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTg0NCw4ICs4NDMsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzcGF0Y2hOb3RpZmljYXRpb24oKQogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIW1fcXVldWVkTm90aWZpY2F0aW9ucy5pc0Vt
cHR5KCkgJiYgIW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7Ci0gICAgICAgICAgICBhdXRvIHdl
YWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXNdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gY3Jl
YXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGEyOGQ5MjkuLjI2NjJlM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC04NSw3ICs4NSw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNT
dHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOCiAgICAgICAgIGlm
IChbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XSBpbnRWYWx1ZV0g
PT0gMSkgewogICAgICAgICAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldlYktpdCIgY29kZTonSERDUCcgdXNlckluZm86
bmlsXTsKICAgICAgICAgICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Q0xpc3RlbmVyPiBzdHJvbmdTZWxmID0geyBzZWxmIH07Ci0gICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtzdHJvbmdTZWxmLCBlcnJvcl0geworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIGVycm9yID0gV1RGTW92ZShlcnJv
cildIHsKICAgICAgICAgICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X3BhcmVudCkKICAgICAgICAg
ICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+cGxheWVyRGlkUmVjZWl2ZUVycm9yKGVy
cm9yLmdldCgpKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0KaW5kZXggMmM3MDc3Ny4uYTVh
MjUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTWFjLm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAodm9pZClvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOihpZClrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0Rp
Y3Rpb24KIAogICAgIFJldGFpblB0cjxXZWJBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVySGVs
cGVyPiBzdHJvbmdTZWxmID0gc2VsZjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cm9uZ0tl
eVBhdGggPSBrZXlQYXRoOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9u
Z0tleVBhdGhdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShz
dHJvbmdTZWxmKSwgc3Ryb25nS2V5UGF0aCA9IFdURk1vdmUoc3Ryb25nS2V5UGF0aCldIHsKICAg
ICAgICAgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYyogY2FsbGJhY2sgPSBzdHJvbmdTZWxm
LT5tX2NhbGxiYWNrOwogICAgICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggN2NiMDI2Ni4uM2NhNDk1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC03MDEsOCArNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0xheWVyKCkKICAgICBpZiAoIW1fYXZQbGF5
ZXIgfHwgbV9oYXZlQmVlbkFza2VkVG9DcmVhdGVMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCB3ZWFrVGhpc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlz
ID0gY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTM0MzEsNyArMzQzMCw3IEBAIC0gKHZvaWQpbGVnaWJsZU91dHB1dDoo
aWQpb3V0cHV0IGRpZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBu
CiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyPiBzdHJvbmdTZWxmID0gc2Vs
ZjsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gc3Ryb25nU3RyaW5ncyA9IHN0cmluZ3M7CiAgICAg
UmV0YWluUHRyPE5TQXJyYXk+IHN0cm9uZ1NhbXBsZXMgPSBuYXRpdmVTYW1wbGVzOwotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1N0cmluZ3MsIHN0cm9uZ1NhbXBsZXMs
IGl0ZW1UaW1lXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUo
c3Ryb25nU2VsZiksIHN0cm9uZ1N0cmluZ3MgPSBXVEZNb3ZlKHN0cm9uZ1N0cmluZ3MpLCBzdHJv
bmdTYW1wbGVzID0gV1RGTW92ZShzdHJvbmdTYW1wbGVzKSwgaXRlbVRpbWVdIHsKICAgICAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxm
LT5tX2NhbGxiYWNrOwogICAgICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzQ0Nyw4ICszNDQ2LDcgQEAgLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6
KGlkKW91dHB1dAogICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTW92aWVPYnNlcnZlcj4gc3Ryb25nU2VsZiA9IHNlbGY7
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXI+KHNlbGYp
XSB7CiAgICAgICAgIGlmIChNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBjYWxs
YmFjayA9IHN0cm9uZ1NlbGYtPm1fY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFjay0+Zmx1
c2hDdWVzKCk7CiAgICAgfSk7CkBAIC0zNDc3LDcgKzM0NzUsNyBAQCAtIChCT09MKXJlc291cmNl
TG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0
Rm9yTG9hZAogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZT4gc3Ryb25n
U2VsZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
PiBzdHJvbmdSZXF1ZXN0ID0gbG9hZGluZ1JlcXVlc3Q7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZiwgc3Ryb25nUmVxdWVzdF0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9u
Z1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdSZXF1ZXN0ID0gV1RGTW92ZShzdHJv
bmdSZXF1ZXN0KV0gewogICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBjYWxsYmFjayA9IHN0cm9uZ1NlbGYtPm1fY2FsbGJhY2s7CiAgICAgICAgIGlmICghY2FsbGJh
Y2spIHsKICAgICAgICAgICAgIFtzdHJvbmdSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6
bmlsXTsKQEAgLTM1MDIsNyArMzUwMCw3IEBAIC0gKEJPT0wpcmVzb3VyY2VMb2FkZXI6KEFWQXNz
ZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIHNob3VsZFdhaXRGb3JSZXNwCiAKICAg
ICBSZXRhaW5QdHI8V2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlPiBzdHJvbmdTZWxmID0gc2VsZjsK
ICAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gc3Ryb25nQ2hhbGxl
bmdlID0gY2hhbGxlbmdlOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9u
Z0NoYWxsZW5nZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3Zl
KHN0cm9uZ1NlbGYpLCBzdHJvbmdDaGFsbGVuZ2UgPSBXVEZNb3ZlKHN0cm9uZ0NoYWxsZW5nZSld
IHsKICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sg
PSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrOwogICAgICAgICBpZiAoIWNhbGxiYWNrKSB7CiAgICAg
ICAgICAgICBbW3N0cm9uZ0NoYWxsZW5nZSBzZW5kZXJdIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOnN0cm9uZ0NoYWxsZW5nZS5nZXQoKV07CkBAIC0zNTI0LDcgKzM1MjIsNyBAQCAtICh2
b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRl
ciBkaWRDYW5jZWxMb2FkaW5nUgogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZMb2FkZXJEZWxl
Z2F0ZT4gc3Ryb25nU2VsZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0PiBzdHJvbmdSZXF1ZXN0ID0gbG9hZGluZ1JlcXVlc3Q7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nU2VsZiwgc3Ryb25nUmVxdWVzdF0geworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdSZXF1ZXN0ID0g
V1RGTW92ZShzdHJvbmdSZXF1ZXN0KV0gewogICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKiBjYWxsYmFjayA9IHN0cm9uZ1NlbGYtPm1fY2FsbGJhY2s7CiAgICAgICAg
IGlmIChjYWxsYmFjaykKICAgICAgICAgICAgIGNhbGxiYWNrLT5kaWRDYW5jZWxMb2FkaW5nUmVx
dWVzdChzdHJvbmdSZXF1ZXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRl
eCAxNDNjMDQ2Li5lZmIzYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMjks
OCArMTI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHZvaWQgQ01UaW1lYmFzZUVm
ZmVjdGl2ZVJhdGVDaGFuZ2VkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0
IHZvaWQgKmxpc3RlbmVyLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9pZCAqLCBDRlR5cGVSZWYpCiB7
CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIgPSAoTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKilsaXN0ZW5lcjsKLSAgICBhdXRvIHdl
YWtUaGlzID0gcGxheWVyLT5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXNdeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gcGxheWVyLT5jcmVh
dGVXZWFrUHRyKCldewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB3ZWFrVGhpcy5nZXQoKS0+ZWZmZWN0aXZlUmF0ZUNoYW5nZWQoKTsKQEAgLTMx
Miw4ICszMTEsNyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6cGxheSgpCiB7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0
ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc117CisgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCldewogICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3ZWFrVGhpcy5nZXQoKS0+cGxh
eUludGVybmFsKCk7CkBAIC0zMzIsOCArMzMwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnBsYXlJbnRlcm5hbCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYXVzZSgpCiB7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IGNy
ZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc117CisgICAgY2Fs
bE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCldewogICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3ZWFrVGhpcy5nZXQoKS0+
cGF1c2VJbnRlcm5hbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCA3ZTQyNDAzLi4w
NTdkMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2
YXRlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CkBAIC0xNDIsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRyYWNrcygpOwog
ICAgIHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZl
cnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJy
ZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJik7CiAKICAgICBlbnVtIERpc3BsYXlNb2RlIHsK
ICAgICAgICAgTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBlOGNhYmVkLi5h
YTVlNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC02MjQsMTEgKzYyNCwxMCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TmV0d29ya1N0
YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrUwogICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
Y2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRh
c2soTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlv
bik7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFt3ZWFrVGhpcywgZnVuY3Rpb25dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFr
VGhpcyA9IGNyZWF0ZVdlYWtQdHIoKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewog
ICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4
IGM1NmYyMWYuLjU1YTc0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0xODIsNyArMTgyLDcgQEAgLSAodm9pZClz
dHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRp
ZFBhcnNlU3RyZWFtRGEKICAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOwogCiAgICAgUmV0YWluUHRyPEFWQXNzZXQqPiBzdHJvbmdB
c3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ0Fz
c2V0XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25n
U2VsZiksIHN0cm9uZ0Fzc2V0ID0gV1RGTW92ZShzdHJvbmdBc3NldCldIHsKICAgICAgICAgaWYg
KHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5k
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHN0cm9uZ0Fzc2V0LmdldCgpKTsKICAgICB9KTsKQEAg
LTE5OCw3ICsxOTgsNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYQogICAgIFJldGFpblB0cjxX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gc3Ryb25nU2VsZiA9IHNlbGY7CiAKICAgICBS
ZXRhaW5QdHI8QVZBc3NldCo+IHN0cm9uZ0Fzc2V0ID0gYXNzZXQ7Ci0gICAgY2FsbE9uTWFpblRo
cmVhZChbc3Ryb25nU2VsZiwgc3Ryb25nQXNzZXRdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtz
dHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25nQXNzZXQgPSBXVEZNb3ZlKHN0
cm9uZ0Fzc2V0KV0gewogICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X3BhcmVudCkKICAgICAgICAg
ICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoc3Ryb25n
QXNzZXQuZ2V0KCkpOwogICAgIH0pOwpAQCAtMjEzLDcgKzIxMyw3IEBAIC0gKHZvaWQpc3RyZWFt
RGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRGYWls
VG9QYXJzZVN0CiAgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBz
dHJvbmdTZWxmID0gc2VsZjsKIAogICAgIFJldGFpblB0cjxOU0Vycm9yPiBzdHJvbmdFcnJvciA9
IGVycm9yOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ0Vycm9yXSB7
CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiks
IHN0cm9uZ0Vycm9yID0gV1RGTW92ZShzdHJvbmdFcnJvcildIHsKICAgICAgICAgaWYgKHN0cm9u
Z1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5kaWRGYWls
VG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3Ioc3Ryb25nRXJyb3IuZ2V0KCkpOwogICAgIH0pOwpA
QCAtMjI5LDcgKzIyOSw3IEBAIC0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRh
UGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlTWVkaWFECiAKICAgICBSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IHN0cm9uZ1NhbXBsZSA9IHNhbXBsZTsKICAgICBTdHJpbmcg
bWVkaWFUeXBlID0gbnNNZWRpYVR5cGU7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2Vs
Ziwgc3Ryb25nU2FtcGxlLCB0cmFja0lELCBtZWRpYVR5cGUsIGZsYWdzXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHN0cm9uZ1NhbXBs
ZSA9IFdURk1vdmUoc3Ryb25nU2FtcGxlKSwgdHJhY2tJRCwgbWVkaWFUeXBlLCBmbGFnc10gewog
ICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X3BhcmVudCkKICAgICAgICAgICAgIHN0cm9uZ1NlbGYt
Pl9wYXJlbnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHRyYWNrSUQsIHN0cm9uZ1Nh
bXBsZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7CiAgICAgfSk7CkBAIC0yNDQsNyArMjQ0LDcg
QEAgLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1E
YXRhUGFyc2VyIGRpZFJlYWNoRW5kT2ZUcmEKICAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRh
UGFyc2VyTGlzdGVuZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOwogCiAgICAgU3RyaW5nIG1lZGlhVHlw
ZSA9IG5zTWVkaWFUeXBlOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHRyYWNr
SUQsIG1lZGlhVHlwZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZN
b3ZlKHN0cm9uZ1NlbGYpLCB0cmFja0lELCBtZWRpYVR5cGVdIHsKICAgICAgICAgaWYgKHN0cm9u
Z1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5kaWRSZWFj
aEVuZE9mVHJhY2tXaXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUpOwogICAgIH0pOwpAQCAt
Mjc2LDcgKzI3Niw3IEBAIC0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFy
c2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVuCiAKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBzdHJvbmdEYXRhID0gaW5pdERhdGE7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
c2VtYXBob3JlX3Q+IGhhc1Nlc3Npb25TZW1hcGhvcmUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNo
X3NlbWFwaG9yZV9jcmVhdGUoMCkpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYs
IHN0cm9uZ0RhdGEsIHRyYWNrSUQsICBoYXNTZXNzaW9uU2VtYXBob3JlXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHN0cm9uZ0RhdGEg
PSBXVEZNb3ZlKHN0cm9uZ0RhdGEpLCB0cmFja0lELCBoYXNTZXNzaW9uU2VtYXBob3JlID0gV1RG
TW92ZShoYXNTZXNzaW9uU2VtYXBob3JlKV0gewogICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X3Bh
cmVudCkKICAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoc3Ryb25nRGF0YS5nZXQoKSwg
dHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSk7CiAgICAgfSk7CkBAIC0zODksMTMgKzM4OSwx
MyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBv
Zk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogCiAgICAgICAgIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG86QCJlcnJvciJdKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3Ig
PSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOwotICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVycm9yXSB7CisgICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxmKSwg
bGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0gewogICAgICAg
ICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPmxheWVyRGlkUmVjZWl2ZUVycm9yKGxheWVy
LmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIGlm
IChba2V5UGF0aCBpc0VxdWFsVG86QCJvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0
ZXJuYWxQcm90ZWN0aW9uIl0pIHsKICAgICAgICAgICAgIGlmIChbW2NoYW5nZSB2YWx1ZUZvcktl
eTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XSBib29sVmFsdWVdKSB7CiAgICAgICAgICAgICAgICAg
UmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29t
LmFwcGxlLldlYktpdCIgY29kZTonSERDUCcgdXNlckluZm86bmlsXTsKLSAgICAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBsYXllciwgZXJyb3JdIHsKKyAgICAgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxm
KSwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0gewogICAg
ICAgICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJv
cihsYXllci5nZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgfQpAQCAtNDA5LDcgKzQwOSw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOCiAgICAg
ICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVyLmdldCgpKSk7CiAgICAgICAg
IEFTU0VSVChba2V5UGF0aCBpc0VxdWFsVG86QCJlcnJvciJdKTsKIAotICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtzdHJvbmdTZWxmLCByZW5kZXJlciwgZXJyb3JdIHsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHJlbmRlcmVyID0g
V1RGTW92ZShyZW5kZXJlciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKICAgICAgICAgICAg
IHN0cm9uZ1NlbGYtPl9wYXJlbnQtPnJlbmRlcmVyRGlkUmVjZWl2ZUVycm9yKHJlbmRlcmVyLmdl
dCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIH0pOwogICAgIH0gZWxzZQpAQCAtNDIyLDcgKzQy
Miw3IEBAIC0gKHZvaWQpbGF5ZXJGYWlsZWRUb0RlY29kZTooTlNOb3RpZmljYXRpb24qKW5vdGUK
ICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBbW25vdGUgdXNlckluZm9dIHZhbHVlRm9y
S2V5OkFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb25F
cnJvcktleV07CiAKICAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVy
PiBzdHJvbmdTZWxmID0gc2VsZjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBs
YXllciwgZXJyb3JdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92
ZShzdHJvbmdTZWxmKSwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVy
cm9yKV0gewogICAgICAgICBpZiAoIXN0cm9uZ1NlbGYtPl9wYXJlbnQgfHwgIXN0cm9uZ1NlbGYt
Pl9sYXllcnMuY29udGFpbnMobGF5ZXIuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQo
KSwgZXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDllY2VjNTIuLjIxZjUzMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI5NSw4ICsyOTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogCiBzdGF0
aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiB7Ci0gICAgYXV0byBp
bWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW2ltYWdlXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxD
R0ltYWdlUmVmPihpbmZvKV0gewogICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcAppbmRleCBiMzAzM2ZlLi5iNDI4ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTU2LDkgKzU2LDcgQEAgc3Rh
dGljIHZvaWQgcGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0
KQogCiBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiB7Ci0g
ICAgYXV0byBpbWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pOwotCi0gICAgY2Fs
bE9uTWFpblRocmVhZChbaW1hZ2VdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IHN0
YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pXSB7CiAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGlt
YWdlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5jcHAKaW5kZXggOGU1NzdmZi4uZWQzMmQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTQ4Niw4ICs0ODYsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5kQ3JlYXRlZE1lZGlhU291cmNl
KElNRkFzeW5jUmVzdWx0KiBhcwogICAgIGhyID0gYXN5bmNSZXN1bHQtPkdldFN0YXR1cygpOwog
ICAgIG1fbG9hZGluZ1Byb2dyZXNzID0gU1VDQ0VFREVEKGhyKTsKIAotICAgIGF1dG8gd2Vha1B0
ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3dlYWtQdHJdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRy
RmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgaWYgKCF3ZWFrUHRyKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB3ZWFrUHRyLT5vbkNyZWF0ZWRNZWRpYVNvdXJjZSgpOwpA
QCAtNTE2LDggKzUxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjplbmRHZXRFdmVudChJTUZBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQpCiAKICAgICBzd2l0Y2gg
KG1lZGlhRXZlbnRUeXBlKSB7CiAgICAgY2FzZSBNRVNlc3Npb25Ub3BvbG9neVNldDogewotICAg
ICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0cl0geworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAg
ICAgICAgIGlmICghd2Vha1B0cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB3ZWFrUHRyLT5vblRvcG9sb2d5U2V0KCk7CkBAIC01MjYsOCArNTI0LDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmVuZEdldEV2ZW50KElNRkFzeW5jUmVzdWx0
KiBhc3luY1Jlc3VsdCkKICAgICB9CiAKICAgICBjYXNlIE1FQnVmZmVyaW5nU3RhcnRlZDogewot
ICAgICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsK
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0cl0geworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1B0cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB3ZWFrUHRyLT5vbkJ1ZmZlcmluZ1N0YXJ0ZWQoKTsKQEAgLTUzNiw4ICs1MzMsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5kR2V0RXZlbnQoSU1GQXN5
bmNSZXN1bHQqIGFzeW5jUmVzdWx0KQogICAgIH0KIAogICAgIGNhc2UgTUVCdWZmZXJpbmdTdG9w
cGVkOiB7Ci0gICAgICAgIGF1dG8gd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyXSB7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIo
KV0gewogICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIHdlYWtQdHItPm9uQnVmZmVyaW5nU3RvcHBlZCgpOwpAQCAtNTQ2LDggKzU0
Miw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRHZXRFdmVu
dChJTUZBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQpCiAgICAgfQogCiAgICAgY2FzZSBNRVNlc3Np
b25FbmRlZDogewotICAgICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0
ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0cl0geworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFr
UHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1B0cikKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5vblNlc3Npb25FbmRlZCgpOwpAQCAtMTY3NSw4ICsx
NjcwLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpwcm9jZXNzSW5wdXROb3QKICAgICAKICAgICAvLyBJbnZhbGlkYXRl
IHRoZSB2aWRlbyBhcmVhCiAgICAgaWYgKG1fbWVkaWFQbGF5ZXIpIHsKLSAgICAgICAgYXV0byB3
ZWFrUHRyID0gbV9tZWRpYVBsYXllci0+bV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbd2Vha1B0ciA9IG1fbWVkaWFQbGF5ZXItPm1fd2Vha1B0ckZhY3RvcnkuY3JlYXRl
V2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAod2Vha1B0cikKICAgICAgICAgICAgICAgICB3
ZWFrUHRyLT5pbnZhbGlkYXRlRnJhbWVWaWV3KCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHAKaW5kZXggZGY2NjA3MC4uNDJkMjQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCkBAIC0y
OTksMTEgKzI5OSwxMCBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tFbmRlZChNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2
YXRlOjpzY2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24p
Cit2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFi
bGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7Ci0gICAgYXV0
byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFr
VGhpcywgZnVuY3Rpb25dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0
ZVdlYWtQdHIoKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCmluZGV4IDZi
YWU3M2MuLmJmMmZhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTExLDcgKzExMiw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAgICAgdm9pZCB1cGRhdGVBY3Rp
dmVWaWRlb1RyYWNrKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJs
ZUZ1bmN0aW9uJiYpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFTdHJlYW1Qcml2YXRlPiBt
X3dlYWtQdHJGYWN0b3J5OwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFD
YXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZNZWRpYUNhcHR1cmVTb3VyY2UuaAppbmRleCBmYmE1MjgzLi4yYzliMGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZN
ZWRpYUNhcHR1cmVTb3VyY2UuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNU
YXNrUXVldWUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC04NSw3ICs4Niw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHNldFZpZGVvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJl
VmlkZW9EYXRhT3V0cHV0Kik7CiAgICAgdm9pZCBzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRl
KEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dCopOwogCi0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVk
VGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRU
YXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cFNl
c3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQppbmRleCBjMDYxMmM1Li43OTE1
YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCkBAIC0yNDAsMTIgKzI0MCwxMCBA
QCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRl
KEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dAogICAgIFthdWRpb091dHB1dCBzZXRTYW1wbGVCdWZm
ZXJEZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpnbG9iYUF1ZGlvQ2FwdHVyZVNl
cmlhbFF1ZXVlKCldOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzY2hlZHVsZURl
ZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQordm9pZCBBVk1lZGlh
Q2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbiYm
IGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7Ci0KLSAgICBhdXRvIHdlYWtUaGlz
ID0gY3JlYXRlV2Vha1B0cigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzLCBmdW5j
dGlvbl0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigp
LCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcAppbmRleCAyNDk5Y2YzLi5kZWE3YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCkBAIC0xNjMsMTAgKzE2Myw5IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudCoKIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Z2V0
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3RDbGllbnQ+IHBycENsaWVudCkKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiByZXF1ZXN0Q2xpZW50ID0gcHJwQ2xpZW50OwotCiAgICAg
VHJhY2tTb3VyY2VJbmZvVmVjdG9yIHNvdXJjZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS5nZXRTb3VyY2VzSW5mbyhyZXF1ZXN0Q2xpZW50LT5yZXF1ZXN0T3JpZ2luKCkp
OwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCwgc291cmNlc10g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQgPSBXVEZNb3ZlKHJl
cXVlc3RDbGllbnQpLCBzb3VyY2VzID0gV1RGTW92ZShzb3VyY2VzKV0gewogICAgICAgICByZXF1
ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3Qoc291cmNlcyk7CiAg
ICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpp
bmRleCA3YjhkNjFjLi4yZTZjMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24q
IGYKICAgICBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzID0gbnVtYmVyT2ZDaGFubmVsczsKIAogICAg
IFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gc3Ryb25nVGhpcyA9IHRoaXM7
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nVGhpcywgbnVtYmVyT2ZDaGFubmVscywgc2Ft
cGxlUmF0ZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXMgPSBXVEZNb3ZlKHN0
cm9uZ1RoaXMpLCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlXSB7CiAgICAgICAgIGlmIChz
dHJvbmdUaGlzLT5tX2NsaWVudCkKICAgICAgICAgICAgIHN0cm9uZ1RoaXMtPm1fY2xpZW50LT5z
ZXRGb3JtYXQobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDkwOTM1NzkuLmFhZTgwODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRp
YVMKICAgICBzb3VyY2VzLmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3Vy
Y2VXaXRoVUlEKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9Tb3VyY2VQZXJzaXN0
ZW50SUQoKSwgbnVsbHB0cikpOwogICAgIHNvdXJjZXMuYXBwZW5kKE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tW
aWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBudWxscHRyKSk7CiAKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCByZXF1ZXN0Q2xpZW50LCBzb3VyY2VzXSB7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgcmVxdWVzdENsaWVudCA9IFdURk1vdmUocmVxdWVzdENsaWVudCksIHNvdXJjZXMg
PSBXVEZNb3ZlKHNvdXJjZXMpXSB7CiAgICAgICAgIHJlcXVlc3RDbGllbnQtPmRpZENvbXBsZXRl
VHJhY2tTb3VyY2VJbmZvUmVxdWVzdChzb3VyY2VzKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmlu
ZGV4IDUzZWIyNWEuLjQ4NGU5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE4NywxMCArMTg3LDggQEAg
dm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0K
ICAgICAvLyBGaW5pc2ggdGhpcyBhc3luYyBjYWxsIHF1aWNrbHkgYW5kIHJldHVybi4KLSAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkVGhpcyA9IFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+KCp0aGlzKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9TdGFydCgpOwogICAgIH0pOwogfQpAQCAtNjY1
LDkgKzY2Myw4IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlGaW5pc2goKQogCiAg
ICAgLy8gU2NoZWR1bGUgdG8gbm90aWZ5IHRoZSBjbGllbnQgZnJvbSBhIHN0YW5kYWxvbmUgZnVu
Y3Rpb24gYmVjYXVzZSB0aGUgY2xpZW50IG1pZ2h0IGRpc3Bvc2UgdGhlIGhhbmRsZSBpbW1lZGlh
dGVseSBmcm9tIHRoZSBjYWxsYmFjayBmdW5jdGlvbgogICAgIC8vIHdoaWxlIHdlIHN0aWxsIGhh
dmUgQmxvYlJlc291cmNlSGFuZGxlIGNhbGxzIGluIHRoZSBzdGFjay4KLSAgICBSZWZQdHI8Qmxv
YlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXNdIHsKLSAgICAgICAgZG9Ob3RpZnlGaW5pc2goKnByb3RlY3RlZFRo
aXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8QmxvYlJlc291
cmNlSGFuZGxlPigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIGRvTm90aWZ5RmluaXNoKHBy
b3RlY3RlZFRoaXMpOwogICAgIH0pOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IGU0MGVkM2YuLjc3OThmOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCkBAIC0xNjgsMjUgKzE2OCwyMSBAQCBzdGF0aWMgdm9pZCBkZWNvZGVFc2NhcGVkKERlY29k
ZVRhc2smIHRhc2spCiAgICAgdGFzay5yZXN1bHQuZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRW
ZWN0b3IoYnVmZmVyKTsKIH0KIAotdm9pZCBkZWNvZGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNj
aGVkdWxlQ29udGV4dCYgc2NoZWR1bGVDb250ZXh0LCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hl
ZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXNEYXRhKCkpOwog
CiAgICAgYXV0byBkZWNvZGVUYXNrID0gY3JlYXRlRGVjb2RlVGFzayh1cmwsIHNjaGVkdWxlQ29u
dGV4dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGF1dG8qIGRlY29kZVRhc2tQ
dHIgPSBkZWNvZGVUYXNrLnJlbGVhc2UoKTsKLSAgICBkZWNvZGVRdWV1ZSgpLmRpc3BhdGNoKFtk
ZWNvZGVUYXNrUHRyXSB7Ci0gICAgICAgIGF1dG8mIGRlY29kZVRhc2sgPSAqZGVjb2RlVGFza1B0
cjsKLQotICAgICAgICBpZiAoZGVjb2RlVGFzay5pc0Jhc2U2NCkKLSAgICAgICAgICAgIGRlY29k
ZUJhc2U2NChkZWNvZGVUYXNrKTsKKyAgICBkZWNvZGVRdWV1ZSgpLmRpc3BhdGNoKFtkZWNvZGVU
YXNrID0gV1RGTW92ZShkZWNvZGVUYXNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGRlY29k
ZVRhc2stPmlzQmFzZTY0KQorICAgICAgICAgICAgZGVjb2RlQmFzZTY0KCpkZWNvZGVUYXNrKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVjb2RlRXNjYXBlZChkZWNvZGVUYXNrKTsKKyAg
ICAgICAgICAgIGRlY29kZUVzY2FwZWQoKmRlY29kZVRhc2spOwogCiAjaWYgSEFWRShSVU5MT09Q
X1RJTUVSKQotICAgICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OmRpc3BhdGNoKHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVUYXNrPihkZWNvZGVUYXNrUHRyKSk7CisgICAgICAgIERlY29kaW5n
UmVzdWx0RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goV1RGTW92ZShkZWNvZGVUYXNrKSk7CiAjZWxzZQot
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNvZGVUYXNrUHRyXSB7Ci0gICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gZGVjb2RlVGFzayhkZWNvZGVUYXNrUHRyKTsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjb2RlVGFzayA9IFdURk1vdmUoZGVjb2RlVGFzayld
IHsKICAgICAgICAgICAgIGlmICghZGVjb2RlVGFzay0+cmVzdWx0LmRhdGEpIHsKICAgICAgICAg
ICAgICAgICBkZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuaAppbmRleCA2NDMzMzc2Li40YzAxMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0
cnVjdCBTY2hlZHVsZUNvbnRleHQgewogI2VuZGlmCiB9OwogCi12b2lkIGRlY29kZShjb25zdCBV
UkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlcik7Cit2
b2lkIGRlY29kZShjb25zdCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21w
bGV0aW9uSGFuZGxlciYmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggYTcz
Njc1YS4uYmNlYjIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTIsMTAgKzkyLDcg
QEAgLSAodm9pZClkZWFsbG9jCiAgICAgZm9yIChhdXRvJiB0YXNrIDogX2RhdGFUYXNrcykKICAg
ICAgICAgdGFzay5nZXQoKS5zZXNzaW9uID0gbmlsOwogCi0gICAgLy8gRklYTUUoQysrMTQpOiBX
aGVuIHdlIGNhbiBtb3ZlIFJlZlB0cnMgZGlyZWN0bHkgaW50byBibG9ja3MsIHJlcGxhY2UgdGhp
cyB3aXRoIGEgUmVmUHRyJiY6Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyKiBsb2FkZXIgPSBfbG9hZGVyLmxlYWtSZWYoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFts
b2FkZXJdIHsKLSAgICAgICAgbG9hZGVyLT5kZXJlZigpOworICAgIGNhbGxPbk1haW5UaHJlYWQo
W2xvYWRlciA9IFdURk1vdmUoX2xvYWRlcildIHsKICAgICB9KTsKICAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CkBAIC00NjYsOCArNDYzLDcgQEAgLSAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCiAt
ICh2b2lkKWNhbmNlbAogewogICAgIHNlbGYuc3RhdGUgPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVD
YW5jZWxpbmc7Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ry
b25nU2VsZiB7IHNlbGYgfTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSB7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7CiAgICAgICAgIFtzdHJvbmdTZWxmIF9jYW5jZWxdOwog
ICAgICAgICBbc3Ryb25nU2VsZiBfZmluaXNoXTsKICAgICB9KTsKQEAgLTQ3NSw4ICs0NzEsNyBA
QCAtICh2b2lkKWNhbmNlbAogCiAtICh2b2lkKXN1c3BlbmQKIHsKLSAgICBSZXRhaW5QdHI8V2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBzdHJvbmdTZWxmIHsgc2VsZiB9OwotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3N0cm9uZ1NlbGZdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdT
ZWxmID0gUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKICAg
ICAgICAgLy8gTlNVUkxTZXNzaW9uRGF0YVRhc2tzIG11c3Qgc3RhcnQgb3ZlciBhZnRlciBzdXNw
ZW5kaW5nLCBzbyB3aGlsZQogICAgICAgICAvLyB3ZSBjb3VsZCBkZWZlciBsb2FkaW5nIGF0IHRo
aXMgcG9pbnQsIGluc3RlYWQgY2FuY2VsIGFuZCByZXN0YXJ0CiAgICAgICAgIC8vIHVwb24gcmVz
dW1lIHNvIGFzIHRvIGFkaGVyZSB0byBOU1VSTFNlc3Npb25EYXRhVGFzayBzZW1hbnRpY3MuCkBA
IC00ODcsOCArNDgyLDcgQEAgLSAodm9pZClzdXNwZW5kCiAKIC0gKHZvaWQpcmVzdW1lCiB7Ci0g
ICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNl
bGYgfTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSB7CisgICAgY2FsbE9uTWFp
blRocmVhZChbc3Ryb25nU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2s+KHNlbGYpXSB7CiAgICAgICAgIGlmIChzdHJvbmdTZWxmLmdldCgpLnN0YXRlICE9IE5TVVJM
U2Vzc2lvblRhc2tTdGF0ZVN1c3BlbmRlZCkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNw
cAppbmRleCBjNmM4Nzk3Li5kY2Q2YjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtNDAyLDEwICs0MDIsOCBA
QCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRl
cikKICAgICAgICAgQ1VSTGNvZGUgZXJyID0gY3VybF9lYXN5X2dldGluZm8obV9jdXJsSGFuZGxl
LCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmaHR0cENvZGUpOwogCiAgICAgICAgIGlmIChodHRw
Q29kZSA+PSAyMDAgJiYgaHR0cENvZGUgPCAzMDApIHsKLSAgICAgICAgICAgIFVSTENhcHR1cmUg
Y2FwdHVyZWRVcmwoZ2V0Q3VybEVmZmVjdGl2ZVVSTChtX2N1cmxIYW5kbGUpKTsKLSAgICAgICAg
ICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KLSAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhcHR1cmVkVXJsLCBwcm90ZWN0ZWRUaGlzXSB7
CisgICAgICAgICAgICBVUkwgdXJsID0gZ2V0Q3VybEVmZmVjdGl2ZVVSTChtX2N1cmxIYW5kbGUp
OworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgdXJsID0gdXJsLmlzb2xhdGVk
Q29weSgpLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEN1cmxEb3dubG9hZD4oKnRoaXMpXSB7CiAgICAg
ICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRVUkwoY2FwdHVyZWRVcmwudXJsKCkpOwogICAgICAg
ICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlh
VHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5
cGUpKSk7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4
dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKSk7CkBAIC00MTQsMTQgKzQxMiwxMCBAQCB2b2lkIEN1
cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nQ2FwdHVy
ZSBjYXB0dXJlZEhlYWRlcihoZWFkZXIpOwotCi0gICAgICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+
IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
Y2FwdHVyZWRIZWFkZXIsIHByb3RlY3RlZFRoaXNdIHsKLSAgICAgICAgICAgIGludCBzcGxpdFBv
cyA9IGNhcHR1cmVkSGVhZGVyLnN0cmluZygpLmZpbmQoIjoiKTsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgaGVhZGVyID0gaGVhZGVyLmlzb2xhdGVkQ29weSgpLCBwcm90ZWN0ZWRU
aGlzID0gUmVmPEN1cmxEb3dubG9hZD4oKnRoaXMpXSB7CisgICAgICAgICAgICBpbnQgc3BsaXRQ
b3MgPSBoZWFkZXIuc3RyaW5nKCkuZmluZCgiOiIpOwogICAgICAgICAgICAgaWYgKHNwbGl0UG9z
ICE9IC0xKQotICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGNh
cHR1cmVkSGVhZGVyLnN0cmluZygpLmxlZnQoc3BsaXRQb3MpLCBjYXB0dXJlZEhlYWRlci5zdHJp
bmcoKS5zdWJzdHJpbmcoc3BsaXRQb3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgICAg
ICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaGVhZGVyLnN0cmluZygpLmxl
ZnQoc3BsaXRQb3MpLCBoZWFkZXIuc3RyaW5nKCkuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3Ry
aXBXaGl0ZVNwYWNlKCkpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IGI1Y2NmNWIuLjUyNGZhMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC01MTQsMTAgKzUxNCw4IEBA
IHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpkZWxldGVFbXB0eURhdGFiYXNlKCkKICAgICAgICAgcXVl
cnkuZmluYWxpemUoKTsKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogICAgICAgICBpZiAo
U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBTdHJp
bmdJbXBsKiBkYXRhYmFzZUlkZW50aWZpZXJDb3B5ID0gJm1fZGF0YWJhc2VJZGVudGlmaWVyLmlt
cGwoKS0+aXNvbGF0ZWRDb3B5KCkubGVha1JlZigpOwotICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbZGF0YWJhc2VJZGVudGlmaWVyQ29weV0gewotICAgICAgICAgICAgICAgIFN0b3JhZ2VU
cmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luV2l0aElkZW50aWZpZXIoZGF0YWJhc2VJZGVu
dGlmaWVyQ29weSk7Ci0gICAgICAgICAgICAgICAgZGF0YWJhc2VJZGVudGlmaWVyQ29weS0+ZGVy
ZWYoKTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RhdGFiYXNlSWRlbnRpZmllciA9
IG1fZGF0YWJhc2VJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgICAgICAgICAg
U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW5XaXRoSWRlbnRpZmllcihkYXRh
YmFzZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlbmFtZSA9IG1fc3luY01hbmFnZXItPmZ1bGxEYXRh
YmFzZUZpbGVuYW1lKG1fZGF0YWJhc2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9T
dG9yYWdlVGhyZWFkLmNwcAppbmRleCA4Y2E4YmNlLi4wNmQ2MDBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCkBAIC03NCwxMSArNzQsMTEgQEAgdm9pZCBTdG9yYWdl
VGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50KCkKICAgICB9CiB9CiAKLXZvaWQgU3RvcmFnZVRocmVh
ZDo6ZGlzcGF0Y2goY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb24pCit2b2lk
IFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxs
ZWQoKSAmJiBtX3RocmVhZElEKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+KGZ1bmN0aW9uKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPihXVEZNb3ZlKGZ1bmN0aW9uKSkp
OwogfQogCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKICAgICBpZiAoIW1fdGhyZWFkSUQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8c3Rk
OjpmdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKKyAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPE5vbmNvcHlhYmxlRnVuY3Rpb24+KFt0aGlzXSB7CiAgICAgICAgIHBlcmZvcm1U
ZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJl
YWRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5o
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAppbmRleCBkZjUyYWM2Li5l
ZDAxYzFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oCkBAIC0yNyw5ICsy
Nyw5IEBACiAjZGVmaW5lIFN0b3JhZ2VUaHJlYWRfaAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0YXJ0KCk7CiAgICAgdm9pZCB0ZXJtaW5h
dGUoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+Jik7
CisgICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAgICAgc3RhdGlj
IHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKQEAgLTU5
LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1UZXJtaW5hdGUoKTsKIAogICAg
IFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKLSAgICBNZXNzYWdlUXVldWU8c3RkOjpmdW5j
dGlvbjx2b2lkKCk+PiBtX3F1ZXVlOworICAgIE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0
aW9uPiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggOGQ4MGQ0ZC4uYzcwMjAzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yOTMsOSArMjkzLDggQEAg
dm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQog
ICAgICAgICBpZiAoZm91bmRPcmlnaW5zLmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXJDb3B5
ID0gb3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgb3JpZ2luSWRlbnRpZmllckNvcHldIHsKLSAgICAgICAgICAgIGRlbGV0ZU9y
aWdpbldpdGhJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXJDb3B5KTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbklkZW50aWZpZXIuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgIGRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKG9y
aWdpbklkZW50aWZpZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0zMTQsMTkgKzMxMywx
NyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaQogICAgICAgICBtX29yaWdpblNldC5hZGQob3Jp
Z2luSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXJDb3B5
ID0gb3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKTsKLSAgICBTdHJpbmcgZGF0YWJhc2VG
aWxlQ29weSA9IGRhdGFiYXNlRmlsZS5pc29sYXRlZENvcHkoKTsKLSAgICBhdXRvIGZ1bmN0aW9u
ID0gW3RoaXMsIG9yaWdpbklkZW50aWZpZXJDb3B5LCBkYXRhYmFzZUZpbGVDb3B5XSB7Ci0gICAg
ICAgIHN5bmNTZXRPcmlnaW5EZXRhaWxzKG9yaWdpbklkZW50aWZpZXJDb3B5LCBkYXRhYmFzZUZp
bGVDb3B5KTsKKyAgICBhdXRvIGZ1bmN0aW9uID0gW3RoaXMsIG9yaWdpbklkZW50aWZpZXIgPSBv
cmlnaW5JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBkYXRhYmFzZUZpbGUgPSBkYXRhYmFzZUZp
bGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2lu
SWRlbnRpZmllciwgZGF0YWJhc2VGaWxlKTsKICAgICB9OwogCiAgICAgaWYgKGlzTWFpblRocmVh
ZCgpKSB7CiAgICAgICAgIEFTU0VSVChtX3RocmVhZCk7Ci0gICAgICAgIG1fdGhyZWFkLT5kaXNw
YXRjaChmdW5jdGlvbik7CisgICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0
aW9uKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgd2VpcmQgcGluZy1w
b25naW5nIHdhcyBkb25lIHRvIGZpeCBhIGRlYWRsb2NrLiBXZSBzaG91bGQgZmlndXJlIG91dCBh
IGNsZWFuZXIgd2F5IHRvIGF2b2lkIGl0IGluc3RlYWQuCi0gICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIGZ1bmN0aW9uXSB7Ci0gICAgICAgICAgICBtX3RocmVhZC0+ZGlzcGF0Y2goZnVu
Y3Rpb24pOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBmdW5jdGlvbiA9IFdURk1v
dmUoZnVuY3Rpb24pXSB7CisgICAgICAgICAgICBtX3RocmVhZC0+ZGlzcGF0Y2goV1RGTW92ZShm
dW5jdGlvbikpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCmluZGV4IGRlYjRlNDEu
LjVmYmE4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCkBAIC0xMDMsMTAgKzEwMyw5IEBAIGNsYXNzIERpZE1vZGlm
eU9yaWdpbkRhdGEgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhy
ZWFkKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50LCBTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogICAgIHsKLSAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogY29udGV4dCA9IG5ldyBE
aWRNb2RpZnlPcmlnaW5EYXRhKGNsaWVudCwgb3JpZ2luLT5pc29sYXRlZENvcHkoKSk7Ci0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHRdIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PERpZE1vZGlmeU9yaWdpbkRhdGE+IGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlm
eU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAg
ICBjb250ZXh0LT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdp
bi5nZXQoKSk7Ci0gICAgICAgICAgICBkZWxldGUgY29udGV4dDsKICAgICAgICAgfSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFj
a2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tl
ckNsaWVudC5tbQppbmRleCA3ZTVkOTkxLi5kNjgwYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0KQEAgLTU4LDE1ICs1
OCwxNSBAQCB2b2lkIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9y
aWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPgogCiB2b2lkIFdlYlN0b3JhZ2VUcmFja2Vy
Q2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKKyAg
ICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyKG9yaWdpbklkZW50aWZpZXIpOwogCiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAg
ICAgIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbik7CisgICAgICAgIGRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luKFdURk1vdmUob3JpZ2luKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtvcmlnaW5dIHsKLSAgICAgICAgV2ViU3RvcmFnZVRyYWNr
ZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50KCktPmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbb3JpZ2luID0g
V1RGTW92ZShvcmlnaW4pXSgpIG11dGFibGUgeworICAgICAgICBXZWJTdG9yYWdlVHJhY2tlckNs
aWVudDo6c2hhcmVkV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQoKS0+ZGlzcGF0Y2hEaWRNb2RpZnlP
cmlnaW4oV1RGTW92ZShvcmlnaW4pKTsKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280015</attachid>
            <date>2016-05-27 18:27:54 -0700</date>
            <delta_ts>2016-05-27 19:01:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158166-20160527182903.patch</filename>
            <type>text/plain</type>
            <size>101286</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRkNDNkZWE5MDg4OGMwNTkwYzIzMzUx
NDIxYjAyNmIyZTA2MGNlNDQuLjdiOTMxNDdiNzZiMDcyNGJiNTE2OTMxMTk4YTlhZGJjNTZjMmM4
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzcgQEAKIDIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAorICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5
IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkgY2Fw
dHVyZWQgbGFtYmRhIHZhcmlhYmxlcy4gVGhpcworICAgICAgICBmdW5jdGlvbiBpcyB1c3VhbGx5
IGNhbGxlZCBjcm9zcy10aHJlYWQgd2l0aCBhIGxhbWJkYSBhbmQgY29weWluZworICAgICAgICB0
aGUgbGFtYmRhIChhbmQgaXRzIGNhcHR1cmVkIHZhcmlhYmxlcykgY2FuIGxlYWQgdG8gdGhyZWFk
LXNhZmV0eQorICAgICAgICBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIGNh
bGxPbk1haW5UaHJlYWQoKSB0byB0YWtlIGEgTm9uY29weWFibGVGdW5jdGlvbiYmCisgICAgICAg
IGluIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgc3RkOjpmdW5jdGlvbi4gVGhlIGNhbGwgc2l0ZXMg
b2YKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQgdG8g
dXNlIEMrKzE0J3MgbGFtYmRhCisgICAgICAgIGNhcHR1cmUgd2l0aCBpbml0aWFsaXplci4KKwor
ICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogd3Rm
L0Z1bmN0aW9uRGlzcGF0Y2hlci5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6CisgICAg
ICAgIC0gTW92ZWQgTm9uY29weWFibGVGdW5jdGlvbiBmcm9tIEZ1bmN0aW9uRGlzcGF0Y2hlci5o
IHRvIEZ1bmN0aW9uYWwuaCwKKyAgICAgICAgICBhcyBzdWdnZXN0ZWQgYnkgQW5kZXJzLgorICAg
ICAgICAtIEFkZCBhIG5ldyBvcGVyYXRvcj0obnVsbHB0cl90KSBvcGVyYXRvciB0byBOb25jb3B5
YWJsZUZ1bmN0aW9uIHRvCisgICAgICAgICAgbWF0Y2ggc3RkOjpmdW5jdGlvbiwgYXMgb25lIG9m
IHRoZSBjYWxsIHNpdGVzIG5lZWRlZCBpdC4KKworICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNw
cDoKKyAgICAgICAgKFdURjo6ZnVuY3Rpb25RdWV1ZSk6CisgICAgICAgIChXVEY6OmRpc3BhdGNo
RnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpOgorICAgICAgICAoV1RGOjpjYWxsT25NYWluVGhyZWFk
KToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorCisyMDE2LTA1LTI3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgV29ya1F1ZXVlOjpkaXNwYXRjaCgpIC8g
UnVuTG9vcDo6ZGlzcGF0Y2goKSBzaG91bGQgbm90IGNvcHkgY2FwdHVyZWQgbGFtYmRhIHZhcmlh
YmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4
MTExCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA0ZmRiMmJjNWViMjU0YjE4NGFiMzY1ZGQ3ODQ1N2RhODdlZDQx
ZTVjLi4yNTQzMGEwYzkyYmEzYzFkYWU3YWM0ZmViNTJhNjZjODJkYzczZGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQzIEBACisyMDE2LTA1LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIHNob3VsZCBub3QgY29weSBjYXB0
dXJlZCBsYW1iZGEgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTgxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVk
IGxhbWJkYSB2YXJpYWJsZXMuIFRoaXMgCisgICAgICAgIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2Fs
bGVkIGNyb3NzLXRocmVhZCB3aXRoIGEgbGFtYmRhIGFuZCBjb3B5aW5nCisgICAgICAgIHRoZSBs
YW1iZGEgKGFuZCBpdHMgY2FwdHVyZWQgdmFyaWFibGVzKSBjYW4gbGVhZCB0byB0aHJlYWQtc2Fm
ZXR5CisgICAgICAgIGlzc3Vlcy4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FsbE9u
TWFpblRocmVhZCgpIHRvIHRha2UgYSBOb25jb3B5YWJsZUZ1bmN0aW9uJiYKKyAgICAgICAgaW4g
cGFyYW1ldGVyIGluc3RlYWQgb2YgYSBzdGQ6OmZ1bmN0aW9uLiBUaGUgY2FsbCBzaXRlcyBvZgor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0byB1c2Ug
QysrMTQncyBsYW1iZGEKKyAgICAgICAgY2FwdHVyZSB3aXRoIGluaXRpYWxpemVyLgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVBlcm1pc3Npb25DaGVjayk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYWNrU291cmNl
SW5mb1JlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6cnVuVGFzayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dDo6Y29uc3RyYWludHNWYWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdDo6dXNlck1lZGlhQWNjZXNzR3JhbnRlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzY2hl
ZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzUGxh
eWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU2Ny
aXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0
U2NyaXB0KToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVT
dHJlYW06OnBlcmZvcm0pOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6Cisg
ICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJs
b2JTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlOjpkaXNwYXRjaERpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGlzcGF0Y2hEaWRJbXBvcnRJY29uRGF0
YUZvclBhZ2VVUkxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2UvUmVzb3VyY2VVc2FnZVRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlP
YnNlcnZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVhZDo6dGhyZWFk
Qm9keSk6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhy
ZWFkOjpkaXNwYXRjaEJhcnJpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFk
OjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJ
T1M6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUlPUzo6c2Ny
b2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUlPUzo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYzo6cmVsZWFzZVJlZmVyZW5jZXNUb1Njcm9sbGVySW1wc09uVGhlTWFpblRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6CisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRp
c3BhdGNoTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKC1bV2Vi
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNMaXN0ZW5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW06CisgICAg
ICAgICgtW1dlYkFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJIZWxwZXIgb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcik6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9i
c2VydmVyIGxlZ2libGVPdXRwdXQ6ZGlkT3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6bmF0aXZlU2Ft
cGxlQnVmZmVyczpmb3JJdGVtVGltZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2Jz
ZXJ2ZXIgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZG
TG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVl
c3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgcmVz
b3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVy
OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZWJhc2VFZmZlY3RpdmVSYXRlQ2hhbmdlZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnBhdXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0Ol0pOgorICAgICAgICAoLVtX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQ6d2l0aERpc2NvbnRpbnVpdHk6XSk6CisgICAgICAgICgtW1dlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkRmFpbFRvUGFyc2VTdHJl
YW1EYXRhV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVNZWRpYURhdGE6Zm9yVHJhY2tJRDptZWRp
YVR5cGU6ZmxhZ3M6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
IHN0cmVhbURhdGFQYXJzZXI6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQ6bWVkaWFUeXBl
Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRh
UGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JU
cmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAg
KC1bV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGxheWVyRmFpbGVkVG9EZWNvZGU6XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRDcmVhdGVkTWVkaWFTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRH
ZXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpwcm9jZXNzSW5wdXROb3RpZnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJl
ZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Z2V0
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRs
ZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlG
aW5pc2gpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJM
U2Vzc2lvbiBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
ayBjYW5jZWxdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHN1c3Bl
bmRdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc3VtZV0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOiBEZWxldGVkLgorCiAyMDE2LTA1
LTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVt
cHQgdG8gZml4IHRoZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2MzM2MjRlYWZjZTFiNWY2MTQ5
NTI0M2E5NGRjMzk2NWQ5YTY0M2EuLjkzMzhmOTA1YzFkYmM1MzUzZGFiMzg1ZjMwMjBlY2FjMjE2
NjJjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTYtMDUtMjcgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxk
IG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90
IGNvcHkgY2FwdHVyZWQgbGFtYmRhIHZhcmlhYmxlcy4gVGhpcyAKKyAgICAgICAgZnVuY3Rpb24g
aXMgdXN1YWxseSBjYWxsZWQgY3Jvc3MtdGhyZWFkIHdpdGggYSBsYW1iZGEgYW5kIGNvcHlpbmcK
KyAgICAgICAgdGhlIGxhbWJkYSAoYW5kIGl0cyBjYXB0dXJlZCB2YXJpYWJsZXMpIGNhbiBsZWFk
IHRvIHRocmVhZC1zYWZldHkKKyAgICAgICAgaXNzdWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
dXBkYXRlcyBjYWxsT25NYWluVGhyZWFkKCkgdG8gdGFrZSBhIE5vbmNvcHlhYmxlRnVuY3Rpb24m
JgorICAgICAgICBpbiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHN0ZDo6ZnVuY3Rpb24uIFRoZSBj
YWxsIHNpdGVzIG9mCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBoYXZlIGFsc28gYmVlbiB1
cGRhdGVkIHRvIHVzZSBDKysxNCdzIGxhbWJkYQorICAgICAgICBjYXB0dXJlIHdpdGggaW5pdGlh
bGl6ZXIuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UpOgorICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VTeW5jTWFuYWdlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhy
ZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVt
QW5kVHJhY2tlckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpz
ZXRPcmlnaW5EZXRhaWxzKToKKwogMjAxNi0wNS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCBjZDE4OTM1YWY0NzcyOGY1OWM1YWVjOWU1ZGE0ZmM4MTE0YzFjNjkyLi5mYjdi
MDQxNzdhMDVmYjE5OGFhYzE1N2QyMjM0ZTk2MWI5YzE1MTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVk
IGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkgY2FwdHVyZWQgbGFt
YmRhIHZhcmlhYmxlcy4gVGhpcyAKKyAgICAgICAgZnVuY3Rpb24gaXMgdXN1YWxseSBjYWxsZWQg
Y3Jvc3MtdGhyZWFkIHdpdGggYSBsYW1iZGEgYW5kIGNvcHlpbmcKKyAgICAgICAgdGhlIGxhbWJk
YSAoYW5kIGl0cyBjYXB0dXJlZCB2YXJpYWJsZXMpIGNhbiBsZWFkIHRvIHRocmVhZC1zYWZldHkK
KyAgICAgICAgaXNzdWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBjYWxsT25NYWlu
VGhyZWFkKCkgdG8gdGFrZSBhIE5vbmNvcHlhYmxlRnVuY3Rpb24mJgorICAgICAgICBpbiBwYXJh
bWV0ZXIgaW5zdGVhZCBvZiBhIHN0ZDo6ZnVuY3Rpb24uIFRoZSBjYWxsIHNpdGVzIG9mCisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoKSBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvIHVzZSBDKysx
NCdzIGxhbWJkYQorICAgICAgICBjYXB0dXJlIHdpdGggaW5pdGlhbGl6ZXIuCisKKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERpZE1vZGlmeU9y
aWdpbkRhdGE6OkRpZE1vZGlmeU9yaWdpbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3Jh
Z2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW06CisgICAgICAgIChXZWJTdG9yYWdlVHJhY2tl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4pOgorCiAyMDE2LTA1LTI2ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBxdWVyaWVzIGFuZCBwbGF0
Zm9ybSBzY3JlZW4gbW9kZXJuaXphdGlvbiBhbmQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZGRiZGEzZDY3MmVmNzRhZDJlOTYxMTNi
NGNkZGY5ZGQwMGY5YjllLi4wZDY0YjI2YWY3YWE3NzYxNTFkYzRiNzExMzE3YmYxNDg5ZThiYThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNCw2ICsx
MTQsNyBAQAogCQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMjlDMzNE
MTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4MTM0MDEz
ODE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQu
Y3BwICovOyB9OwogCQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNzE1QjA5MkZE
MDAxRkYwQjggLyogQmFzZTY0LmggKi87IH07CisJCTgzMTlFNEExMUNGOEYwRjQwMEZFQjQ0RSAv
KiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzE5RTRBMDFDRjhGMEY0MDBGRUI0NEUgLyogRnVuY3Rpb25hbC5oICovOyB9OwogCQk4
M0ZCQTkzMjE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyog
VHlwZUNhc3RzLmggKi87IH07CiAJCTg2RjQ2RjYxMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY0
NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovOyB9OwogCQk5MzkzNEJEMzE4
QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3Ry
aW5nVmlld09iakMubW0gKi87IH07CkBAIC00MzcsNiArNDM4LDcgQEAKIAkJN0UyOUMzM0QxNUZG
RDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE9iamNSdW50aW1lRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZTY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODMxOUU0QTAxQ0Y4RjBGNDAwRkVCNDRFIC8qIEZ1bmN0aW9uYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdW
aWV3T2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFN0cmlu
Z1ZpZXdPYmpDLm1tOyBwYXRoID0gbWFjL1N0cmluZ1ZpZXdPYmpDLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODI2LDYgKzgyOCw3IEBACiAJCQkJQThBNDcyQTYxNTFBODI1QTAw
NDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyog
RnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFEQTQg
LyogRnVuY3Rpb25EaXNwYXRjaGVyLmggKi8sCisJCQkJODMxOUU0QTAxQ0Y4RjBGNDAwRkVCNDRF
IC8qIEZ1bmN0aW9uYWwuaCAqLywKIAkJCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0
UHRyLmggKi8sCiAJCQkJMEZFQzg0QUUxQkQ4MjUzMTAwODBGRjc0IC8qIEdyYXBoTm9kZVdvcmts
aXN0LmggKi8sCiAJCQkJMkNDRDg5MjkxNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVU
aW1lLmNwcCAqLywKQEAgLTEzMjksNiArMTMzMiw3IEBACiAJCQkJMEZCMzE3QzQxQzQ4ODAwMTAw
N0UzOTVBIC8qIFN5c3RlbVRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDMzMTUx
QTgyNUIwMDQxMjNGRiAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3NDQ0MTUxQTgyNUIwMDQxMjNGRiAvKiBUZXh0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTgzMTlFNEExMUNGOEYwRjQwMEZFQjQ0RSAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQ0NzE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkRnVuY3Rpb25JbnZvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0OTE1MUE4MjVCMDA0MTIzRkYgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NEIx
NTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oCmluZGV4IGFjMGUwMWZhZDI5MjkzZGUzMmJlYzUwOGQxZDNhZWQz
NTE4YzRiYjQuLjcwZjQ0YTQyZmE4ZjEyZTU5NjdhMjAyYTU2NDBjM2U4MmI0NDdiOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCkBAIC0yNyw2NiArMjcsMTEgQEAKICNkZWZpbmUg
RnVuY3Rpb25EaXNwYXRjaGVyX2gKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKLS8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gaXRzIG93biBoZWFk
ZXIgKGUuZy4gRnVuY3Rpb25hbC5oKS4KLS8vIEZJWE1FOiBXZSBjb3VsZCBtYWtlIHRoaXMgdGVt
cGxhdGVkIHRvIHN1cHBvcnQgb3RoZXIgbGFtYmRhcyB0aGFuIHZvaWQoKSBhbmQgbWFrZSB0aGlz
IG1vcmUgcmV1c2FibGUuCi1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAg
ICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
cnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KLSAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICA6IG1fY2Fs
bGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlw
ZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRv
cigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxhYmxlV3JhcHBlcikKLSAgICAg
ICAgICAgIG1fY2FsbGFibGVXcmFwcGVyLT5jYWxsKCk7Ci0gICAgfQotCi0gICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1
ZT46OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlw
ZSYmIGNhbGxhYmxlKQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3ZlKGNhbGxhYmxl
KSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3Mg
Q2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQot
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKCkgPSAwOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGU+Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIGZpbmFs
IDogcHVibGljIENhbGxhYmxlV3JhcHBlckJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgQ2FsbGFibGVXcmFwcGVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICAg
ICAgOiBtX2NhbGxhYmxlKFdURk1vdmUoY2FsbGFibGUpKQotICAgICAgICB7Ci0gICAgICAgIH0K
LQotICAgICAgICBDYWxsYWJsZVdyYXBwZXIoY29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxl
dGU7Ci0gICAgICAgIENhbGxhYmxlV3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3Jh
cHBlciYpID0gZGVsZXRlOwotCi0gICAgICAgIHZvaWQgY2FsbCgpIGZpbmFsIHsgbV9jYWxsYWJs
ZSgpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsK
LSAgICB9OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2Fs
bGFibGVXcmFwcGVyOwotfTsKLQogLy8gRnVuY3Rpb25EaXNwYXRjaGVyIGlzIGFuIGFic3RyYWN0
IHJlcHJlc2VudGF0aW9uIG9mIHNvbWV0aGluZyB0aGF0IGZ1bmN0aW9ucyBjYW4gYmUKIC8vIGRp
c3BhdGNoZWQgdG8uIFRoaXMgY2FuIGZvciBleGFtcGxlIGJlIGEgcnVuIGxvb3Agb3IgYSB3b3Jr
IHF1ZXVlLgogCkBAIC0xMDMsNiArNDgsNSBAQCBwcm90ZWN0ZWQ6CiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAogdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7Ci11c2luZyBXVEY6Ok5vbmNvcHlh
YmxlRnVuY3Rpb247CiAKICNlbmRpZiAvLyBGdW5jdGlvbkRpc3BhdGNoZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25h
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY5MTg2MGZhM2U2ODNhZjMzMzBiZTM0YTZiZDljMTBlYTNmYmJmYmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgKQEAgLTAsMCAr
MSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bWVtb3J5Pgor
CituYW1lc3BhY2UgV1RGIHsKKworLy8gRklYTUU6IFdlIGNvdWxkIG1ha2UgdGhpcyB0ZW1wbGF0
ZWQgdG8gc3VwcG9ydCBvdGhlciBsYW1iZGFzIHRoYW4gdm9pZCgpIGFuZCBtYWtlIHRoaXMgbW9y
ZSByZXVzYWJsZS4KK2NsYXNzIE5vbmNvcHlhYmxlRnVuY3Rpb24geworcHVibGljOgorICAgIE5v
bmNvcHlhYmxlRnVuY3Rpb24oKSA9IGRlZmF1bHQ7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
YWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFs
dWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIE5vbmNvcHlh
YmxlRnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCisgICAgICAgIDogbV9jYWxsYWJs
ZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlPj4o
V1RGTW92ZShjYWxsYWJsZSkpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIG9wZXJhdG9yKCko
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fY2FsbGFibGVXcmFwcGVyKQorICAgICAgICAg
ICAgbV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxhYmxlV3JhcHBlcjsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6
dHlwZT4KKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYg
Y2FsbGFibGUpCisgICAgeworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24m
IG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgICAgIG1fY2FsbGFibGVXcmFw
cGVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DYWxsYWJsZVdyYXBwZXJC
YXNlKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGwoKSA9IDA7CisgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZT4KKyAgICBjbGFzcyBDYWxsYWJsZVdy
YXBwZXIgZmluYWwgOiBwdWJsaWMgQ2FsbGFibGVXcmFwcGVyQmFzZSB7CisgICAgcHVibGljOgor
ICAgICAgICBleHBsaWNpdCBDYWxsYWJsZVdyYXBwZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUp
CisgICAgICAgICAgICA6IG1fY2FsbGFibGUoV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIENhbGxhYmxlV3JhcHBlcihjb25zdCBDYWxsYWJsZVdyYXBw
ZXImKSA9IGRlbGV0ZTsKKyAgICAgICAgQ2FsbGFibGVXcmFwcGVyJiBvcGVyYXRvcj0oY29uc3Qg
Q2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisKKyAgICAgICAgdm9pZCBjYWxsKCkgZmluYWwg
eyBtX2NhbGxhYmxlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENhbGxhYmxlVHlwZSBt
X2NhbGxhYmxlOworICAgIH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVy
QmFzZT4gbV9jYWxsYWJsZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNp
bmcgV1RGOjpOb25jb3B5YWJsZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA0NjU1
NWQ1NWYyYTliMDQ4NmYxYjMyOWZlOWViNDJiZTE5MWY0N2I3Li5kM2YwMjVlZjJjYzk2NjE4Njc2
MmVjNTYxODNlN2RlMjcxOGE3ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDcsOSArNDcs
OSBAQCBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKIAogc3Rh
dGljIFN0YXRpY0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKIAotc3RhdGljIERl
cXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVlKCkKK3N0YXRpYyBEZXF1
ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPiYgZnVuY3Rpb25RdWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+PiBmdW5jdGlvblF1ZXVl
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPj4g
ZnVuY3Rpb25RdWV1ZTsKICAgICByZXR1cm4gZnVuY3Rpb25RdWV1ZTsKIH0KIApAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAKICAgICBh
dXRvIHN0YXJ0VGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogCi0gICAg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9u
IGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewpAQCAtMTQ0LDcgKzE0
NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgfQogfQog
Ci12b2lkIGNhbGxPbk1haW5UaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikK
K3ZvaWQgY2FsbE9uTWFpblRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7
CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFp
blRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IDIwY2YxY2I4NzBl
ZDYyYWYzYmVkYjc3OTFkYmIxMWE5ODc0YTAwNzUuLjJlOGVmMWQ1YmU0MDk0YmFlZjkyNTdhMjNi
YTAzNTdiOGIwNjU4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQwLDcgKzQxLDcgQEAgdHlwZWRl
ZiB1aW50MzJfdCBUaHJlYWRJZGVudGlmaWVyOwogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4pOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRocmVh
ZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJl
YWQodm9pZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA0ODUyN2I5YjhlNTc3NmU3MTdlYzQ4YzEy
Y2U1OGMxM2ZhM2I4NzBjLi5jZDRkMzcyNjU0MGQ0NjdjMzJkYjFlNjkwMmYxZGUwMGI1NzIzYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JB
ZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAg
ICAgICAgLy8gSWYgdGhlIElEQlZhbHVlIGRvZXNuJ3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21l
dGhpbmcgd2VudCB3cm9uZyB3cml0aW5nIHRoZSBibG9icyB0byBkaXNrLgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNv
IHdlIGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVz
dWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIHsgSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJp
bmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgdGhpcywgcHJvdGVjdGVkT3BlcmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRp
b24pLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgeworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkT3Bl
cmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRpb24pLCByZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCldKCkgewogICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0aW9uLT5jb21wbGV0ZWQocmVz
dWx0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAppbmRleCAxODAy
Y2M1YjllNzQ1NWY0YWZiZDg0ODIxOWEzZGEyMjk4Y2IwNzI4Li4yMjg1NzBiMGRkOWMyODdiNTk0
Yjg3M2Y5MzVkNmJmMjNjNDNjNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVBlcm1pc3Npb25DaGVj
ayhjb25zdCBTdHJpbmcmIHNhbHQsIGJvb2wgY2EKICAgICBtX2lkSGFzaFNhbHQgPSBzYWx0Owog
ICAgIG1faGF2ZVBlcnNpc3RlbnRQZXJtaXNzaW9uID0gY2FuQWNjZXNzOwogCi0gICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yID0gV1RGTW92ZShwZXJt
aXNzaW9uQ2hlY2tQcm90ZWN0b3IpXSB7CiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKHRoaXMpOwogICAgIH0p
OwogfQpAQCAtMTYwLDggKzE2MCw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29t
cGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mCiAgICAgICAg
IGRldmljZXMuYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgbGFiZWwsIGlkLCBncm91cElkLCBkZXZpY2VUeXBlKSk7CiAgICAgfQogCi0gICAg
UmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgZGV2aWNlc10geworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8TWVkaWFEZXZpY2VzUmVxdWVzdD4oKnRoaXMpLCBk
ZXZpY2VzID0gV1RGTW92ZShkZXZpY2VzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+bV9wcm9taXNlLnJlc29sdmUoZGV2aWNlcyk7CiAgICAgfSk7CiAgICAgbV9wcm90ZWN0
b3IgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDU5
NTUyNjBjOTNhNjI1ODkzMDQ0ZDc4ZDY2MDVmZTdmMzAzMWRjMjkuLmI0ODU5ZDcyYjRhZjI1MDBl
MjE5Yzg4ZGE1YzZmYjFkNjMxZWRjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bi5jcHAKQEAgLTk1LDE0ICs5NSwxNCBAQCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246Ok1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbihQZWVyQ29ubmVjdGlvbkJhY2tlbmRDbAogICAgIG1f
bWVkaWFFbmRwb2ludC0+Z2VuZXJhdGVEdGxzSW5mbygpOwogfQogCi12b2lkIE1lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gdGFzaykKK3Zv
aWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpydW5UYXNrKE5vbkNvcHlhYmxlRnVuY3Rp
b24mJiB0YXNrKQogewogICAgIGlmIChtX2R0bHNGaW5nZXJwcmludC5pc051bGwoKSkgewogICAg
ICAgICAvLyBPbmx5IG9uZSB0YXNrIG5lZWRzIHRvIGJlIGRlZmVycmVkIHNpbmNlIGl0IHdpbGwg
aG9sZCBvZmYgYW55IG90aGVycyB1bnRpbCBjb21wbGV0ZWQuCiAgICAgICAgIEFTU0VSVCghbV9p
bml0aWFsRGVmZXJyZWRUYXNrKTsKLSAgICAgICAgbV9pbml0aWFsRGVmZXJyZWRUYXNrID0gdGFz
azsKKyAgICAgICAgbV9pbml0aWFsRGVmZXJyZWRUYXNrID0gV1RGTW92ZSh0YXNrKTsKICAgICB9
IGVsc2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZCh0YXNrKTsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnN0YXJ0UnVubmluZ1Rhc2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5o
CmluZGV4IGRkM2VjMWE3YjEyNDIwODZmMDFiM2E0ZWJiZGQxZjYzZDAzYTIwYjYuLjUyOGQ5MDY1
NWNlOTgxNGMwYTg2MzFlNjdhNTU5ZTAzNDUwNmRhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc3LDcgKzc4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJOZWdvdGlhdGlvbk5lZWRlZFN0YXRlKCkgb3ZlcnJpZGUgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9OwogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4pOworICAgIHZvaWQgcnVuVGFzayhOb25Db3B5YWJsZUZ1bmN0aW9uJiYp
OwogICAgIHZvaWQgc3RhcnRSdW5uaW5nVGFza3MoKTsKIAogICAgIHZvaWQgY3JlYXRlT2ZmZXJU
YXNrKFJUQ09mZmVyT3B0aW9ucyYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Q
cm9taXNlJik7CkBAIC05MSw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgUGVlckNvbm5lY3Rpb25C
YWNrZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFFbmRwb2lu
dD4gbV9tZWRpYUVuZHBvaW50OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1faW5pdGlh
bERlZmVycmVkVGFzazsKKyAgICBOb25Db3B5YWJsZUZ1bmN0aW9uIG1faW5pdGlhbERlZmVycmVk
VGFzazsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTRFBQcm9jZXNzb3I+IG1fc2RwUHJvY2Vzc29y
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcAppbmRleCAwMDRlNGZiMTQwNWE5NjdmYWVlNTk1MDUyYTIxNmZlNTEy
ZWI3YzIwLi45ZTVhOWMyNDRlZjYzYTE3YmZhOGQ5YzdjY2U1YzYxM2FlYTM5YWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTEzNSwxMSArMTM1LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29u
c3RyYWludHNWYWxpZGF0ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291CiAg
ICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrIDogdmlkZW9UcmFja3MpCiAgICAgICAgIG1fdmlkZW9E
ZXZpY2VVSURzLmFwcGVuZCh2aWRlb1RyYWNrLT5wZXJzaXN0ZW50SUQoKSk7CiAKLSAgICBSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IFJlZjxVc2VyTWVkaWFSZXF1ZXN0PigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAg
IC8vIDIgLSBUaGUgY29uc3RyYWludHMgYXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9yIGFjY2Vz
cyB0byBtZWRpYS4KICAgICAgICAgaWYgKFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBwcm90ZWN0ZWRUaGlzLT5tX2NvbnRyb2xsZXIpCi0gICAgICAgICAgICBjb250cm9sbGVyLT5y
ZXF1ZXN0VXNlck1lZGlhQWNjZXNzKCpwcm90ZWN0ZWRUaGlzLmdldCgpKTsKKyAgICAgICAgICAg
IGNvbnRyb2xsZXItPnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MocHJvdGVjdGVkVGhpcy5nZXQoKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTE0OCwxMCArMTQ3LDkgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0
Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNv
bnMKICAgICBtX2FsbG93ZWRWaWRlb0RldmljZVVJRCA9IHZpZGVvRGV2aWNlVUlEOwogICAgIG1f
YXVkaW9EZXZpY2VVSURBbGxvd2VkID0gYXVkaW9EZXZpY2VVSUQ7CiAKLSAgICBSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzLCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPFVzZXJNZWRpYVJlcXVlc3Q+KCp0
aGlzKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEXSgpIG11dGFibGUgewogICAgICAg
ICAvLyAzIC0gdGhlIHVzZXIgZ3JhbnRlZCBhY2Nlc3MsIGFzayBwbGF0Zm9ybSB0byBjcmVhdGUg
dGhlIG1lZGlhIHN0cmVhbSBkZXNjcmlwdG9ycy4KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQo
KSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsKKyAgICAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhp
cy5wdHIoKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmlu
ZGV4IDlkY2VlMTlmMzI2MzkxOWRjNTRjZjg5MzgwNGVjMWYwMTk2NTRiY2EuLjg4MTgwODUwYjc0
NGJlNmE0MDc2NmI5YzU2ZGYzNTE1NmE4Mjg2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5Nyw4ICs3OTcsNyBAQCB2b2lk
IEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgICAgIG1faXNEZWxl
dGlvblNjaGVkdWxlZCA9IHRydWU7CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
c10geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1ZGlv
Q29udGV4dD4oKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGVsZXRlTWFya2VkTm9kZXMoKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTAwMiw4ICsxMDAx
LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKIHsKICAg
ICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBv
biB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlCiAgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlv
IEkvTyB0aHJlYWQgaGVyZSBhbmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgot
ICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBSZWY8QXVkaW9Db250ZXh0PigqdGhpcyldIHsKICAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVu
dCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggZDA2MDc1NTFlNjIzZDIxNDZlOTVhOTA1Yzk5YzU0Zjc3ZjQ4ZTM0Yy4uZjA2YzIx
MzAyM2M3Y2FhM2NlODU0MWQ2ZDg1YTE3MGZkM2ExMTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC01MzY3LDEyICs1MzY3LDggQEAgU2VjdXJpdHlPcmlnaW4qIERvY3VtZW50Ojp0b3BP
cmlnaW4oKSBjb25zdAogCiB2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiB7Ci0g
ICAgVGFzayogdGFza1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSku
cmVsZWFzZSgpOwotICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGRvY3VtZW50UmVmZXJlbmNlKG1fd2Vh
a0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoWz1dIHsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3Rvcnku
Y3JlYXRlV2Vha1B0cigpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRhc2s+
IHRhc2sodGFza1B0cik7CiAKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRS
ZWZlcmVuY2UuZ2V0KCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQpCkBAIC01MzgwLDkgKzUzNzYs
OSBAQCB2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiAKICAgICAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZl
cnNMb2FkaW5nKCkgJiYgZG9jdW1lbnQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkg
fHwgIWRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkb2N1
bWVudC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUoKnRhc2sucmVsZWFzZSgpKSk7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygqZG9jdW1lbnQp
OworICAgICAgICAgICAgdGFzay5wZXJmb3JtVGFzaygqZG9jdW1lbnQpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMjcxMzM5MjM5ZTgwYzNkNDZm
YjYyODVlZjUyYjVhOTY2OTgyMWQwYS4uNmNiMjVkOTY4MWMxOTY4YjIzMDk0NGRjYjQ3ZDJjOTM1
ZGM3NGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMjgwLDggKzI4
MCw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVybCkKICAgICBpZiAobV9jYWNoZWRTY3JpcHQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSAmbV9lbGVtZW50OwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIGVsZW1lbnRdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBl
bGVtZW50ID0gUmVmPEVsZW1lbnQ+KG1fZWxlbWVudCldIHsKICAgICAgICAgZGlzcGF0Y2hFcnJv
ckV2ZW50KCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IDBmYjkxMjRlMWY2Mzg0OTY5N2NlYWMwM2Zk
YWE2MTJmYTZlMWUyNWYuLjZiNGJiYjNmNThmOWIxYzhiNmUwNGFmMzRmMzJkZTg3ZDMwYjA2ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2Fn
ZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC02MywxMiArNjQs
MTIgQEAgaW5saW5lIEFzeW5jRmlsZVN0cmVhbTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMoRmlsZVN0
cmVhbUNsaWVudCYgY2xpZW50KQogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIGNhbGxPbkZpbGVU
aHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCitzdGF0aWMgdm9pZCBjYWxs
T25GaWxlVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IHF1ZXVl
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZXNzYWdlUXVldWU8Tm9uY29weWFibGVGdW5j
dGlvbj4+IHF1ZXVlOwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGNyZWF0ZUZpbGVUaHJl
YWRPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGNyZWF0ZUZpbGVUaHJlYWRPbmNlLCBbXSB7CkBA
IC04OSw3ICs5MCw3IEBAIHN0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoc3RkOjpmdW5jdGlv
bjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUu
Z2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PE5vbmNvcHlhYmxlRnVuY3Rpb24+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIEFzeW5jRmls
ZVN0cmVhbTo6QXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKQEAgLTEw
MiwzMyArMTAzLDI4IEBAIEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSgpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIC8vIFJlbGVhc2Ugc28gdGhhdCB3ZSBj
YW4gY29udHJvbCB0aGUgdGltaW5nIG9mIGRlbGV0aW9uIGJlbG93LgotICAgIGF1dG8mIGludGVy
bmFscyA9ICptX2ludGVybmFscy5yZWxlYXNlKCk7Ci0KICAgICAvLyBTZXQgZmxhZyB0byBwcmV2
ZW50IGNsaWVudCBjYWxsYmFja3MgYW5kIGFsc28gcHJldmVudCBxdWV1ZWQgb3BlcmF0aW9ucyBm
cm9tIHN0YXJ0aW5nLgotICAgIGludGVybmFscy5kZXN0cm95ZWQgPSB0cnVlOworICAgIG1faW50
ZXJuYWxzLT5kZXN0cm95ZWQgPSB0cnVlOwogCiAgICAgLy8gQ2FsbCB0aHJvdWdoIGZpbGUgdGhy
ZWFkIGFuZCBiYWNrIHRvIG1haW4gdGhyZWFkIHRvIG1ha2Ugc3VyZSBkZWxldGlvbiBoYXBwZW5z
CiAgICAgLy8gYWZ0ZXIgYWxsIGZpbGUgdGhyZWFkIGZ1bmN0aW9ucyBhbmQgYWxsIG1haW4gdGhy
ZWFkIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgotICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZp
bnRlcm5hbHNdIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbJmludGVybmFsc10gewotICAg
ICAgICAgICAgZGVsZXRlICZpbnRlcm5hbHM7CisgICAgY2FsbE9uRmlsZVRocmVhZChbaW50ZXJu
YWxzID0gV1RGTW92ZShtX2ludGVybmFscyldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2ludGVybmFscyA9IFdURk1vdmUoaW50ZXJuYWxzKV0gewogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTdHJlYW06OnBlcmZvcm0oc3RkOjpmdW5jdGlv
bjxzdGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+IG9w
ZXJhdGlvbikKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248c3Rk
OjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJh
dGlvbikKIHsKICAgICBhdXRvJiBpbnRlcm5hbHMgPSAqbV9pbnRlcm5hbHM7Ci0gICAgY2FsbE9u
RmlsZVRocmVhZChbJmludGVybmFscywgb3BlcmF0aW9uXSB7CisgICAgY2FsbE9uRmlsZVRocmVh
ZChbJmludGVybmFscywgb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pXSB7CiAgICAgICAg
IC8vIERvbid0IGRvIHRoZSBvcGVyYXRpb24gaWYgc3RvcCB3YXMgYWxyZWFkeSBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkLiBOb3RlIHRoYXQgdGhlcmUgaXMKICAgICAgICAgLy8gYSByYWNlIGhl
cmUsIGJ1dCBzaW5jZSBza2lwcGluZyB0aGUgb3BlcmF0aW9uIGlzIGFuIG9wdGltaXphdGlvbiBp
dCdzIE9LIHRoYXQgd2UgY2FuJ3QKICAgICAgICAgLy8gZ3VhcmFudGVlIGV4YWN0bHkgd2hpY2gg
b3BlcmF0aW9ucyBhcmUgc2tpcHBlZC4gTm90ZSB0aGF0IHRoaXMgaXMgYWxzbyB0aGUgb25seSBy
ZWFzb24KICAgICAgICAgLy8gd2UgdXNlIGFuIGF0b21pY19ib29sIHJhdGhlciB0aGFuIGp1c3Qg
YSBib29sIGZvciBkZXN0cm95ZWQuCiAgICAgICAgIGlmIChpbnRlcm5hbHMuZGVzdHJveWVkKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIG1haW5UaHJlYWRXb3JrID0gb3BlcmF0
aW9uKGludGVybmFscy5zdHJlYW0pOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFsmaW50ZXJu
YWxzLCBtYWluVGhyZWFkV29ya10geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFsmaW50ZXJu
YWxzLCBtYWluVGhyZWFkV29yayA9IG9wZXJhdGlvbihpbnRlcm5hbHMuc3RyZWFtKV0gewogICAg
ICAgICAgICAgaWYgKGludGVybmFscy5kZXN0cm95ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgbWFpblRocmVhZFdvcmsoaW50ZXJuYWxzLmNsaWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAppbmRleCA0MjhmNzMwZWU0NzZjZWJiYjQ3
OTFkYjdmOWU1OTVlZTI5NzBiZWM3Li5mZjQ4MWE0NWZiODI4Y2IxYjM2MmJmNzY5MDBjYTAxZThh
MDVlZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2
b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjxzdGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNs
aWVudCYpPihGaWxlU3RyZWFtJik+KTsKKyAgICB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYpOwog
CiAgICAgc3RydWN0IEludGVybmFsczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxzPiBt
X2ludGVybmFsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCmluZGV4IDEwMDAxMzU0ZjY4MjYzMmEwZDVjOGE0MDAwOGNiNjcyYjdmMGRm
NWYuLmM1OThhYzM0ZmQyNzA3YTlkZDc4MTc4MWRlMTIxNmY1MDY4NTZmMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTE3
LDEwICsxMTcsOCBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVh
dGUocGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lz
dHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29sYXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJs
b2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQgPSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmws
IHBhdGgsIGNvbnRlbnRUeXBlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0g
ewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JS
ZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckZpbGVCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpjcmVhdGUoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+cGF0aCksIGJsb2JSZWdpc3RyeUNv
bnRleHQtPmNvbnRlbnRUeXBlKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJsLCBwYXRoLCBjb250ZW50
VHlwZSldIHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29udGV4dC0+dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShjb250ZXh0LT5wYXRo
KSwgY29udGV4dC0+Y29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0xMzEs
MTAgKzEyOSw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+IGJsCiAgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUp
OwogICAgIGVsc2UgewogICAgICAgICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFu
IGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29u
dGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBj
b250ZW50VHlwZSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHRdIHsKLSAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlD
b250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgV1RGTW92ZShibG9iUmVnaXN0cnlDb250ZXh0
LT5ibG9iUGFydHMpLCBibG9iUmVnaXN0cnlDb250ZXh0LT5jb250ZW50VHlwZSk7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdpc3Ry
eUNvbnRleHQ+KHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSldIHsKKyAgICAg
ICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LT51cmwsIFdURk1v
dmUoY29udGV4dC0+YmxvYlBhcnRzKSwgY29udGV4dC0+Y29udGVudFR5cGUpOwogICAgICAgICB9
KTsKICAgICB9CiB9CkBAIC0xNDksMTAgKzE0NSw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYK
ICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29s
YXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQg
PSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwsIHNyY1VSTCk7Ci0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbnRleHRdIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVn
aXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwg
YmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
Y29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJsLCBzcmNV
UkwpXSB7CisgICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoY29udGV4
dC0+dXJsLCBjb250ZXh0LT5zcmNVUkwpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0xNzgs
MTAgKzE3Miw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSCiAgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBp
c29sYXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRl
eHQgPSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dChuZXdVUkwsIHNyY1VSTCk7Ci0gICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbnRleHQsIHN0YXJ0LCBlbmRdIHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRl
eHQpOwotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
YmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBibG9iUmVnaXN0cnlDb250ZXh0LT5zcmNVUkwsIHN0
YXJ0LCBlbmQpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0PihuZXdVUkwsIHNyY1VSTCksIHN0YXJ0LCBlbmRd
IHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNv
bnRleHQtPnVybCwgY29udGV4dC0+c3JjVVJMLCBzdGFydCwgZW5kKTsKICAgICAgICAgfSk7CiAg
ICAgfQogfQpAQCAtMTkzLDExICsxODUsOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJlc3VsdFNp
emUgPSBibG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSh1cmwpOwogICAgIGVsc2UgewogICAgICAgICAv
LyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4K
LSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlD
b250ZXh0KHVybCk7CiAgICAgICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQsICZzZW1hcGhvcmUsICZyZXN1bHRTaXplXSB7Ci0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lz
dHJ5Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIHJlc3VsdFNpemUgPSBibG9iUmVnaXN0
cnkoKS5ibG9iU2l6ZShibG9iUmVnaXN0cnlDb250ZXh0LT51cmwpOworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0
Pih1cmwpLCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6ZV0geworICAgICAgICAgICAgcmVzdWx0U2l6
ZSA9IGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKGNvbnRleHQtPnVybCk7CiAgICAgICAgICAgICBz
ZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIH0pOwogICAgICAgICBzZW1hcGhvcmUud2FpdChz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKQEAgLTIxNCwxMCArMjA0LDggQEAg
dm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
IHVybCkKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29s
YXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQg
PSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtjb250ZXh0XSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29u
dGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIGJsb2JSZWdp
c3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdp
c3RyeUNvbnRleHQ+KHVybCldIHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0
ZXJCbG9iVVJMKGNvbnRleHQtPnVybCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDZkYTI0NGU1ZDNhMWU2
NGFiM2ExODBkOTEzODAyNTBiNjQ5MGEzOGMuLmUxZWRhNWNhYTFkMDA1YzBjZGVhMTEzYzY1YjA1
OTgzOTUzNGYwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcApAQCAtMjA5MCwxMCArMjA5MCw5IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpkaXNwYXRjaERp
ZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYKICAgICBB
U1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogICAgICsrbV9tYWluVGhyZWFkQ2FsbGJhY2tDb3Vu
dDsKIAotICAgIFN0cmluZyBwYWdlVVJMQ29weSA9IHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGFnZVVSTENvcHldIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKV0gewogICAgICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkSW1wb3J0SWNvblVSTEZv
clBhZ2VVUkwocGFnZVVSTENvcHkpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZEltcG9ydElj
b25VUkxGb3JQYWdlVVJMKHBhZ2VVUkwpOwogICAgICAgICBjaGVja0Nsb3NlZEFmdGVyTWFpblRo
cmVhZENhbGxiYWNrKCk7CiAgICAgfSk7CiB9CkBAIC0yMTAzLDEwICsyMTAyLDkgQEAgdm9pZCBJ
Y29uRGF0YWJhc2U6OmRpc3BhdGNoRGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMT25NYWluVGhy
ZWFkKGNvbnN0IFN0cmluZyYKICAgICBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogICAgICsr
bV9tYWluVGhyZWFkQ2FsbGJhY2tDb3VudDsKIAotICAgIFN0cmluZyBwYWdlVVJMQ29weSA9IHBh
Z2VVUkwuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGFnZVVS
TENvcHldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwYWdlVVJMID0gcGFnZVVSTC5p
c29sYXRlZENvcHkoKV0gewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMKHBhZ2VVUkxDb3B5KTsKKyAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwocGFnZVVSTCk7CiAgICAg
ICAgIGNoZWNrQ2xvc2VkQWZ0ZXJNYWluVGhyZWFkQ2FsbGJhY2soKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCmluZGV4IDIzNTAwYmUy
YWM1YjBmMDhjMDYyNzdkNjNhMTBkODhiYTNlM2Y4YzcuLmVmMmE1MjUyZmZhYWI0OTZiZDRjNTMw
ZjFjNTA1MTQzODVmNDYyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3Vy
Y2VVc2FnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdl
VGhyZWFkLmNwcApAQCAtNzcsOSArNzcsOSBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6Ondh
aXRVbnRpbE9ic2VydmVycygpCiAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9sb2NrKTsKIH0K
IAotdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlPYnNlcnZlcnMoUmVzb3VyY2VVc2Fn
ZURhdGEmIGRhdGEpCit2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVycyhS
ZXNvdXJjZVVzYWdlRGF0YSYmIGRhdGEpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbZGF0YV0o
KSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtkYXRhID0gV1RGTW92ZShkYXRhKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgUmVz
b3VyY2VVc2FnZURhdGEmKT4+IGZ1bmN0aW9uczsKICAgICAgICAgCiAgICAgICAgIHsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBOT19SRVRVUk4gdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjp0aHJlYWRC
b2R5KCkKIAogICAgICAgICBSZXNvdXJjZVVzYWdlRGF0YSBkYXRhOwogICAgICAgICBwbGF0Zm9y
bVRocmVhZEJvZHkobV92bSwgZGF0YSk7Ci0gICAgICAgIG5vdGlmeU9ic2VydmVycyhkYXRhKTsK
KyAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgIGF1dG8g
ZHVyYXRpb24gPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzPihzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHN0YXJ0KTsKICAgICAg
ICAgYXV0byBkaWZmZXJlbmNlID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyg1MDApIC0gZHVy
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCmluZGV4IGZk
MjU4MWFmYzVhNWQ2YzljZjQ1ZmQ3YmJmM2YzNWMzZjJhNGNhYmMuLjI1ZTRjM2Q1YWE2YWIzYjRh
YjFkNmRlNTg1NjJkMGZkZmNlMTZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVzb3VyY2VVc2FnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VV
c2FnZVRocmVhZC5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJlc291
cmNlVXNhZ2VUaHJlYWQmIHNpbmdsZXRvbigpOwogCiAgICAgdm9pZCB3YWl0VW50aWxPYnNlcnZl
cnMoKTsKLSAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhSZXNvdXJjZVVzYWdlRGF0YSYpOworICAg
IHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VEYXRhJiYpOwogCiAgICAgdm9pZCBj
cmVhdGVUaHJlYWRJZk5lZWRlZCgpOwogICAgIHN0YXRpYyB2b2lkIHRocmVhZENhbGxiYWNrKHZv
aWQqIHNjcm9sbGluZ1RocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCA0NjY5YTE5OTI4N2E2Y2FmMGFlYmM2YmJiYTVh
N2VlZTVjNWViZDZiLi4zNWExN2I4ZTc4MzI5MGRmYWE2YzZkODNmM2RiNzgxMjI0Mzc0ZDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5j
cHAKQEAgLTQ1LDIyICs0NSwyMiBAQCBib29sIFNjcm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhy
ZWFkKCkKICAgICByZXR1cm4gdGhyZWFkSWRlbnRpZmllciAmJiBjdXJyZW50VGhyZWFkKCkgPT0g
dGhyZWFkSWRlbnRpZmllcjsKIH0KIAotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGF1dG8mIHNjcm9s
bGluZ1RocmVhZCA9IFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCk7CiAgICAgc2Nyb2xsaW5n
VGhyZWFkLmNyZWF0ZVRocmVhZElmTmVlZGVkKCk7CiAKICAgICB7CiAgICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0aW9uc011dGV4KTsKLSAg
ICAgICAgc2Nyb2xsaW5nVGhyZWFkLm1fZnVuY3Rpb25zLmFwcGVuZChmdW5jdGlvbik7CisgICAg
ICAgIHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikp
OwogICAgIH0KIAogICAgIHNjcm9sbGluZ1RocmVhZC53YWtlVXBSdW5Mb29wKCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoTm9uY29w
eWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoKFtmdW5jdGlvbl0oKSBt
dXRhYmxlIHsKKyAgICBkaXNwYXRjaChbZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAg
ICAgfSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3Bh
dGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzQ3VycmVu
dFRocmVhZCgpKTsKIAotICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBmdW5jdGlv
bnM7CisgICAgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb24+IGZ1bmN0aW9uczsKICAgICAKICAg
ICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZnVuY3Rpb25zTXV0ZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaApp
bmRleCBhNzA5Y2NkOGU3ODYzNjI5ZGU4YTI4M2M0NjNjYTljNzcwNTFjNzE1Li5jYjQ0NGU1ZTM2
ZjU1MzgzNDc0NjIwYWRjOGU4MDQ1ZjkwNDQ5YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KQEAgLTQ3LDExICs0OCwxMSBAQCBjbGFzcyBTY3JvbGxpbmdUaHJlYWQgewogCiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNDdXJyZW50VGhyZWFkKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYm
KTsKIAogICAgIC8vIFdpbGwgZGlzcGF0Y2ggdGhlIGdpdmVuIGZ1bmN0aW9uIG9uIHRoZSBtYWlu
IHRocmVhZCBvbmNlIGFsbCBwZW5kaW5nIGZ1bmN0aW9ucwogICAgIC8vIG9uIHRoZSBzY3JvbGxp
bmcgdGhyZWFkIGhhdmUgZmluaXNoZWQgZXhlY3V0aW5nLiBVc2VkIGZvciBzeW5jaHJvbml6YXRp
b24gcHVycG9zZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hCYXJy
aWVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxTY3JvbGxpbmdUaHJlYWQ+OwpAQCAtNzksNyArODAs
NyBAQCBwcml2YXRlOgogICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcE11dGV4OwogCiAgICAg
TG9jayBtX2Z1bmN0aW9uc011dGV4OwotICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
PiBtX2Z1bmN0aW9uczsKKyAgICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlvbj4gbV9mdW5jdGlv
bnM7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBX
ZWJDb3JlOjpSdW5Mb29wIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKaW5kZXggMDgyYmQ3M2NkYmJmMmQ5NmQ4
YzhkNGE5MTI4YTllYzk3MDQ3ZmFlOC4uNjYyNmVjY2M4ZTFhN2Q2ZjBhMDllNmY2MTRjZjFjNzAz
YWI2MGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Nj
cm9sbGluZ1RyZWVJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlSU9TLmNwcApAQCAtNjcsOSArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVJT1M6OmludmFsaWRhdGUoKQogICAgIC8vIFNpbmNlIHRoaXMgY2FuIHBvdGVudGlhbGx5IGJl
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yLAogICAgIC8v
IHdlIG5lZWQgdG8gcmVsZWFzZSBpdCBvbiB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaGFzIG1l
bWJlciB2YXJpYWJsZXMgKHN1Y2ggYXMgdGltZXJzKQogICAgIC8vIHRoYXQgZXhwZWN0IHRvIGJl
IGRlc3Ryb3llZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLnJlbGVhc2Uo
KS5sZWFrUmVmKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3Jd
IHsKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRlcmVmKCk7CisgICAgY2FsbE9uTWFp
blRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBXVEZNb3ZlKG1fc2Nyb2xsaW5nQ29vcmRp
bmF0b3IpXSB7CiAgICAgfSk7CiB9CiAKQEAgLTg2LDEwICs4NCw3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZUlPUzo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCwgY29uc3QKICAgICBpZiAobm9kZUlEID09IHJvb3ROb2RlKCktPnNjcm9sbGluZ05vZGVJRCgp
KQogICAgICAgICBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiAK
LSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0
b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIGJvb2wgbG9jYWxJc0hhbmRsaW5nUHJv
Z3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpOwotCi0gICAg
Y2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCwgc2Nyb2xsUG9z
aXRpb24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbl0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Njcm9sbGluZ0Nvb3JkaW5h
dG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbG9j
YWxJc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Nj
cm9sbCgpLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uXSB7CiAgICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9s
bChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3Jv
bGwsIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogICAgIH0pOwogfQpAQCAtMTIzLDgg
KzExOCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNE
aWRDaGFuZ2UoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlECiAgICAgaWYgKCFtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I+IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGlu
YXRvcjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlE
LCBob3Jpem9udGFsLCB2ZXJ0aWNhbF0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBob3Jpem9udGFs
LCB2ZXJ0aWNhbF0gewogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0QWN0aXZlU2Ny
b2xsU25hcEluZGljZXMobm9kZUlELCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IGJkODE4
NTQ4YjUzMGUwZTI0OWFhNGI2OGU0N2ExMjViZmQxNDIxMmUuLjhiM2YxY2M3MDlmMjRhNzI5Nzhi
NDUyMmU5MWE5OGEzMThlYWQwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTWFjLm1tCkBAIC03NSwxMSArNzUsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWM6OnJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxlckltcHNPblRoZU1haQog
ICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsZXJJbXAgfHwgbV9ob3Jpem9udGFsU2Nyb2xsZXJJbXAp
IHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGluIHBsYWNlIGZvciB0
aGUgdGltZSBiZWluZyBzaW5jZSBOU1Njcm9sbGVySW1wcyBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQK
ICAgICAgICAgLy8gb24gYSBub24tbWFpbiB0aHJlYWQuIHJkYXI6Ly9wcm9ibGVtLzI0NTM1MDU1
Ci0gICAgICAgIE5TU2Nyb2xsZXJJbXAgKnJldGFpbmVkVmVydGljYWxTY3JvbGxlckltcCA9IG1f
dmVydGljYWxTY3JvbGxlckltcC5sZWFrUmVmKCk7Ci0gICAgICAgIE5TU2Nyb2xsZXJJbXAgKnJl
dGFpbmVkSG9yaXpvbnRhbFNjcm9sbGVySW1wID0gbV9ob3Jpem9udGFsU2Nyb2xsZXJJbXAubGVh
a1JlZigpOwotICAgICAgICBXVEY6OmNhbGxPbk1haW5UaHJlYWQoW3JldGFpbmVkVmVydGljYWxT
Y3JvbGxlckltcCwgcmV0YWluZWRIb3Jpem9udGFsU2Nyb2xsZXJJbXBdIHsKLSAgICAgICAgICAg
IFtyZXRhaW5lZFZlcnRpY2FsU2Nyb2xsZXJJbXAgcmVsZWFzZV07Ci0gICAgICAgICAgICBbcmV0
YWluZWRIb3Jpem9udGFsU2Nyb2xsZXJJbXAgcmVsZWFzZV07CisgICAgICAgIFdURjo6Y2FsbE9u
TWFpblRocmVhZChbdmVydGljYWxTY3JvbGxlckltcCA9IFdURk1vdmUobV92ZXJ0aWNhbFNjcm9s
bGVySW1wKSwgaG9yaXpvbnRhbFNjcm9sbGVySW1wID0gV1RGTW92ZShtX2hvcml6b250YWxTY3Jv
bGxlckltcCldIHsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggMzJlYWM0NTI0Zjc2ZGFm
OWE3YWQyMjRlYzliNGU2ZTgwZDQzMzE4MC4uOTI5YTZiYzJmMGZjMDBlYjZhODFlMzZiYzg4Zjkz
NDAwMjRiOWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNo
cm8KICAgICAgICAgLy8gRmFzdE1hbGxvYyBoYXMgbG9jay1mcmVlIHRocmVhZCBzcGVjaWZpYyBj
YWNoZXMgdGhhdCBjYW4gb25seSBiZSBjbGVhcmVkIGZyb20gdGhlIHRocmVhZCBpdHNlbGYuCiAg
ICAgICAgIFdvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJl
YWRzKCk7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJl
ZU1lbW9yeSk7CisgICAgICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW10oKSB7IFdURjo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7IH0pOwogI2VuZGlmCiAgICAgICAgIFdURjo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQppbmRleCAxMmNiY2JmOGYyNjFhYmUxYWYxMjQyYjA1MjQ0ZDZkZjE2MzMxYzRhLi4xNjU5Nzdl
NTBlNGQ5ZDk5NmYxMTEzODAxZTQ4MDkwZDFhZDFkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQpAQCAtMzk2LDEwICszOTYsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOwogCiAgICAgaWYgKCFpc01haW5UaHJl
YWQoKSkgewotICAgICAgICBhdXRvIHZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KTsK
LSAgICAgICAgYXV0byByb3V0aW5nQ29udHJvbGxlciA9IFdURk1vdmUoX2FpclBsYXlQcmVzZW5j
ZVJvdXRpbmdDb250cm9sbGVyKTsKLQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt2b2x1bWVW
aWV3LCByb3V0aW5nQ29udHJvbGxlcl0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3ZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KSwgcm91dGluZ0NvbnRyb2xs
ZXIgPSBXVEZNb3ZlKF9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcildICgpIG11dGFi
bGUgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVh
bGxvY10gLSBkaXBhdGNoZWQgdG8gTWFpblRocmVhZCIpOwogCiAgICAgICAgICAgICB2b2x1bWVW
aWV3LmNsZWFyKCk7CkBAIC00MzUsOCArNDMyLDcgQEAgLSAodm9pZClzdGFydE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzCiAKICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBz
dGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwogCi0gICAgUmV0YWluUHRyPFdlYk1lZGlh
U2Vzc2lvbkhlbHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRh
aW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPihzZWxmKV0gKCkgewogICAgICAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
XSAtIGRpcGF0Y2hlZCB0byBNYWluVGhyZWFkIik7CiAKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYt
Pl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcikKQEAgLTQ1NCw4ICs0NTAsNyBAQCAt
ICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlcwogCiAgICAgTE9HKE1lZGlhLCAiLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwogCi0g
ICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPihzZWxmKV0g
KCkgewogICAgICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXNdIC0gZGlwYXRjaGVkIHRvIE1haW5UaHJlYWQiKTsKIAogICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRl
eCAzZDkwZGVkZjZjOTk3NGQ0NGUyMDJiODlmZDE4ZTg0MjQ3ZTA1NmRhLi40ZDE4MDU1Y2MzMzgy
NGQ5NWI5MzE0MTJjOTIyOWNiYTg0MmQ4NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC0zMjMsOCArMzIzLDcgQEAgdm9pZCBBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNv
bnN0IEF1ZGlvU3RyZWEKICAgICBtZW1zZXQobV9saXN0LmdldCgpLCAwLCBidWZmZXJMaXN0U2l6
ZSk7CiAgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9IG51bWJlck9mQ2hhbm5lbHM7CiAKLSAg
ICBSZWZQdHI8QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IHN0cm9uZ1RoaXMgPSB0aGlzOwot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXMsIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBs
ZVJhdGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdUaGlzID0gUmVmPEF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDPigqdGhpcyksIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGVd
IHsKICAgICAgICAgc3Ryb25nVGhpcy0+bV9jbGllbnQtPnNldEZvcm1hdChudW1iZXJPZkNoYW5u
ZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggOTg2MjExNzQ4M2I2OTUz
Y2FmNjJhOGEzMjFkMzVhNDAxMGZhMzI1Ny4uNjkyODcxYTEwZTZiZjU2NjYzMWIxOWFkNGY4M2Zm
YmEyMjhlYTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTgwNiw4ICs4MDYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbgogICAgIGlmIChkZWxheURpc3BhdGNoICYmICFtX21haW5UaHJlYWRDYWxsUGVuZGlu
ZykgewogICAgICAgICBtX21haW5UaHJlYWRDYWxsUGVuZGluZyA9IHRydWU7CiAKLSAgICAgICAg
YXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXNdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVh
dGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC04NDQsOCArODQzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKCFtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuaXNFbXB0eSgpICYmICFtX21haW5U
aHJlYWRDYWxsUGVuZGluZykgewotICAgICAgICAgICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdl
YWtQdHIoKTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CisgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewog
ICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBhMjhkOTI5NGRjOWUxZjA5YWMyNDM4ZjM2OGEyYzAyZGM5ZWI3MDlm
Li4yNjYyZTNjOTk2OWFmMTM5YTk2ODFlYWI1MWY4NjYyNTAzN2ZkMzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
ODUsNyArODUsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICop
a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICBpZiAoW1tjaGFu
Z2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0gaW50VmFsdWVdID09IDEpIHsK
ICAgICAgICAgICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQiIGNvZGU6J0hEQ1AnIHVzZXJJbmZvOm5pbF07CiAg
ICAgICAgICAgICBSZXRhaW5QdHI8V2ViQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNMaXN0ZW5l
cj4gc3Ryb25nU2VsZiA9IHsgc2VsZiB9OwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZiwgZXJyb3JdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9u
Z1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICAgICAg
ICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPnBsYXllckRpZFJlY2VpdmVFcnJvcihlcnJvci5nZXQo
KSk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCmluZGV4IDJjNzA3Nzc1ZjliMzkwOGQ4YTEx
ZGZjNGNhNjEzZGRiYzljMDRmM2MuLmE1YTI1M2I5YjU4MTU3ZTMyMjhjMzU0ZTgxNmM5ZmI0Y2Ji
M2VjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1hYy5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDooaWQpa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNE
aWN0aW9uCiAKICAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlckhl
bHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJvbmdL
ZXlQYXRoID0ga2V5UGF0aDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJv
bmdLZXlQYXRoXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUo
c3Ryb25nU2VsZiksIHN0cm9uZ0tleVBhdGggPSBXVEZNb3ZlKHN0cm9uZ0tleVBhdGgpXSB7CiAg
ICAgICAgIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMqIGNhbGxiYWNrID0gc3Ryb25nU2Vs
Zi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDdjYjAyNjZhM2RjN2RhZjhjZGI5MTA3ZGUw
ZGMzYzM1ODY5YTNiY2YuLjNjYTQ5NTMzMmRlZDNhZGI2MDU2MjcyODY5YTkxYzAzOWNlY2RmMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNzAxLDggKzcwMSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcigpCiAgICAgaWYg
KCFtX2F2UGxheWVyIHx8IG1faGF2ZUJlZW5Bc2tlZFRvQ3JlYXRlTGF5ZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDMxLDcgKzM0MzAsNyBAQCAtICh2b2lkKWxlZ2li
bGVPdXRwdXQ6KGlkKW91dHB1dCBkaWRPdXRwdXRBdHRyaWJ1dGVkU3RyaW5nczooTlNBcnJheSAq
KXN0cmluZ3MgbgogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTW92aWVPYnNlcnZlcj4gc3Ryb25n
U2VsZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHN0cm9uZ1N0cmluZ3MgPSBzdHJp
bmdzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBzdHJvbmdTYW1wbGVzID0gbmF0aXZlU2FtcGxl
czsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdTdHJpbmdzLCBzdHJv
bmdTYW1wbGVzLCBpdGVtVGltZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYg
PSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdTdHJpbmdzID0gV1RGTW92ZShzdHJvbmdTdHJp
bmdzKSwgc3Ryb25nU2FtcGxlcyA9IFdURk1vdmUoc3Ryb25nU2FtcGxlcyksIGl0ZW1UaW1lXSB7
CiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIGNhbGxiYWNrID0g
c3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM0NDcsOCArMzQ0Niw3IEBAIC0gKHZvaWQpb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOihpZClvdXRwdXQKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXI+IHN0cm9uZ1Nl
bGYgPSBzZWxmOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGZdIHsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyPihzZWxmKV0gewogICAgICAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrKQogICAgICAgICAgICAgY2Fs
bGJhY2stPmZsdXNoQ3VlcygpOwogICAgIH0pOwpAQCAtMzQ3Nyw3ICszNDc1LDcgQEAgLSAoQk9P
TClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIg
c2hvdWxkV2FpdEZvckxvYWQKIAogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTG9hZGVyRGVsZWdh
dGU+IHN0cm9uZ1NlbGYgPSBzZWxmOwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdD4gc3Ryb25nUmVxdWVzdCA9IGxvYWRpbmdSZXF1ZXN0OwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1JlcXVlc3RdIHsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25nUmVxdWVzdCA9IFdU
Rk1vdmUoc3Ryb25nUmVxdWVzdCldIHsKICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrOwogICAgICAgICBp
ZiAoIWNhbGxiYWNrKSB7CiAgICAgICAgICAgICBbc3Ryb25nUmVxdWVzdCBmaW5pc2hMb2FkaW5n
V2l0aEVycm9yOm5pbF07CkBAIC0zNTAyLDcgKzM1MDAsNyBAQCAtIChCT09MKXJlc291cmNlTG9h
ZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9y
UmVzcAogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZT4gc3Ryb25nU2Vs
ZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHN0
cm9uZ0NoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdT
ZWxmLCBzdHJvbmdDaGFsbGVuZ2VdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxm
ID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25nQ2hhbGxlbmdlID0gV1RGTW92ZShzdHJvbmdD
aGFsbGVuZ2UpXSB7CiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMq
IGNhbGxiYWNrID0gc3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFj
aykgewogICAgICAgICAgICAgW1tzdHJvbmdDaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpzdHJvbmdDaGFsbGVuZ2UuZ2V0KCldOwpAQCAtMzUyNCw3ICszNTIy
LDcgQEAgLSAodm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVz
b3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9hZGluZ1IKIAogICAgIFJldGFpblB0cjxXZWJDb3JlQVZG
TG9hZGVyRGVsZWdhdGU+IHN0cm9uZ1NlbGYgPSBzZWxmOwogICAgIFJldGFpblB0cjxBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gc3Ryb25nUmVxdWVzdCA9IGxvYWRpbmdSZXF1ZXN0Owot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1JlcXVlc3RdIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25n
UmVxdWVzdCA9IFdURk1vdmUoc3Ryb25nUmVxdWVzdCldIHsKICAgICAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNr
OwogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFjay0+ZGlkQ2FuY2Vs
TG9hZGluZ1JlcXVlc3Qoc3Ryb25nUmVxdWVzdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggMTQzYzA0NjAzZjJiN2Q2ZjQxMDUzYWVhYjM3M2Y1YTU1YzE0MjNjYi4uYTBl
MGNmOTA0NzVmZGZkNjc3YjY3Y2ZhMDQ5MzJkYTc2ZWIxZTNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtMTI5LDggKzEyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRp
YyB2b2lkIENNVGltZWJhc2VFZmZlY3RpdmVSYXRlQ2hhbmdlZENhbGxiYWNrKENNTm90aWZpY2F0
aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkICpsaXN0ZW5lciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZv
aWQgKiwgQ0ZUeXBlUmVmKQogewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyogcGxheWVyID0gKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyopbGlz
dGVuZXI7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IHBsYXllci0+Y3JlYXRlV2Vha1B0cigpOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXXsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFr
VGhpcyA9IHBsYXllci0+Y3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdlYWtUaGlzLmdldCgpLT5lZmZlY3RpdmVS
YXRlQ2hhbmdlZCgpOwpAQCAtMzEyLDggKzMxMSw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwbGF5KCkKIHsKLSAgICBh
dXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dl
YWtUaGlzXXsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIo
KV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB3ZWFrVGhpcy5nZXQoKS0+cGxheUludGVybmFsKCk7CkBAIC0zMzIsOCArMzMwLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBsYXlJbnRlcm5hbCgpCiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYXVzZSgpCiB7Ci0g
ICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpc117CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFr
UHRyKCldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgd2Vha1RoaXMuZ2V0KCktPnBhdXNlSW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKaW5kZXggN2U0MjQwM2NlYWY4NTYyNjMyNDU3ZTcxZGYwODI4NmU1ZDFmM2NkNy4uMDU3
ZDI2M2U5N2E1M2EwZTdiNjE5NTM0NjhkZWMwYmY4OTBkZjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMTQyLDcgKzE0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVUcmFja3MoKTsKICAgICB2b2lkIHJlbmRlcmluZ01vZGVDaGFu
Z2VkKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9u
JiYpOwogCiAgICAgZW51bSBEaXNwbGF5TW9kZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KaW5kZXggZThjYWJlZDhjMWQxNzIzNjZhNjhmZWYzNjc0NzQxMmJlN2Jl
OTM1OS4uYWE1ZTQ1OTIxMDkwMTcwNzRiMDUyMDgyOWIxNzI2OTllYzQ5MDE3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNjI0LDExICs2MjQsMTAgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6
TmV0d29ya1MKICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRh
c2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVu
Y3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIGF1dG8gd2Vh
a1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMs
IGZ1bmN0aW9uXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFr
UHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBjNTZmMjFmNjZjOGQ2YmY3
NTlmMDQ0MTJjZDQzYWY5Y2IwNDI3MGYxLi41NWE3NGMwZWFmNzMxOTM3ZDQxYWIyMTE0NjcxOTI2
MTczOWQxOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTgyLDcgKzE4Miw3IEBAIC0gKHZvaWQpc3RyZWFtRGF0
YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJzZVN0
cmVhbURhCiAgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBzdHJv
bmdTZWxmID0gc2VsZjsKIAogICAgIFJldGFpblB0cjxBVkFzc2V0Kj4gc3Ryb25nQXNzZXQgPSBh
c3NldDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdBc3NldF0gewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBz
dHJvbmdBc3NldCA9IFdURk1vdmUoc3Ryb25nQXNzZXQpXSB7CiAgICAgICAgIGlmIChzdHJvbmdT
ZWxmLT5fcGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChzdHJvbmdBc3NldC5nZXQoKSk7CiAgICAgfSk7CkBAIC0xOTgsNyAr
MTk4LDcgQEAgLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGEKICAgICBSZXRhaW5QdHI8V2ViQVZTdHJl
YW1EYXRhUGFyc2VyTGlzdGVuZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOwogCiAgICAgUmV0YWluUHRy
PEFWQXNzZXQqPiBzdHJvbmdBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0
cm9uZ1NlbGYsIHN0cm9uZ0Fzc2V0XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2Vs
ZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHN0cm9uZ0Fzc2V0ID0gV1RGTW92ZShzdHJvbmdBc3Nl
dCldIHsKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJv
bmdTZWxmLT5fcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHN0cm9uZ0Fzc2V0Lmdl
dCgpKTsKICAgICB9KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJz
ZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VT
dAogICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gc3Ryb25nU2Vs
ZiA9IHNlbGY7CiAKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gc3Ryb25nRXJyb3IgPSBlcnJvcjsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdFcnJvcl0geworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdF
cnJvciA9IFdURk1vdmUoc3Ryb25nRXJyb3IpXSB7CiAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5f
cGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yKHN0cm9uZ0Vycm9yLmdldCgpKTsKICAgICB9KTsKQEAgLTIyOSw3
ICsyMjksNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAq
KXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZU1lZGlhRAogCiAgICAgUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBzdHJvbmdTYW1wbGUgPSBzYW1wbGU7CiAgICAgU3RyaW5nIG1lZGlhVHlw
ZSA9IG5zTWVkaWFUeXBlOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9u
Z1NhbXBsZSwgdHJhY2tJRCwgbWVkaWFUeXBlLCBmbGFnc10geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdTYW1wbGUgPSBXVEZN
b3ZlKHN0cm9uZ1NhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSwgZmxhZ3NdIHsKICAgICAgICAg
aWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50
LT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzdHJvbmdTYW1wbGUuZ2V0
KCksIG1lZGlhVHlwZSwgZmxhZ3MpOwogICAgIH0pOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIC0gKHZv
aWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNl
ciBkaWRSZWFjaEVuZE9mVHJhCiAgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxp
c3RlbmVyPiBzdHJvbmdTZWxmID0gc2VsZjsKIAogICAgIFN0cmluZyBtZWRpYVR5cGUgPSBuc01l
ZGlhVHlwZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCB0cmFja0lELCBtZWRp
YVR5cGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJv
bmdTZWxmKSwgdHJhY2tJRCwgbWVkaWFUeXBlXSB7CiAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5f
cGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkUmVhY2hFbmRPZlRy
YWNrV2l0aFRyYWNrSUQodHJhY2tJRCwgbWVkaWFUeXBlKTsKICAgICB9KTsKQEAgLTI3Niw3ICsy
NzYsNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0
cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
c3Ryb25nRGF0YSA9IGluaXREYXRhOwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3NlbWFwaG9y
ZV90PiBoYXNTZXNzaW9uU2VtYXBob3JlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9zZW1hcGhv
cmVfY3JlYXRlKDApKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdE
YXRhLCB0cmFja0lELCAgaGFzU2Vzc2lvblNlbWFwaG9yZV0geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdEYXRhID0gV1RGTW92
ZShzdHJvbmdEYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSA9IFdURk1vdmUoaGFz
U2Vzc2lvblNlbWFwaG9yZSldIHsKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAg
ICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHN0cm9uZ0RhdGEuZ2V0KCksIHRyYWNrSUQs
IGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogICAgIH0pOwpAQCAtMzg5LDEzICszODksMTMgQEAgLSAo
dm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6
KGlkKW9iamVjdCBjaGFuZ2U6KE4KIAogICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAi
ZXJyb3IiXSkgewogICAgICAgICAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW2NoYW5n
ZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKLSAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIGxheWVyLCBlcnJvcl0geworICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIGxheWVyID0g
V1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKICAgICAgICAgICAgICAg
ICBzdHJvbmdTZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQoKSwg
ZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvOkAib3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJv
dGVjdGlvbiJdKSB7CiAgICAgICAgICAgICBpZiAoW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlW
YWx1ZUNoYW5nZU5ld0tleV0gYm9vbFZhbHVlXSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0
cjxOU0Vycm9yPiBlcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5X
ZWJLaXQiIGNvZGU6J0hEQ1AnIHVzZXJJbmZvOm5pbF07Ci0gICAgICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVycm9yXSB7CisgICAgICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIGxheWVy
ID0gV1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKICAgICAgICAgICAg
ICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+bGF5ZXJEaWRSZWNlaXZlRXJyb3IobGF5ZXIu
Z2V0KCksIGVycm9yLmdldCgpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0K
QEAgLTQwOSw3ICs0MDksNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3Ry
aW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICBBU1NF
UlQoX3JlbmRlcmVycy5jb250YWlucyhyZW5kZXJlci5nZXQoKSkpOwogICAgICAgICBBU1NFUlQo
W2tleVBhdGggaXNFcXVhbFRvOkAiZXJyb3IiXSk7CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbc3Ryb25nU2VsZiwgcmVuZGVyZXIsIGVycm9yXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCByZW5kZXJlciA9IFdURk1vdmUo
cmVuZGVyZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CiAgICAgICAgICAgICBzdHJvbmdT
ZWxmLT5fcGFyZW50LT5yZW5kZXJlckRpZFJlY2VpdmVFcnJvcihyZW5kZXJlci5nZXQoKSwgZXJy
b3IuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKQEAgLTQyMiw3ICs0MjIsNyBAQCAt
ICh2b2lkKWxheWVyRmFpbGVkVG9EZWNvZGU6KE5TTm90aWZpY2F0aW9uKilub3RlCiAgICAgUmV0
YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW1tub3RlIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckZhaWxlZFRvRGVjb2RlTm90aWZpY2F0aW9uRXJyb3JLZXld
OwogCiAgICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lcj4gc3Ryb25n
U2VsZiA9IHNlbGY7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVy
cm9yXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25n
U2VsZiksIGxheWVyID0gV1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsK
ICAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fcGFyZW50IHx8ICFzdHJvbmdTZWxmLT5fbGF5ZXJz
LmNvbnRhaW5zKGxheWVyLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3Ry
b25nU2VsZi0+X3BhcmVudC0+bGF5ZXJEaWRSZWNlaXZlRXJyb3IobGF5ZXIuZ2V0KCksIGVycm9y
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA5ZWNlYzUyMWE5ODk3NGVlNzAzZTNkNGQ5
MjMzNmQwZWE0ZGE2Y2I2Li4yMWY1MzM4YjI2ZjUzYzE1MmJkYmJlYzQ2MDFhZmI5ODc2MjVhZGQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yOTUsOCArMjk1LDcgQEAgc3RhdGljIHZvaWQgZHJh
d1BhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKIAogc3Rh
dGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogewotICAgIGF1dG8g
aW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtpbWFnZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gc3RhdGljX2Nhc3Q8
Q0dJbWFnZVJlZj4oaW5mbyldIHsKICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKaW5kZXggYjMwMzNmZTA1MTBmNzlkMjUxMmE0MDZiYjFiZGRmMjk1YWZhNWEzNC4u
YjQyOGQ1MGQ5NGJmOTI0MjgwMzI4N2QyZWVjMTZiZDY5YzUyOGQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC01Niw5ICs1
Niw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBp
bmZvKQogewotICAgIGF1dG8gaW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsK
LQotICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
aW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKV0gewogICAgICAgICBDR0ltYWdl
UmVsZWFzZShpbWFnZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IDhlNTc3ZmZhNGE4MDQ4ZDE2NGUyOWYwNmQ3NGM0
NGI4OWVjODM3N2YuLmVkMzJkMTlmNzQxNDE3ZDU5NmE5NjI4YmNjNTcyYzRmYjVjZjg4YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC00
ODYsOCArNDg2LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmVu
ZENyZWF0ZWRNZWRpYVNvdXJjZShJTUZBc3luY1Jlc3VsdCogYXMKICAgICBociA9IGFzeW5jUmVz
dWx0LT5HZXRTdGF0dXMoKTsKICAgICBtX2xvYWRpbmdQcm9ncmVzcyA9IFNVQ0NFRURFRChocik7
CiAKLSAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlm
ICghd2Vha1B0cikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2Vha1B0ci0+b25DcmVh
dGVkTWVkaWFTb3VyY2UoKTsKQEAgLTUxNiw4ICs1MTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5kR2V0RXZlbnQoSU1GQXN5bmNSZXN1bHQqIGFzeW5jUmVz
dWx0KQogCiAgICAgc3dpdGNoIChtZWRpYUV2ZW50VHlwZSkgewogICAgIGNhc2UgTUVTZXNzaW9u
VG9wb2xvZ3lTZXQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5j
cmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRl
V2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25Ub3BvbG9neVNldCgpOwpAQCAtNTI2LDgg
KzUyNCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRHZXRF
dmVudChJTUZBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQpCiAgICAgfQogCiAgICAgY2FzZSBNRUJ1
ZmZlcmluZ1N0YXJ0ZWQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9y
eS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3Jl
YXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25CdWZmZXJpbmdTdGFydGVkKCk7CkBA
IC01MzYsOCArNTMzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OmVuZEdldEV2ZW50KElNRkFzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCkKICAgICB9CiAKICAgICBj
YXNlIE1FQnVmZmVyaW5nU3RvcHBlZDogewotICAgICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQ
dHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vh
a1B0cl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFj
dG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1B0cikKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5vbkJ1ZmZlcmluZ1N0b3Bw
ZWQoKTsKQEAgLTU0Niw4ICs1NDIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6ZW5kR2V0RXZlbnQoSU1GQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0KQogICAgIH0K
IAogICAgIGNhc2UgTUVTZXNzaW9uRW5kZWQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93
ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtQdHJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0
ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25TZXNzaW9uRW5k
ZWQoKTsKQEAgLTE2NzUsOCArMTY3MCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6cHJvY2Vzc0lucHV0Tm90CiAgICAg
CiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgdmlkZW8gYXJlYQogICAgIGlmIChtX21lZGlhUGxheWVy
KSB7Ci0gICAgICAgIGF1dG8gd2Vha1B0ciA9IG1fbWVkaWFQbGF5ZXItPm1fd2Vha1B0ckZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyXSB7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtX21lZGlhUGxheWVyLT5tX3dl
YWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICAgICAgaWYgKHdlYWtQdHIp
CiAgICAgICAgICAgICAgICAgd2Vha1B0ci0+aW52YWxpZGF0ZUZyYW1lVmlldygpOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCmluZGV4IGRmNjYwNzAyNTQ1ZDllN2JkOTI4YzY1ZmU2
MDNmOTk1NTdmZmRmM2YuLjQyZDI0NjZjMmJmNjMxZjBlZmZhY2NmOTRmNDAwMjgxMGE3ZDAyNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmNwcApAQCAtMjk5LDExICsyOTksMTAgQEAgdm9pZCBNZWRpYVN0
cmVhbVByaXZhdGU6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogICAgIH0p
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQordm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNj
aGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGZ1bmN0aW9uXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92
ZShmdW5jdGlvbildIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVByaXZhdGUuaAppbmRleCA2YmFlNzNjZTkyYjFhNjA1OWYyZmM3YWVkMWQ3YjJi
OTk4OWJmODliLi5iZjJmYWUwMTBmMTEzZjQwYmVjODAyMjFhNTMzODlhYWNkNDlhNWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVByaXZhdGUuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhcmFjdGVy
aXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVmlkZW9UcmFjaygpOwogCi0g
ICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAg
IHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbiYmKTsKIAogICAg
IFdlYWtQdHJGYWN0b3J5PE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAg
ICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
LmgKaW5kZXggZmJhNTI4MzgxOTUyYTI1MmViYjU4NDM3MDQyODQxMGY0NmJkNTUyYi4uMmM5YjBk
MTA0OWZiMGQ3OGMzNzMyYzQ0NzUwMjlkZjYzZDU1MzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJl
U291cmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgi
CiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtODUsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZVZpZGVvRGF0YU91
dHB1dCopOwogICAgIHZvaWQgc2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVB
dWRpb0RhdGFPdXRwdXQqKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpm
dW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5
YWJsZUZ1bmN0aW9uJiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRp
YUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KaW5kZXggYzA2MTJjNTIzOThmMmZkNTcwNTIzOTEz
NjA0Y2IxZGM5OTdjYzMxNC4uNzkxNWE4NDJlYTgzZGQzNTdkMmI0Mjg4YTU3OWJmYzEzODBiNzZj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjQwLDEyICsyNDAsMTAgQEAg
dm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShB
VkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQKICAgICBbYXVkaW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVy
RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6Z2xvYmFBdWRpb0NhcHR1cmVTZXJp
YWxRdWV1ZSgpXTsKIH0KIAotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZl
cnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3ZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBm
dW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotCi0gICAgYXV0byB3ZWFrVGhpcyA9
IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgZnVuY3Rp
b25dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYy5jcHAKaW5kZXggMjQ5OWNmM2MzZmMzOGNjMmYyNDkwNzFjMWM4NmM0MjRlNjVkMzA4
MC4uZGVhN2E3YzI5NzRlM2Q4YTllMGRiODE3N2Q5NmI5ZTRlMmYxOGMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMTYzLDEwICsxNjMsOSBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqCiBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsK
LQogICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBzb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8ocmVxdWVzdENsaWVudC0+cmVxdWVzdE9y
aWdpbigpKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQsIHNv
dXJjZXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCByZXF1ZXN0Q2xpZW50ID0gV1RG
TW92ZShyZXF1ZXN0Q2xpZW50KSwgc291cmNlcyA9IFdURk1vdmUoc291cmNlcyldIHsKICAgICAg
ICAgcmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KHNvdXJj
ZXMpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9i
akMubW0KaW5kZXggN2I4ZDYxY2FlMDkyOWZkYWY0NjA3MGU1YTc3NzBmMmUzZWU4ODE1ZC4uMmU2
YzM3YTlhNmZmZTEzOTNiMGM2NDA4ZTJmNGIxYmYyNzY2NjEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9X
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBmCiAgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9IG51bWJlck9m
Q2hhbm5lbHM7CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IHN0
cm9uZ1RoaXMgPSB0aGlzOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXMsIG51bWJl
ck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdU
aGlzID0gV1RGTW92ZShzdHJvbmdUaGlzKSwgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0g
ewogICAgICAgICBpZiAoc3Ryb25nVGhpcy0+bV9jbGllbnQpCiAgICAgICAgICAgICBzdHJvbmdU
aGlzLT5tX2NsaWVudC0+c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA5MDkzNTc5NDhkNThhMTVl
MDdjYTM3OTZjMzgwZTEzOGZlOGY1MzJiLi5hYWU4MDgzOTExNWZmOWJhZmI5NDhjODI1NmYzODM0
YjQ4Yjg2ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMTU5LDcgKzE1OSw3
IEBAIGJvb2wgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmdldE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTCiAgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291cmNlV2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6bW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCksIG51bGxwdHIpKTsKICAgICBzb3VyY2Vz
LmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgbnVsbHB0
cikpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCwgc291cmNl
c10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQgPSBXVEZNb3Zl
KHJlcXVlc3RDbGllbnQpLCBzb3VyY2VzID0gV1RGTW92ZShzb3VyY2VzKV0gewogICAgICAgICBy
ZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3Qoc291cmNlcyk7
CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCA1M2ViMjVhMDRkMTE0YmIwY2M1OGRhN2ZlYjE1
YmJhMWY3Yzc0NTkzLi40ODRlOTIxZWM3NTQ4YmI2YzMzYTI2NDQ4ZTZkNzc2NzRhNTczZDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwCkBAIC0xODcsMTAgKzE4Nyw4IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxl
OjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8QmxvYlJlc291
cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCiAgICAgLy8gRmluaXNoIHRoaXMgYXN5
bmMgY2FsbCBxdWlja2x5IGFuZCByZXR1cm4uCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8Qmxv
YlJlc291cmNlSGFuZGxlPigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRvU3RhcnQoKTsKICAgICB9KTsKIH0KQEAgLTY2NSw5ICs2NjMsOCBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6bm90aWZ5RmluaXNoKCkKIAogICAgIC8vIFNjaGVkdWxlIHRvIG5vdGlm
eSB0aGUgY2xpZW50IGZyb20gYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNsaWVu
dCBtaWdodCBkaXNwb3NlIHRoZSBoYW5kbGUgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY2FsbGJhY2sg
ZnVuY3Rpb24KICAgICAvLyB3aGlsZSB3ZSBzdGlsbCBoYXZlIEJsb2JSZXNvdXJjZUhhbmRsZSBj
YWxscyBpbiB0aGUgc3RhY2suCi0gICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7Ci0g
ICAgICAgIGRvTm90aWZ5RmluaXNoKCpwcm90ZWN0ZWRUaGlzKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4oKnRoaXMpXSgpIG11
dGFibGUgeworICAgICAgICBkb05vdGlmeUZpbmlzaChwcm90ZWN0ZWRUaGlzKTsKICAgICB9KTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmNwcAppbmRleCBlNDBlZDNmOGEwMDVmNmMwMmFlMmQwMzQ2YThkMzZlNGQ4ZWIyMmQxLi43
Nzk4ZjkxOWU5NGZlYmUwOWJjMGMxODRkNjdkODljODdkZDc0MGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTY4LDI1
ICsxNjgsMjEgQEAgc3RhdGljIHZvaWQgZGVjb2RlRXNjYXBlZChEZWNvZGVUYXNrJiB0YXNrKQog
ICAgIHRhc2sucmVzdWx0LmRhdGEgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7
CiB9CiAKLXZvaWQgZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQm
IHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIGRlY29kZShjb25zdCBVUkwmIHVybCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBz
Y2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIAogICAgIGF1dG8gZGVj
b2RlVGFzayA9IGNyZWF0ZURlY29kZVRhc2sodXJsLCBzY2hlZHVsZUNvbnRleHQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBhdXRvKiBkZWNvZGVUYXNrUHRyID0gZGVjb2RlVGFz
ay5yZWxlYXNlKCk7Ci0gICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFza1B0cl0g
ewotICAgICAgICBhdXRvJiBkZWNvZGVUYXNrID0gKmRlY29kZVRhc2tQdHI7Ci0KLSAgICAgICAg
aWYgKGRlY29kZVRhc2suaXNCYXNlNjQpCi0gICAgICAgICAgICBkZWNvZGVCYXNlNjQoZGVjb2Rl
VGFzayk7CisgICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFzayA9IFdURk1vdmUo
ZGVjb2RlVGFzayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChkZWNvZGVUYXNrLT5pc0Jhc2U2
NCkKKyAgICAgICAgICAgIGRlY29kZUJhc2U2NCgqZGVjb2RlVGFzayk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGRlY29kZUVzY2FwZWQoZGVjb2RlVGFzayk7CisgICAgICAgICAgICBkZWNv
ZGVFc2NhcGVkKCpkZWNvZGVUYXNrKTsKIAogI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICAg
ICAgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyOjpkaXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2RlVGFzaz4oZGVjb2RlVGFza1B0cikpOworICAgICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNo
ZXI6OmRpc3BhdGNoKFdURk1vdmUoZGVjb2RlVGFzaykpOwogI2Vsc2UKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZGVjb2RlVGFza1B0cl0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PERlY29kZVRhc2s+IGRlY29kZVRhc2soZGVjb2RlVGFza1B0cik7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2RlY29kZVRhc2sgPSBXVEZNb3ZlKGRlY29kZVRhc2spXSB7CiAgICAgICAgICAg
ICBpZiAoIWRlY29kZVRhc2stPnJlc3VsdC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgZGVjb2Rl
VGFzay0+Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5k
ZXggNjQzMzM3Njc0MGRkZDU2MDAwN2VjZTQyZmNkNzM4M2M5NmZhZmU5NC4uNGMwMTEyMTA4MTg1
NDg1NzYxNTkzYTQzOTY1NmNjYWM4NzZjNWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3Qg
U2NoZWR1bGVDb250ZXh0IHsKICNlbmRpZgogfTsKIAotdm9pZCBkZWNvZGUoY29uc3QgVVJMJiwg
Y29uc3QgU2NoZWR1bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIpOwordm9pZCBk
ZWNvZGUoY29uc3QgVVJMJiwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlv
bkhhbmRsZXImJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGE3MzY3NWEy
ODcxMGQ1YTI5YWNkMzU5NThlZDBiYTFjMTEyY2Y0ZGQuLmJjZWIyMmQ1MTAxYjM1Mzk4NzcxY2Zh
MzExYWUzMWI0MzdiN2RlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkyLDEwICs5
Miw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIGZvciAoYXV0byYgdGFzayA6IF9kYXRhVGFza3Mp
CiAgICAgICAgIHRhc2suZ2V0KCkuc2Vzc2lvbiA9IG5pbDsKIAotICAgIC8vIEZJWE1FKEMrKzE0
KTogV2hlbiB3ZSBjYW4gbW92ZSBSZWZQdHJzIGRpcmVjdGx5IGludG8gYmxvY2tzLCByZXBsYWNl
IHRoaXMgd2l0aCBhIFJlZlB0ciYmOgotICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlciogbG9hZGVyID0gX2xvYWRlci5sZWFrUmVmKCk7Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbbG9hZGVyXSB7Ci0gICAgICAgIGxvYWRlci0+ZGVyZWYoKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2FkZXIpXSB7CiAgICAgfSk7CiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQpAQCAtNDY2LDggKzQ2Myw3IEBAIC0gKE5TVVJMUmVzcG9uc2UgKilyZXNwb25z
ZQogLSAodm9pZCljYW5jZWwKIHsKICAgICBzZWxmLnN0YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0
YXRlQ2FuY2VsaW5nOwotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+
IHN0cm9uZ1NlbGYgeyBzZWxmIH07Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrPihzZWxmKV0gewogICAgICAgICBbc3Ryb25nU2VsZiBfY2FuY2Vs
XTsKICAgICAgICAgW3N0cm9uZ1NlbGYgX2ZpbmlzaF07CiAgICAgfSk7CkBAIC00NzUsOCArNDcx
LDcgQEAgLSAodm9pZCljYW5jZWwKIAogLSAodm9pZClzdXNwZW5kCiB7Ci0gICAgUmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKLSAgICBj
YWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ry
b25nU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7
CiAgICAgICAgIC8vIE5TVVJMU2Vzc2lvbkRhdGFUYXNrcyBtdXN0IHN0YXJ0IG92ZXIgYWZ0ZXIg
c3VzcGVuZGluZywgc28gd2hpbGUKICAgICAgICAgLy8gd2UgY291bGQgZGVmZXIgbG9hZGluZyBh
dCB0aGlzIHBvaW50LCBpbnN0ZWFkIGNhbmNlbCBhbmQgcmVzdGFydAogICAgICAgICAvLyB1cG9u
IHJlc3VtZSBzbyBhcyB0byBhZGhlcmUgdG8gTlNVUkxTZXNzaW9uRGF0YVRhc2sgc2VtYW50aWNz
LgpAQCAtNDg3LDggKzQ4Miw3IEBAIC0gKHZvaWQpc3VzcGVuZAogCiAtICh2b2lkKXJlc3VtZQog
ewotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYg
eyBzZWxmIH07Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0geworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrPihzZWxmKV0gewogICAgICAgICBpZiAoc3Ryb25nU2VsZi5nZXQoKS5zdGF0ZSAhPSBO
U1VSTFNlc3Npb25UYXNrU3RhdGVTdXNwZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9h
ZC5jcHAKaW5kZXggYzZjODc5N2JiY2EwMmM5NTliZDUzM2U2NDhlY2U0ZDcxZjRhNDc4MC4uZGNk
NmI4ZGFjNmM1MWYyODU1MWM4YmM0YTg5MWM5MWQ2MzBjMTVhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTQw
MiwxMCArNDAyLDggQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3Qg
U3RyaW5nJiBoZWFkZXIpCiAgICAgICAgIENVUkxjb2RlIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZv
KG1fY3VybEhhbmRsZSwgQ1VSTElORk9fUkVTUE9OU0VfQ09ERSwgJmh0dHBDb2RlKTsKIAogICAg
ICAgICBpZiAoaHR0cENvZGUgPj0gMjAwICYmIGh0dHBDb2RlIDwgMzAwKSB7Ci0gICAgICAgICAg
ICBVUkxDYXB0dXJlIGNhcHR1cmVkVXJsKGdldEN1cmxFZmZlY3RpdmVVUkwobV9jdXJsSGFuZGxl
KSk7Ci0gICAgICAgICAgICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjYXB0dXJlZFVybCwgcHJv
dGVjdGVkVGhpc10geworICAgICAgICAgICAgVVJMIHVybCA9IGdldEN1cmxFZmZlY3RpdmVVUkwo
bV9jdXJsSGFuZGxlKTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHVybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgcHJvdGVjdGVkVGhpcyA9IFJlZjxDdXJsRG93bmxvYWQ+KCp0
aGlzKV0gewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKGNhcHR1cmVkVXJsLnVy
bCgpKTsKICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVu
Y29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkpOwpAQCAtNDE0LDE0ICs0MTIs
MTAgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBo
ZWFkZXIpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAg
IFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRIZWFkZXIoaGVhZGVyKTsKLQotICAgICAgICBSZWZQdHI8
Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCi0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIGNhcHR1cmVkSGVhZGVyLCBwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgICAg
ICBpbnQgc3BsaXRQb3MgPSBjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5maW5kKCI6Iik7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGhlYWRlciA9IGhlYWRlci5pc29sYXRlZENvcHko
KSwgcHJvdGVjdGVkVGhpcyA9IFJlZjxDdXJsRG93bmxvYWQ+KCp0aGlzKV0geworICAgICAgICAg
ICAgaW50IHNwbGl0UG9zID0gaGVhZGVyLnN0cmluZygpLmZpbmQoIjoiKTsKICAgICAgICAgICAg
IGlmIChzcGxpdFBvcyAhPSAtMSkKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5sZWZ0KHNwbGl0UG9zKSwgY2FwdHVy
ZWRIZWFkZXIuc3RyaW5nKCkuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3RyaXBXaGl0ZVNwYWNl
KCkpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGhlYWRl
ci5zdHJpbmcoKS5sZWZ0KHNwbGl0UG9zKSwgaGVhZGVyLnN0cmluZygpLnN1YnN0cmluZyhzcGxp
dFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBiNWNjZjViYTM5OGQz
M2IzMzk1NGU1NDI1MWU0NGEwYTliMzU4MDJlLi41MjRmYTI2ZGZkMzc1MzhlZTFlOGU0N2UwMjA2
ZjI0ZWMyNThkMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNw
cApAQCAtNTE0LDEwICs1MTQsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlE
YXRhYmFzZSgpCiAgICAgICAgIHF1ZXJ5LmZpbmFsaXplKCk7CiAgICAgICAgIG1fZGF0YWJhc2Uu
Y2xvc2UoKTsKICAgICAgICAgaWYgKFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuaXNBY3RpdmUo
KSkgewotICAgICAgICAgICAgU3RyaW5nSW1wbCogZGF0YWJhc2VJZGVudGlmaWVyQ29weSA9ICZt
X2RhdGFiYXNlSWRlbnRpZmllci5pbXBsKCktPmlzb2xhdGVkQ29weSgpLmxlYWtSZWYoKTsKLSAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RhdGFiYXNlSWRlbnRpZmllckNvcHldIHsKLSAg
ICAgICAgICAgICAgICBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbldpdGhJ
ZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllckNvcHkpOwotICAgICAgICAgICAgICAgIGRhdGFi
YXNlSWRlbnRpZmllckNvcHktPmRlcmVmKCk7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtkYXRhYmFzZUlkZW50aWZpZXIgPSBtX2RhdGFiYXNlSWRlbnRpZmllci5pc29sYXRlZENvcHko
KV0geworICAgICAgICAgICAgICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3Jp
Z2luV2l0aElkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGRhdGFiYXNlRmlsZW5hbWUgPSBt
X3N5bmNNYW5hZ2VyLT5mdWxsRGF0YWJhc2VGaWxlbmFtZShtX2RhdGFiYXNlSWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDAz
NmQ2YmE2OTZmMDA4OGNjZjc0ZDZhYWE1OWYzY2ExNjI5OGQzYzAuLjNlMWYxYzQwMmFkYmJlMmZl
YmE4ODU1OGNiNWYwNGNlNDgxYjUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlU3luY01hbmFnZXIuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgU3RyaW5nIFN0b3JhZ2VTeW5j
TWFuYWdlcjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50
aWZpZXIKICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJh
c2VJZGVudGlmaWVyICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAotdm9pZCBTdG9yYWdlU3luY01h
bmFnZXI6OmRpc3BhdGNoKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKQor
dm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBm
dW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3Ro
cmVhZCk7CiAKICAgICBpZiAobV90aHJlYWQpCi0gICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChm
dW5jdGlvbik7CisgICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiB9CiAKIHZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKaW5kZXggMDI4NzcyMTA1ZjIyZGEzMjk1MDMwNTNk
OWRiYjU0MWI5M2Y3OTM5OC4uODc3ZGY3MDFhMTMxMTJkZDg0ZDkzNWEyMDgxOTAzNjE2YTQyZDQy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNDIsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9y
YWdlU3luY01hbmFnZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIH5TdG9yYWdl
U3luY01hbmFnZXIoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiYpOworICAgIHZvaWQgZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYmKTsKICAg
ICB2b2lkIGNsb3NlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRo
cmVhZC5jcHAKaW5kZXggOGNhOGJjZWQ4MDk4MjJmZjY2N2UzZDMxZWI3Mjk0NjBkZGVkZmQxNC4u
NzRlYTg1ZjJlMzZhMjIxYWQ3NTI0ZmVlYTdhMjEwYjE4ZjQxZDQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNzQsMTEgKzc0LDExIEBAIHZvaWQgU3RvcmFn
ZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludCgpCiAgICAgfQogfQogCi12b2lkIFN0b3JhZ2VUaHJl
YWQ6OmRpc3BhdGNoKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKQordm9p
ZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24p
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2ls
bGVkKCkgJiYgbV90aHJlYWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PihmdW5jdGlvbikpOworICAgIG1fcXVldWUuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlvbj4oV1RGTW92ZShmdW5jdGlvbikp
KTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQpAQCAtOTAsNyArOTAsNyBA
QCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAgaWYgKCFtX3RocmVhZElEKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPihbdGhpc10gewogICAgICAgICBwZXJmb3Jt
VGVybWluYXRlKCk7CiAgICAgfSkpOwogICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fdGhy
ZWFkSUQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKICAgICBIYXNoU2V0PFN0b3JhZ2VUaHJl
YWQqPiYgdGhyZWFkcyA9IGFjdGl2ZVN0b3JhZ2VUaHJlYWRzKCk7CiAKICAgICBmb3IgKEhhc2hT
ZXQ8U3RvcmFnZVRocmVhZCo+OjppdGVyYXRvciBpdCA9IHRocmVhZHMuYmVnaW4oKSwgZW5kID0g
dGhyZWFkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+ZGlzcGF0Y2go
V1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkpOworICAgICAgICAoKml0KS0+ZGlzcGF0
Y2goW10oKSB7IFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7IH0pOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAppbmRleCBkZjUyYWM2MTIxYzg0NjZk
NDg2ZTRhNGRjOWVmM2E0ZTI4ODczZmU1Li5lZDAxYzFjOTQ5ODQyYmQ0NjQ4NzRjY2MzYTQ1YjQy
YjI2MDM0MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgKQEAgLTI3LDkg
KzI3LDkgQEAKICNkZWZpbmUgU3RvcmFnZVRocmVhZF9oCiAKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHRlcm1p
bmF0ZSgpOwogCi0gICAgdm9pZCBkaXNwYXRjaChjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
KTsKKyAgICB2b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb24mJik7CiAKICAgICBzdGF0
aWMgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKIApAQCAt
NTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVRlcm1pbmF0ZSgpOwogCiAg
ICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3NhZ2VRdWV1ZTxzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4+IG1fcXVldWU7CisgICAgTWVzc2FnZVF1ZXVlPE5vbmNvcHlhYmxlRnVu
Y3Rpb24+IG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCA4ZDgwZDRkZDA2NjQ5ZTNjMGRiMzNj
NDgwZjcyOTVhZjIwMWM2ZjNmLi45YjM2YTczZWY4NzY3NDBkM2RiNDNlMWE5MzhmOWZhOWJiNWYy
YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTI5Myw5
ICsyOTMsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJE
YXRhYmFzZSgpCiAgICAgICAgIGlmIChmb3VuZE9yaWdpbnMuY29udGFpbnMob3JpZ2luSWRlbnRp
ZmllcikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgb3JpZ2luSWRl
bnRpZmllckNvcHkgPSBvcmlnaW5JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOwotICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCBvcmlnaW5JZGVudGlmaWVyQ29weV0gewotICAgICAgICAg
ICAgZGVsZXRlT3JpZ2luV2l0aElkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllckNvcHkpOworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luSWRl
bnRpZmllci5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgZGVsZXRlT3JpZ2luV2l0aElk
ZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcik7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTMx
NCwxOSArMzEzLDE3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldE9yaWdpbkRldGFpbHMoY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpCiAgICAgICAgIG1fb3JpZ2lu
U2V0LmFkZChvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBTdHJpbmcgb3JpZ2luSWRl
bnRpZmllckNvcHkgPSBvcmlnaW5JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOwotICAgIFN0cmlu
ZyBkYXRhYmFzZUZpbGVDb3B5ID0gZGF0YWJhc2VGaWxlLmlzb2xhdGVkQ29weSgpOwotICAgIGF1
dG8gZnVuY3Rpb24gPSBbdGhpcywgb3JpZ2luSWRlbnRpZmllckNvcHksIGRhdGFiYXNlRmlsZUNv
cHldIHsKLSAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRlbnRpZmllckNvcHks
IGRhdGFiYXNlRmlsZUNvcHkpOworICAgIGF1dG8gZnVuY3Rpb24gPSBbdGhpcywgb3JpZ2luSWRl
bnRpZmllciA9IG9yaWdpbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGRhdGFiYXNlRmlsZSA9
IGRhdGFiYXNlRmlsZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBzeW5jU2V0T3JpZ2luRGV0
YWlscyhvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZUZpbGUpOwogICAgIH07CiAKICAgICBpZiAo
aXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgQVNTRVJUKG1fdGhyZWFkKTsKLSAgICAgICAgbV90
aHJlYWQtPmRpc3BhdGNoKGZ1bmN0aW9uKTsKKyAgICAgICAgbV90aHJlYWQtPmRpc3BhdGNoKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogVGhpcyB3
ZWlyZCBwaW5nLXBvbmdpbmcgd2FzIGRvbmUgdG8gZml4IGEgZGVhZGxvY2suIFdlIHNob3VsZCBm
aWd1cmUgb3V0IGEgY2xlYW5lciB3YXkgdG8gYXZvaWQgaXQgaW5zdGVhZC4KLSAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgZnVuY3Rpb25dIHsKLSAgICAgICAgICAgIG1fdGhyZWFkLT5k
aXNwYXRjaChmdW5jdGlvbik7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGZ1bmN0
aW9uID0gV1RGTW92ZShmdW5jdGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3RocmVh
ZC0+ZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlvbikpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50Lm1tCmluZGV4IGRlYjRlNDEyZjJjODc3NWYyM2QxZjZlMmM3M2ViZmU4NjQyYzIxYWEuLjY4
MDMxYzFmODZhNDA4MmJhYWUwMmM5ODYwNzRjNWRkZGRkZDE2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCkBAIC0x
MDMsMjAgKzEwMywxOSBAQCBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQqIGNsaWVudCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICB7Ci0gICAgICAgIERpZE1v
ZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQgPSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShjbGllbnQs
IG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250
ZXh0XSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWRNb2RpZnlPcmlnaW5EYXRhPiBjb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdp
bi0+aXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0g
V1RGTW92ZShjb250ZXh0KV0gewogICAgICAgICAgICAgY29udGV4dC0+Y2xpZW50LT5kaXNwYXRj
aERpZE1vZGlmeU9yaWdpbihjb250ZXh0LT5vcmlnaW4uZ2V0KCkpOwotICAgICAgICAgICAgZGVs
ZXRlIGNvbnRleHQ7CiAgICAgICAgIH0pOwogICAgIH0KIAotcHJpdmF0ZToKICAgICBEaWRNb2Rp
ZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCiAgICAgICAgIDogY2xpZW50KGNsaWVudCkKICAgICAg
ICAgLCBvcmlnaW4ob3JpZ2luKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQ7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9y
YWdlVHJhY2tlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFn
ZVRyYWNrZXJDbGllbnQubW0KaW5kZXggN2U1ZDk5MTgxOTM3MDMzZjU4ZDQ5MjM2OGU0ZDlkZTZh
MWU2MjE3NS4uZDY4MGJjNDU3ZDFiYzlhODYzNDNlNDU3NTljNzNkODM4MmJmOWFkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tlckNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50
Lm1tCkBAIC01OCwxNSArNTgsMTUgQEAgdm9pZCBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6ZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4KIAogdm9pZCBX
ZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2lu
SWRlbnRpZmllcik7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKIAogICAgIGlmIChpc01haW5U
aHJlYWQoKSkgewotICAgICAgICBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW4pOworICAg
ICAgICBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXVEZNb3ZlKG9yaWdpbikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbb3JpZ2luXSB7Ci0gICAgICAg
IFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJTdG9yYWdlVHJhY2tlckNsaWVudCgp
LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIGNhbGxPbk1haW5U
aHJlYWQoW29yaWdpbiA9IFdURk1vdmUob3JpZ2luKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgV2Vi
U3RvcmFnZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50KCktPmRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdURk1vdmUob3JpZ2luKSk7CiAgICAgfSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280016</attachid>
            <date>2016-05-27 19:01:50 -0700</date>
            <delta_ts>2016-05-27 19:27:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158166-20160527190259.patch</filename>
            <type>text/plain</type>
            <size>101286</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRkNDNkZWE5MDg4OGMwNTkwYzIzMzUx
NDIxYjAyNmIyZTA2MGNlNDQuLjdiOTMxNDdiNzZiMDcyNGJiNTE2OTMxMTk4YTlhZGJjNTZjMmM4
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzcgQEAKIDIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAorICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5
IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkgY2Fw
dHVyZWQgbGFtYmRhIHZhcmlhYmxlcy4gVGhpcworICAgICAgICBmdW5jdGlvbiBpcyB1c3VhbGx5
IGNhbGxlZCBjcm9zcy10aHJlYWQgd2l0aCBhIGxhbWJkYSBhbmQgY29weWluZworICAgICAgICB0
aGUgbGFtYmRhIChhbmQgaXRzIGNhcHR1cmVkIHZhcmlhYmxlcykgY2FuIGxlYWQgdG8gdGhyZWFk
LXNhZmV0eQorICAgICAgICBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIGNh
bGxPbk1haW5UaHJlYWQoKSB0byB0YWtlIGEgTm9uY29weWFibGVGdW5jdGlvbiYmCisgICAgICAg
IGluIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgc3RkOjpmdW5jdGlvbi4gVGhlIGNhbGwgc2l0ZXMg
b2YKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQgdG8g
dXNlIEMrKzE0J3MgbGFtYmRhCisgICAgICAgIGNhcHR1cmUgd2l0aCBpbml0aWFsaXplci4KKwor
ICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogd3Rm
L0Z1bmN0aW9uRGlzcGF0Y2hlci5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6CisgICAg
ICAgIC0gTW92ZWQgTm9uY29weWFibGVGdW5jdGlvbiBmcm9tIEZ1bmN0aW9uRGlzcGF0Y2hlci5o
IHRvIEZ1bmN0aW9uYWwuaCwKKyAgICAgICAgICBhcyBzdWdnZXN0ZWQgYnkgQW5kZXJzLgorICAg
ICAgICAtIEFkZCBhIG5ldyBvcGVyYXRvcj0obnVsbHB0cl90KSBvcGVyYXRvciB0byBOb25jb3B5
YWJsZUZ1bmN0aW9uIHRvCisgICAgICAgICAgbWF0Y2ggc3RkOjpmdW5jdGlvbiwgYXMgb25lIG9m
IHRoZSBjYWxsIHNpdGVzIG5lZWRlZCBpdC4KKworICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNw
cDoKKyAgICAgICAgKFdURjo6ZnVuY3Rpb25RdWV1ZSk6CisgICAgICAgIChXVEY6OmRpc3BhdGNo
RnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpOgorICAgICAgICAoV1RGOjpjYWxsT25NYWluVGhyZWFk
KToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorCisyMDE2LTA1LTI3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgV29ya1F1ZXVlOjpkaXNwYXRjaCgpIC8g
UnVuTG9vcDo6ZGlzcGF0Y2goKSBzaG91bGQgbm90IGNvcHkgY2FwdHVyZWQgbGFtYmRhIHZhcmlh
YmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4
MTExCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA0ZmRiMmJjNWViMjU0YjE4NGFiMzY1ZGQ3ODQ1N2RhODdlZDQx
ZTVjLi4yNTQzMGEwYzkyYmEzYzFkYWU3YWM0ZmViNTJhNjZjODJkYzczZGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQzIEBACisyMDE2LTA1LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIHNob3VsZCBub3QgY29weSBjYXB0
dXJlZCBsYW1iZGEgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTgxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVk
IGxhbWJkYSB2YXJpYWJsZXMuIFRoaXMgCisgICAgICAgIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2Fs
bGVkIGNyb3NzLXRocmVhZCB3aXRoIGEgbGFtYmRhIGFuZCBjb3B5aW5nCisgICAgICAgIHRoZSBs
YW1iZGEgKGFuZCBpdHMgY2FwdHVyZWQgdmFyaWFibGVzKSBjYW4gbGVhZCB0byB0aHJlYWQtc2Fm
ZXR5CisgICAgICAgIGlzc3Vlcy4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FsbE9u
TWFpblRocmVhZCgpIHRvIHRha2UgYSBOb25jb3B5YWJsZUZ1bmN0aW9uJiYKKyAgICAgICAgaW4g
cGFyYW1ldGVyIGluc3RlYWQgb2YgYSBzdGQ6OmZ1bmN0aW9uLiBUaGUgY2FsbCBzaXRlcyBvZgor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0byB1c2Ug
QysrMTQncyBsYW1iZGEKKyAgICAgICAgY2FwdHVyZSB3aXRoIGluaXRpYWxpemVyLgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVBlcm1pc3Npb25DaGVjayk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYWNrU291cmNl
SW5mb1JlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6cnVuVGFzayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dDo6Y29uc3RyYWludHNWYWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdDo6dXNlck1lZGlhQWNjZXNzR3JhbnRlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzY2hl
ZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzUGxh
eWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU2Ny
aXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0
U2NyaXB0KToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVT
dHJlYW06OnBlcmZvcm0pOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6Cisg
ICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJs
b2JTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlOjpkaXNwYXRjaERpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGlzcGF0Y2hEaWRJbXBvcnRJY29uRGF0
YUZvclBhZ2VVUkxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2UvUmVzb3VyY2VVc2FnZVRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlP
YnNlcnZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVhZDo6dGhyZWFk
Qm9keSk6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhy
ZWFkOjpkaXNwYXRjaEJhcnJpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFk
OjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJ
T1M6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUlPUzo6c2Ny
b2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUlPUzo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYzo6cmVsZWFzZVJlZmVyZW5jZXNUb1Njcm9sbGVySW1wc09uVGhlTWFpblRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6CisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRp
c3BhdGNoTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKC1bV2Vi
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNMaXN0ZW5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW06CisgICAg
ICAgICgtW1dlYkFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJIZWxwZXIgb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcik6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9i
c2VydmVyIGxlZ2libGVPdXRwdXQ6ZGlkT3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6bmF0aXZlU2Ft
cGxlQnVmZmVyczpmb3JJdGVtVGltZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2Jz
ZXJ2ZXIgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZG
TG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVl
c3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgcmVz
b3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVy
OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZWJhc2VFZmZlY3RpdmVSYXRlQ2hhbmdlZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnBhdXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0Ol0pOgorICAgICAgICAoLVtX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQ6d2l0aERpc2NvbnRpbnVpdHk6XSk6CisgICAgICAgICgtW1dlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkRmFpbFRvUGFyc2VTdHJl
YW1EYXRhV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVNZWRpYURhdGE6Zm9yVHJhY2tJRDptZWRp
YVR5cGU6ZmxhZ3M6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
IHN0cmVhbURhdGFQYXJzZXI6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQ6bWVkaWFUeXBl
Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRh
UGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JU
cmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAg
KC1bV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGxheWVyRmFpbGVkVG9EZWNvZGU6XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRDcmVhdGVkTWVkaWFTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRH
ZXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpwcm9jZXNzSW5wdXROb3RpZnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJl
ZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Z2V0
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRs
ZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlG
aW5pc2gpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJM
U2Vzc2lvbiBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
ayBjYW5jZWxdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHN1c3Bl
bmRdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc3VtZV0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOiBEZWxldGVkLgorCiAyMDE2LTA1
LTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVt
cHQgdG8gZml4IHRoZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2MzM2MjRlYWZjZTFiNWY2MTQ5
NTI0M2E5NGRjMzk2NWQ5YTY0M2EuLjkzMzhmOTA1YzFkYmM1MzUzZGFiMzg1ZjMwMjBlY2FjMjE2
NjJjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTYtMDUtMjcgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxk
IG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90
IGNvcHkgY2FwdHVyZWQgbGFtYmRhIHZhcmlhYmxlcy4gVGhpcyAKKyAgICAgICAgZnVuY3Rpb24g
aXMgdXN1YWxseSBjYWxsZWQgY3Jvc3MtdGhyZWFkIHdpdGggYSBsYW1iZGEgYW5kIGNvcHlpbmcK
KyAgICAgICAgdGhlIGxhbWJkYSAoYW5kIGl0cyBjYXB0dXJlZCB2YXJpYWJsZXMpIGNhbiBsZWFk
IHRvIHRocmVhZC1zYWZldHkKKyAgICAgICAgaXNzdWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
dXBkYXRlcyBjYWxsT25NYWluVGhyZWFkKCkgdG8gdGFrZSBhIE5vbmNvcHlhYmxlRnVuY3Rpb24m
JgorICAgICAgICBpbiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHN0ZDo6ZnVuY3Rpb24uIFRoZSBj
YWxsIHNpdGVzIG9mCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBoYXZlIGFsc28gYmVlbiB1
cGRhdGVkIHRvIHVzZSBDKysxNCdzIGxhbWJkYQorICAgICAgICBjYXB0dXJlIHdpdGggaW5pdGlh
bGl6ZXIuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UpOgorICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VTeW5jTWFuYWdlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhy
ZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVt
QW5kVHJhY2tlckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpz
ZXRPcmlnaW5EZXRhaWxzKToKKwogMjAxNi0wNS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCBjZDE4OTM1YWY0NzcyOGY1OWM1YWVjOWU1ZGE0ZmM4MTE0YzFjNjkyLi5mYjdi
MDQxNzdhMDVmYjE5OGFhYzE1N2QyMjM0ZTk2MWI5YzE1MTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVk
IGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkgY2FwdHVyZWQgbGFt
YmRhIHZhcmlhYmxlcy4gVGhpcyAKKyAgICAgICAgZnVuY3Rpb24gaXMgdXN1YWxseSBjYWxsZWQg
Y3Jvc3MtdGhyZWFkIHdpdGggYSBsYW1iZGEgYW5kIGNvcHlpbmcKKyAgICAgICAgdGhlIGxhbWJk
YSAoYW5kIGl0cyBjYXB0dXJlZCB2YXJpYWJsZXMpIGNhbiBsZWFkIHRvIHRocmVhZC1zYWZldHkK
KyAgICAgICAgaXNzdWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBjYWxsT25NYWlu
VGhyZWFkKCkgdG8gdGFrZSBhIE5vbmNvcHlhYmxlRnVuY3Rpb24mJgorICAgICAgICBpbiBwYXJh
bWV0ZXIgaW5zdGVhZCBvZiBhIHN0ZDo6ZnVuY3Rpb24uIFRoZSBjYWxsIHNpdGVzIG9mCisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoKSBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvIHVzZSBDKysx
NCdzIGxhbWJkYQorICAgICAgICBjYXB0dXJlIHdpdGggaW5pdGlhbGl6ZXIuCisKKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERpZE1vZGlmeU9y
aWdpbkRhdGE6OkRpZE1vZGlmeU9yaWdpbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3Jh
Z2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW06CisgICAgICAgIChXZWJTdG9yYWdlVHJhY2tl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4pOgorCiAyMDE2LTA1LTI2ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBxdWVyaWVzIGFuZCBwbGF0
Zm9ybSBzY3JlZW4gbW9kZXJuaXphdGlvbiBhbmQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZGRiZGEzZDY3MmVmNzRhZDJlOTYxMTNi
NGNkZGY5ZGQwMGY5YjllLi4wZDY0YjI2YWY3YWE3NzYxNTFkYzRiNzExMzE3YmYxNDg5ZThiYThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNCw2ICsx
MTQsNyBAQAogCQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMjlDMzNE
MTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4MTM0MDEz
ODE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQu
Y3BwICovOyB9OwogCQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNzE1QjA5MkZE
MDAxRkYwQjggLyogQmFzZTY0LmggKi87IH07CisJCTgzMTlFNEExMUNGOEYwRjQwMEZFQjQ0RSAv
KiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzE5RTRBMDFDRjhGMEY0MDBGRUI0NEUgLyogRnVuY3Rpb25hbC5oICovOyB9OwogCQk4
M0ZCQTkzMjE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyog
VHlwZUNhc3RzLmggKi87IH07CiAJCTg2RjQ2RjYxMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY0
NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovOyB9OwogCQk5MzkzNEJEMzE4
QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3Ry
aW5nVmlld09iakMubW0gKi87IH07CkBAIC00MzcsNiArNDM4LDcgQEAKIAkJN0UyOUMzM0QxNUZG
RDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE9iamNSdW50aW1lRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZTY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODMxOUU0QTAxQ0Y4RjBGNDAwRkVCNDRFIC8qIEZ1bmN0aW9uYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdW
aWV3T2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFN0cmlu
Z1ZpZXdPYmpDLm1tOyBwYXRoID0gbWFjL1N0cmluZ1ZpZXdPYmpDLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODI2LDYgKzgyOCw3IEBACiAJCQkJQThBNDcyQTYxNTFBODI1QTAw
NDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyog
RnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFEQTQg
LyogRnVuY3Rpb25EaXNwYXRjaGVyLmggKi8sCisJCQkJODMxOUU0QTAxQ0Y4RjBGNDAwRkVCNDRF
IC8qIEZ1bmN0aW9uYWwuaCAqLywKIAkJCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0
UHRyLmggKi8sCiAJCQkJMEZFQzg0QUUxQkQ4MjUzMTAwODBGRjc0IC8qIEdyYXBoTm9kZVdvcmts
aXN0LmggKi8sCiAJCQkJMkNDRDg5MjkxNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVU
aW1lLmNwcCAqLywKQEAgLTEzMjksNiArMTMzMiw3IEBACiAJCQkJMEZCMzE3QzQxQzQ4ODAwMTAw
N0UzOTVBIC8qIFN5c3RlbVRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDMzMTUx
QTgyNUIwMDQxMjNGRiAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3NDQ0MTUxQTgyNUIwMDQxMjNGRiAvKiBUZXh0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTgzMTlFNEExMUNGOEYwRjQwMEZFQjQ0RSAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQ0NzE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkRnVuY3Rpb25JbnZvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0OTE1MUE4MjVCMDA0MTIzRkYgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NEIx
NTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oCmluZGV4IGFjMGUwMWZhZDI5MjkzZGUzMmJlYzUwOGQxZDNhZWQz
NTE4YzRiYjQuLjcwZjQ0YTQyZmE4ZjEyZTU5NjdhMjAyYTU2NDBjM2U4MmI0NDdiOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCkBAIC0yNyw2NiArMjcsMTEgQEAKICNkZWZpbmUg
RnVuY3Rpb25EaXNwYXRjaGVyX2gKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKLS8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gaXRzIG93biBoZWFk
ZXIgKGUuZy4gRnVuY3Rpb25hbC5oKS4KLS8vIEZJWE1FOiBXZSBjb3VsZCBtYWtlIHRoaXMgdGVt
cGxhdGVkIHRvIHN1cHBvcnQgb3RoZXIgbGFtYmRhcyB0aGFuIHZvaWQoKSBhbmQgbWFrZSB0aGlz
IG1vcmUgcmV1c2FibGUuCi1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAg
ICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
cnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KLSAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICA6IG1fY2Fs
bGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlw
ZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRv
cigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxhYmxlV3JhcHBlcikKLSAgICAg
ICAgICAgIG1fY2FsbGFibGVXcmFwcGVyLT5jYWxsKCk7Ci0gICAgfQotCi0gICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1
ZT46OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlw
ZSYmIGNhbGxhYmxlKQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3ZlKGNhbGxhYmxl
KSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3Mg
Q2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQot
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKCkgPSAwOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGU+Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIGZpbmFs
IDogcHVibGljIENhbGxhYmxlV3JhcHBlckJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgQ2FsbGFibGVXcmFwcGVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICAg
ICAgOiBtX2NhbGxhYmxlKFdURk1vdmUoY2FsbGFibGUpKQotICAgICAgICB7Ci0gICAgICAgIH0K
LQotICAgICAgICBDYWxsYWJsZVdyYXBwZXIoY29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxl
dGU7Ci0gICAgICAgIENhbGxhYmxlV3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3Jh
cHBlciYpID0gZGVsZXRlOwotCi0gICAgICAgIHZvaWQgY2FsbCgpIGZpbmFsIHsgbV9jYWxsYWJs
ZSgpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsK
LSAgICB9OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2Fs
bGFibGVXcmFwcGVyOwotfTsKLQogLy8gRnVuY3Rpb25EaXNwYXRjaGVyIGlzIGFuIGFic3RyYWN0
IHJlcHJlc2VudGF0aW9uIG9mIHNvbWV0aGluZyB0aGF0IGZ1bmN0aW9ucyBjYW4gYmUKIC8vIGRp
c3BhdGNoZWQgdG8uIFRoaXMgY2FuIGZvciBleGFtcGxlIGJlIGEgcnVuIGxvb3Agb3IgYSB3b3Jr
IHF1ZXVlLgogCkBAIC0xMDMsNiArNDgsNSBAQCBwcm90ZWN0ZWQ6CiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAogdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7Ci11c2luZyBXVEY6Ok5vbmNvcHlh
YmxlRnVuY3Rpb247CiAKICNlbmRpZiAvLyBGdW5jdGlvbkRpc3BhdGNoZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25h
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY5MTg2MGZhM2U2ODNhZjMzMzBiZTM0YTZiZDljMTBlYTNmYmJmYmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgKQEAgLTAsMCAr
MSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bWVtb3J5Pgor
CituYW1lc3BhY2UgV1RGIHsKKworLy8gRklYTUU6IFdlIGNvdWxkIG1ha2UgdGhpcyB0ZW1wbGF0
ZWQgdG8gc3VwcG9ydCBvdGhlciBsYW1iZGFzIHRoYW4gdm9pZCgpIGFuZCBtYWtlIHRoaXMgbW9y
ZSByZXVzYWJsZS4KK2NsYXNzIE5vbmNvcHlhYmxlRnVuY3Rpb24geworcHVibGljOgorICAgIE5v
bmNvcHlhYmxlRnVuY3Rpb24oKSA9IGRlZmF1bHQ7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
YWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFs
dWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIE5vbmNvcHlh
YmxlRnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCisgICAgICAgIDogbV9jYWxsYWJs
ZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlPj4o
V1RGTW92ZShjYWxsYWJsZSkpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIG9wZXJhdG9yKCko
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fY2FsbGFibGVXcmFwcGVyKQorICAgICAgICAg
ICAgbV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxhYmxlV3JhcHBlcjsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6
dHlwZT4KKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYg
Y2FsbGFibGUpCisgICAgeworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24m
IG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgICAgIG1fY2FsbGFibGVXcmFw
cGVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DYWxsYWJsZVdyYXBwZXJC
YXNlKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGwoKSA9IDA7CisgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZT4KKyAgICBjbGFzcyBDYWxsYWJsZVdy
YXBwZXIgZmluYWwgOiBwdWJsaWMgQ2FsbGFibGVXcmFwcGVyQmFzZSB7CisgICAgcHVibGljOgor
ICAgICAgICBleHBsaWNpdCBDYWxsYWJsZVdyYXBwZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUp
CisgICAgICAgICAgICA6IG1fY2FsbGFibGUoV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIENhbGxhYmxlV3JhcHBlcihjb25zdCBDYWxsYWJsZVdyYXBw
ZXImKSA9IGRlbGV0ZTsKKyAgICAgICAgQ2FsbGFibGVXcmFwcGVyJiBvcGVyYXRvcj0oY29uc3Qg
Q2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisKKyAgICAgICAgdm9pZCBjYWxsKCkgZmluYWwg
eyBtX2NhbGxhYmxlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENhbGxhYmxlVHlwZSBt
X2NhbGxhYmxlOworICAgIH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVy
QmFzZT4gbV9jYWxsYWJsZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNp
bmcgV1RGOjpOb25jb3B5YWJsZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA0NjU1
NWQ1NWYyYTliMDQ4NmYxYjMyOWZlOWViNDJiZTE5MWY0N2I3Li5kM2YwMjVlZjJjYzk2NjE4Njc2
MmVjNTYxODNlN2RlMjcxOGE3ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDcsOSArNDcs
OSBAQCBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKIAogc3Rh
dGljIFN0YXRpY0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKIAotc3RhdGljIERl
cXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVlKCkKK3N0YXRpYyBEZXF1
ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPiYgZnVuY3Rpb25RdWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+PiBmdW5jdGlvblF1ZXVl
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPj4g
ZnVuY3Rpb25RdWV1ZTsKICAgICByZXR1cm4gZnVuY3Rpb25RdWV1ZTsKIH0KIApAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAKICAgICBh
dXRvIHN0YXJ0VGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogCi0gICAg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9u
IGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewpAQCAtMTQ0LDcgKzE0
NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgfQogfQog
Ci12b2lkIGNhbGxPbk1haW5UaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikK
K3ZvaWQgY2FsbE9uTWFpblRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7
CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFp
blRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IDIwY2YxY2I4NzBl
ZDYyYWYzYmVkYjc3OTFkYmIxMWE5ODc0YTAwNzUuLjJlOGVmMWQ1YmU0MDk0YmFlZjkyNTdhMjNi
YTAzNTdiOGIwNjU4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQwLDcgKzQxLDcgQEAgdHlwZWRl
ZiB1aW50MzJfdCBUaHJlYWRJZGVudGlmaWVyOwogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4pOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRocmVh
ZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJl
YWQodm9pZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA0ODUyN2I5YjhlNTc3NmU3MTdlYzQ4YzEy
Y2U1OGMxM2ZhM2I4NzBjLi5jZDRkMzcyNjU0MGQ0NjdjMzJkYjFlNjkwMmYxZGUwMGI1NzIzYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JB
ZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAg
ICAgICAgLy8gSWYgdGhlIElEQlZhbHVlIGRvZXNuJ3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21l
dGhpbmcgd2VudCB3cm9uZyB3cml0aW5nIHRoZSBibG9icyB0byBkaXNrLgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNv
IHdlIGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVz
dWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIHsgSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJp
bmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgdGhpcywgcHJvdGVjdGVkT3BlcmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRp
b24pLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgeworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkT3Bl
cmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRpb24pLCByZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCldKCkgewogICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0aW9uLT5jb21wbGV0ZWQocmVz
dWx0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAppbmRleCAxODAy
Y2M1YjllNzQ1NWY0YWZiZDg0ODIxOWEzZGEyMjk4Y2IwNzI4Li4yMjg1NzBiMGRkOWMyODdiNTk0
Yjg3M2Y5MzVkNmJmMjNjNDNjNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVBlcm1pc3Npb25DaGVj
ayhjb25zdCBTdHJpbmcmIHNhbHQsIGJvb2wgY2EKICAgICBtX2lkSGFzaFNhbHQgPSBzYWx0Owog
ICAgIG1faGF2ZVBlcnNpc3RlbnRQZXJtaXNzaW9uID0gY2FuQWNjZXNzOwogCi0gICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yID0gV1RGTW92ZShwZXJt
aXNzaW9uQ2hlY2tQcm90ZWN0b3IpXSB7CiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKHRoaXMpOwogICAgIH0p
OwogfQpAQCAtMTYwLDggKzE2MCw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29t
cGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mCiAgICAgICAg
IGRldmljZXMuYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgbGFiZWwsIGlkLCBncm91cElkLCBkZXZpY2VUeXBlKSk7CiAgICAgfQogCi0gICAg
UmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgZGV2aWNlc10geworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8TWVkaWFEZXZpY2VzUmVxdWVzdD4oKnRoaXMpLCBk
ZXZpY2VzID0gV1RGTW92ZShkZXZpY2VzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+bV9wcm9taXNlLnJlc29sdmUoZGV2aWNlcyk7CiAgICAgfSk7CiAgICAgbV9wcm90ZWN0
b3IgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDU5
NTUyNjBjOTNhNjI1ODkzMDQ0ZDc4ZDY2MDVmZTdmMzAzMWRjMjkuLjM4NWMxNGYzNmFjMjRjMmI4
MWI5MjAyMTJjOGEyNjM4YTFiMjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bi5jcHAKQEAgLTk1LDE0ICs5NSwxNCBAQCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246Ok1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbihQZWVyQ29ubmVjdGlvbkJhY2tlbmRDbAogICAgIG1f
bWVkaWFFbmRwb2ludC0+Z2VuZXJhdGVEdGxzSW5mbygpOwogfQogCi12b2lkIE1lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gdGFzaykKK3Zv
aWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpydW5UYXNrKE5vbmNvcHlhYmxlRnVuY3Rp
b24mJiB0YXNrKQogewogICAgIGlmIChtX2R0bHNGaW5nZXJwcmludC5pc051bGwoKSkgewogICAg
ICAgICAvLyBPbmx5IG9uZSB0YXNrIG5lZWRzIHRvIGJlIGRlZmVycmVkIHNpbmNlIGl0IHdpbGwg
aG9sZCBvZmYgYW55IG90aGVycyB1bnRpbCBjb21wbGV0ZWQuCiAgICAgICAgIEFTU0VSVCghbV9p
bml0aWFsRGVmZXJyZWRUYXNrKTsKLSAgICAgICAgbV9pbml0aWFsRGVmZXJyZWRUYXNrID0gdGFz
azsKKyAgICAgICAgbV9pbml0aWFsRGVmZXJyZWRUYXNrID0gV1RGTW92ZSh0YXNrKTsKICAgICB9
IGVsc2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZCh0YXNrKTsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnN0YXJ0UnVubmluZ1Rhc2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5o
CmluZGV4IGRkM2VjMWE3YjEyNDIwODZmMDFiM2E0ZWJiZGQxZjYzZDAzYTIwYjYuLjA1NWVmYTE2
MmU2MzdjODkyYTAxYmQ0M2FjOTBmNTdjNTQxNzA2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc3LDcgKzc4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJOZWdvdGlhdGlvbk5lZWRlZFN0YXRlKCkgb3ZlcnJpZGUgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9OwogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4pOworICAgIHZvaWQgcnVuVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uJiYp
OwogICAgIHZvaWQgc3RhcnRSdW5uaW5nVGFza3MoKTsKIAogICAgIHZvaWQgY3JlYXRlT2ZmZXJU
YXNrKFJUQ09mZmVyT3B0aW9ucyYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Q
cm9taXNlJik7CkBAIC05MSw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgUGVlckNvbm5lY3Rpb25C
YWNrZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFFbmRwb2lu
dD4gbV9tZWRpYUVuZHBvaW50OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1faW5pdGlh
bERlZmVycmVkVGFzazsKKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uIG1faW5pdGlhbERlZmVycmVk
VGFzazsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTRFBQcm9jZXNzb3I+IG1fc2RwUHJvY2Vzc29y
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcAppbmRleCAwMDRlNGZiMTQwNWE5NjdmYWVlNTk1MDUyYTIxNmZlNTEy
ZWI3YzIwLi45ZTVhOWMyNDRlZjYzYTE3YmZhOGQ5YzdjY2U1YzYxM2FlYTM5YWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTEzNSwxMSArMTM1LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29u
c3RyYWludHNWYWxpZGF0ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291CiAg
ICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrIDogdmlkZW9UcmFja3MpCiAgICAgICAgIG1fdmlkZW9E
ZXZpY2VVSURzLmFwcGVuZCh2aWRlb1RyYWNrLT5wZXJzaXN0ZW50SUQoKSk7CiAKLSAgICBSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IFJlZjxVc2VyTWVkaWFSZXF1ZXN0PigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAg
IC8vIDIgLSBUaGUgY29uc3RyYWludHMgYXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9yIGFjY2Vz
cyB0byBtZWRpYS4KICAgICAgICAgaWYgKFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBwcm90ZWN0ZWRUaGlzLT5tX2NvbnRyb2xsZXIpCi0gICAgICAgICAgICBjb250cm9sbGVyLT5y
ZXF1ZXN0VXNlck1lZGlhQWNjZXNzKCpwcm90ZWN0ZWRUaGlzLmdldCgpKTsKKyAgICAgICAgICAg
IGNvbnRyb2xsZXItPnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MocHJvdGVjdGVkVGhpcy5nZXQoKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTE0OCwxMCArMTQ3LDkgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0
Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNv
bnMKICAgICBtX2FsbG93ZWRWaWRlb0RldmljZVVJRCA9IHZpZGVvRGV2aWNlVUlEOwogICAgIG1f
YXVkaW9EZXZpY2VVSURBbGxvd2VkID0gYXVkaW9EZXZpY2VVSUQ7CiAKLSAgICBSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzLCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPFVzZXJNZWRpYVJlcXVlc3Q+KCp0
aGlzKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEXSgpIG11dGFibGUgewogICAgICAg
ICAvLyAzIC0gdGhlIHVzZXIgZ3JhbnRlZCBhY2Nlc3MsIGFzayBwbGF0Zm9ybSB0byBjcmVhdGUg
dGhlIG1lZGlhIHN0cmVhbSBkZXNjcmlwdG9ycy4KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQo
KSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsKKyAgICAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhp
cy5wdHIoKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmlu
ZGV4IDlkY2VlMTlmMzI2MzkxOWRjNTRjZjg5MzgwNGVjMWYwMTk2NTRiY2EuLjg4MTgwODUwYjc0
NGJlNmE0MDc2NmI5YzU2ZGYzNTE1NmE4Mjg2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5Nyw4ICs3OTcsNyBAQCB2b2lk
IEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgICAgIG1faXNEZWxl
dGlvblNjaGVkdWxlZCA9IHRydWU7CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
c10geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1ZGlv
Q29udGV4dD4oKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGVsZXRlTWFya2VkTm9kZXMoKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTAwMiw4ICsxMDAx
LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKIHsKICAg
ICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBv
biB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlCiAgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlv
IEkvTyB0aHJlYWQgaGVyZSBhbmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgot
ICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBSZWY8QXVkaW9Db250ZXh0PigqdGhpcyldIHsKICAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVu
dCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggZDA2MDc1NTFlNjIzZDIxNDZlOTVhOTA1Yzk5YzU0Zjc3ZjQ4ZTM0Yy4uZjA2YzIx
MzAyM2M3Y2FhM2NlODU0MWQ2ZDg1YTE3MGZkM2ExMTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC01MzY3LDEyICs1MzY3LDggQEAgU2VjdXJpdHlPcmlnaW4qIERvY3VtZW50Ojp0b3BP
cmlnaW4oKSBjb25zdAogCiB2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiB7Ci0g
ICAgVGFzayogdGFza1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSku
cmVsZWFzZSgpOwotICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGRvY3VtZW50UmVmZXJlbmNlKG1fd2Vh
a0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoWz1dIHsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3Rvcnku
Y3JlYXRlV2Vha1B0cigpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRhc2s+
IHRhc2sodGFza1B0cik7CiAKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRS
ZWZlcmVuY2UuZ2V0KCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQpCkBAIC01MzgwLDkgKzUzNzYs
OSBAQCB2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiAKICAgICAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZl
cnNMb2FkaW5nKCkgJiYgZG9jdW1lbnQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkg
fHwgIWRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkb2N1
bWVudC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUoKnRhc2sucmVsZWFzZSgpKSk7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygqZG9jdW1lbnQp
OworICAgICAgICAgICAgdGFzay5wZXJmb3JtVGFzaygqZG9jdW1lbnQpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMjcxMzM5MjM5ZTgwYzNkNDZm
YjYyODVlZjUyYjVhOTY2OTgyMWQwYS4uNmNiMjVkOTY4MWMxOTY4YjIzMDk0NGRjYjQ3ZDJjOTM1
ZGM3NGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMjgwLDggKzI4
MCw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVybCkKICAgICBpZiAobV9jYWNoZWRTY3JpcHQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSAmbV9lbGVtZW50OwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIGVsZW1lbnRdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBl
bGVtZW50ID0gUmVmPEVsZW1lbnQ+KG1fZWxlbWVudCldIHsKICAgICAgICAgZGlzcGF0Y2hFcnJv
ckV2ZW50KCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IDBmYjkxMjRlMWY2Mzg0OTY5N2NlYWMwM2Zk
YWE2MTJmYTZlMWUyNWYuLjZiNGJiYjNmNThmOWIxYzhiNmUwNGFmMzRmMzJkZTg3ZDMwYjA2ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2Fn
ZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC02MywxMiArNjQs
MTIgQEAgaW5saW5lIEFzeW5jRmlsZVN0cmVhbTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMoRmlsZVN0
cmVhbUNsaWVudCYgY2xpZW50KQogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIGNhbGxPbkZpbGVU
aHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCitzdGF0aWMgdm9pZCBjYWxs
T25GaWxlVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IHF1ZXVl
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZXNzYWdlUXVldWU8Tm9uY29weWFibGVGdW5j
dGlvbj4+IHF1ZXVlOwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGNyZWF0ZUZpbGVUaHJl
YWRPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGNyZWF0ZUZpbGVUaHJlYWRPbmNlLCBbXSB7CkBA
IC04OSw3ICs5MCw3IEBAIHN0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoc3RkOjpmdW5jdGlv
bjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUu
Z2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PE5vbmNvcHlhYmxlRnVuY3Rpb24+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIEFzeW5jRmls
ZVN0cmVhbTo6QXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKQEAgLTEw
MiwzMyArMTAzLDI4IEBAIEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSgpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIC8vIFJlbGVhc2Ugc28gdGhhdCB3ZSBj
YW4gY29udHJvbCB0aGUgdGltaW5nIG9mIGRlbGV0aW9uIGJlbG93LgotICAgIGF1dG8mIGludGVy
bmFscyA9ICptX2ludGVybmFscy5yZWxlYXNlKCk7Ci0KICAgICAvLyBTZXQgZmxhZyB0byBwcmV2
ZW50IGNsaWVudCBjYWxsYmFja3MgYW5kIGFsc28gcHJldmVudCBxdWV1ZWQgb3BlcmF0aW9ucyBm
cm9tIHN0YXJ0aW5nLgotICAgIGludGVybmFscy5kZXN0cm95ZWQgPSB0cnVlOworICAgIG1faW50
ZXJuYWxzLT5kZXN0cm95ZWQgPSB0cnVlOwogCiAgICAgLy8gQ2FsbCB0aHJvdWdoIGZpbGUgdGhy
ZWFkIGFuZCBiYWNrIHRvIG1haW4gdGhyZWFkIHRvIG1ha2Ugc3VyZSBkZWxldGlvbiBoYXBwZW5z
CiAgICAgLy8gYWZ0ZXIgYWxsIGZpbGUgdGhyZWFkIGZ1bmN0aW9ucyBhbmQgYWxsIG1haW4gdGhy
ZWFkIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgotICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZp
bnRlcm5hbHNdIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbJmludGVybmFsc10gewotICAg
ICAgICAgICAgZGVsZXRlICZpbnRlcm5hbHM7CisgICAgY2FsbE9uRmlsZVRocmVhZChbaW50ZXJu
YWxzID0gV1RGTW92ZShtX2ludGVybmFscyldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2ludGVybmFscyA9IFdURk1vdmUoaW50ZXJuYWxzKV0gewogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTdHJlYW06OnBlcmZvcm0oc3RkOjpmdW5jdGlv
bjxzdGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+IG9w
ZXJhdGlvbikKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248c3Rk
OjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJh
dGlvbikKIHsKICAgICBhdXRvJiBpbnRlcm5hbHMgPSAqbV9pbnRlcm5hbHM7Ci0gICAgY2FsbE9u
RmlsZVRocmVhZChbJmludGVybmFscywgb3BlcmF0aW9uXSB7CisgICAgY2FsbE9uRmlsZVRocmVh
ZChbJmludGVybmFscywgb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pXSB7CiAgICAgICAg
IC8vIERvbid0IGRvIHRoZSBvcGVyYXRpb24gaWYgc3RvcCB3YXMgYWxyZWFkeSBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkLiBOb3RlIHRoYXQgdGhlcmUgaXMKICAgICAgICAgLy8gYSByYWNlIGhl
cmUsIGJ1dCBzaW5jZSBza2lwcGluZyB0aGUgb3BlcmF0aW9uIGlzIGFuIG9wdGltaXphdGlvbiBp
dCdzIE9LIHRoYXQgd2UgY2FuJ3QKICAgICAgICAgLy8gZ3VhcmFudGVlIGV4YWN0bHkgd2hpY2gg
b3BlcmF0aW9ucyBhcmUgc2tpcHBlZC4gTm90ZSB0aGF0IHRoaXMgaXMgYWxzbyB0aGUgb25seSBy
ZWFzb24KICAgICAgICAgLy8gd2UgdXNlIGFuIGF0b21pY19ib29sIHJhdGhlciB0aGFuIGp1c3Qg
YSBib29sIGZvciBkZXN0cm95ZWQuCiAgICAgICAgIGlmIChpbnRlcm5hbHMuZGVzdHJveWVkKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIG1haW5UaHJlYWRXb3JrID0gb3BlcmF0
aW9uKGludGVybmFscy5zdHJlYW0pOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFsmaW50ZXJu
YWxzLCBtYWluVGhyZWFkV29ya10geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFsmaW50ZXJu
YWxzLCBtYWluVGhyZWFkV29yayA9IG9wZXJhdGlvbihpbnRlcm5hbHMuc3RyZWFtKV0gewogICAg
ICAgICAgICAgaWYgKGludGVybmFscy5kZXN0cm95ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgbWFpblRocmVhZFdvcmsoaW50ZXJuYWxzLmNsaWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAppbmRleCA0MjhmNzMwZWU0NzZjZWJiYjQ3
OTFkYjdmOWU1OTVlZTI5NzBiZWM3Li5mZjQ4MWE0NWZiODI4Y2IxYjM2MmJmNzY5MDBjYTAxZThh
MDVlZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2
b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjxzdGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNs
aWVudCYpPihGaWxlU3RyZWFtJik+KTsKKyAgICB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYpOwog
CiAgICAgc3RydWN0IEludGVybmFsczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxzPiBt
X2ludGVybmFsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCmluZGV4IDEwMDAxMzU0ZjY4MjYzMmEwZDVjOGE0MDAwOGNiNjcyYjdmMGRm
NWYuLmM1OThhYzM0ZmQyNzA3YTlkZDc4MTc4MWRlMTIxNmY1MDY4NTZmMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTE3
LDEwICsxMTcsOCBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVh
dGUocGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lz
dHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29sYXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJs
b2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQgPSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmws
IHBhdGgsIGNvbnRlbnRUeXBlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0g
ewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JS
ZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckZpbGVCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpjcmVhdGUoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+cGF0aCksIGJsb2JSZWdpc3RyeUNv
bnRleHQtPmNvbnRlbnRUeXBlKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJsLCBwYXRoLCBjb250ZW50
VHlwZSldIHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29udGV4dC0+dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShjb250ZXh0LT5wYXRo
KSwgY29udGV4dC0+Y29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0xMzEs
MTAgKzEyOSw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+IGJsCiAgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUp
OwogICAgIGVsc2UgewogICAgICAgICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFu
IGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29u
dGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBj
b250ZW50VHlwZSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHRdIHsKLSAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlD
b250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgV1RGTW92ZShibG9iUmVnaXN0cnlDb250ZXh0
LT5ibG9iUGFydHMpLCBibG9iUmVnaXN0cnlDb250ZXh0LT5jb250ZW50VHlwZSk7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdpc3Ry
eUNvbnRleHQ+KHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSldIHsKKyAgICAg
ICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LT51cmwsIFdURk1v
dmUoY29udGV4dC0+YmxvYlBhcnRzKSwgY29udGV4dC0+Y29udGVudFR5cGUpOwogICAgICAgICB9
KTsKICAgICB9CiB9CkBAIC0xNDksMTAgKzE0NSw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYK
ICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29s
YXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQg
PSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwsIHNyY1VSTCk7Ci0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbnRleHRdIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVn
aXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwg
YmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
Y29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJsLCBzcmNV
UkwpXSB7CisgICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoY29udGV4
dC0+dXJsLCBjb250ZXh0LT5zcmNVUkwpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0xNzgs
MTAgKzE3Miw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSCiAgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBp
c29sYXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRl
eHQgPSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dChuZXdVUkwsIHNyY1VSTCk7Ci0gICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbnRleHQsIHN0YXJ0LCBlbmRdIHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRl
eHQpOwotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
YmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBibG9iUmVnaXN0cnlDb250ZXh0LT5zcmNVUkwsIHN0
YXJ0LCBlbmQpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0PihuZXdVUkwsIHNyY1VSTCksIHN0YXJ0LCBlbmRd
IHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNv
bnRleHQtPnVybCwgY29udGV4dC0+c3JjVVJMLCBzdGFydCwgZW5kKTsKICAgICAgICAgfSk7CiAg
ICAgfQogfQpAQCAtMTkzLDExICsxODUsOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJlc3VsdFNp
emUgPSBibG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSh1cmwpOwogICAgIGVsc2UgewogICAgICAgICAv
LyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4K
LSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlD
b250ZXh0KHVybCk7CiAgICAgICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQsICZzZW1hcGhvcmUsICZyZXN1bHRTaXplXSB7Ci0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lz
dHJ5Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIHJlc3VsdFNpemUgPSBibG9iUmVnaXN0
cnkoKS5ibG9iU2l6ZShibG9iUmVnaXN0cnlDb250ZXh0LT51cmwpOworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0
Pih1cmwpLCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6ZV0geworICAgICAgICAgICAgcmVzdWx0U2l6
ZSA9IGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKGNvbnRleHQtPnVybCk7CiAgICAgICAgICAgICBz
ZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIH0pOwogICAgICAgICBzZW1hcGhvcmUud2FpdChz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKQEAgLTIxNCwxMCArMjA0LDggQEAg
dm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
IHVybCkKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29s
YXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQg
PSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtjb250ZXh0XSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29u
dGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIGJsb2JSZWdp
c3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdp
c3RyeUNvbnRleHQ+KHVybCldIHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0
ZXJCbG9iVVJMKGNvbnRleHQtPnVybCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDZkYTI0NGU1ZDNhMWU2
NGFiM2ExODBkOTEzODAyNTBiNjQ5MGEzOGMuLmUxZWRhNWNhYTFkMDA1YzBjZGVhMTEzYzY1YjA1
OTgzOTUzNGYwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcApAQCAtMjA5MCwxMCArMjA5MCw5IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpkaXNwYXRjaERp
ZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYKICAgICBB
U1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogICAgICsrbV9tYWluVGhyZWFkQ2FsbGJhY2tDb3Vu
dDsKIAotICAgIFN0cmluZyBwYWdlVVJMQ29weSA9IHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGFnZVVSTENvcHldIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKV0gewogICAgICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkSW1wb3J0SWNvblVSTEZv
clBhZ2VVUkwocGFnZVVSTENvcHkpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZEltcG9ydElj
b25VUkxGb3JQYWdlVVJMKHBhZ2VVUkwpOwogICAgICAgICBjaGVja0Nsb3NlZEFmdGVyTWFpblRo
cmVhZENhbGxiYWNrKCk7CiAgICAgfSk7CiB9CkBAIC0yMTAzLDEwICsyMTAyLDkgQEAgdm9pZCBJ
Y29uRGF0YWJhc2U6OmRpc3BhdGNoRGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMT25NYWluVGhy
ZWFkKGNvbnN0IFN0cmluZyYKICAgICBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogICAgICsr
bV9tYWluVGhyZWFkQ2FsbGJhY2tDb3VudDsKIAotICAgIFN0cmluZyBwYWdlVVJMQ29weSA9IHBh
Z2VVUkwuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGFnZVVS
TENvcHldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwYWdlVVJMID0gcGFnZVVSTC5p
c29sYXRlZENvcHkoKV0gewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMKHBhZ2VVUkxDb3B5KTsKKyAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwocGFnZVVSTCk7CiAgICAg
ICAgIGNoZWNrQ2xvc2VkQWZ0ZXJNYWluVGhyZWFkQ2FsbGJhY2soKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCmluZGV4IDIzNTAwYmUy
YWM1YjBmMDhjMDYyNzdkNjNhMTBkODhiYTNlM2Y4YzcuLmVmMmE1MjUyZmZhYWI0OTZiZDRjNTMw
ZjFjNTA1MTQzODVmNDYyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3Vy
Y2VVc2FnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdl
VGhyZWFkLmNwcApAQCAtNzcsOSArNzcsOSBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6Ondh
aXRVbnRpbE9ic2VydmVycygpCiAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9sb2NrKTsKIH0K
IAotdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlPYnNlcnZlcnMoUmVzb3VyY2VVc2Fn
ZURhdGEmIGRhdGEpCit2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVycyhS
ZXNvdXJjZVVzYWdlRGF0YSYmIGRhdGEpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbZGF0YV0o
KSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtkYXRhID0gV1RGTW92ZShkYXRhKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgUmVz
b3VyY2VVc2FnZURhdGEmKT4+IGZ1bmN0aW9uczsKICAgICAgICAgCiAgICAgICAgIHsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBOT19SRVRVUk4gdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjp0aHJlYWRC
b2R5KCkKIAogICAgICAgICBSZXNvdXJjZVVzYWdlRGF0YSBkYXRhOwogICAgICAgICBwbGF0Zm9y
bVRocmVhZEJvZHkobV92bSwgZGF0YSk7Ci0gICAgICAgIG5vdGlmeU9ic2VydmVycyhkYXRhKTsK
KyAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgIGF1dG8g
ZHVyYXRpb24gPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzPihzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHN0YXJ0KTsKICAgICAg
ICAgYXV0byBkaWZmZXJlbmNlID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyg1MDApIC0gZHVy
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCmluZGV4IGZk
MjU4MWFmYzVhNWQ2YzljZjQ1ZmQ3YmJmM2YzNWMzZjJhNGNhYmMuLjI1ZTRjM2Q1YWE2YWIzYjRh
YjFkNmRlNTg1NjJkMGZkZmNlMTZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVzb3VyY2VVc2FnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VV
c2FnZVRocmVhZC5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJlc291
cmNlVXNhZ2VUaHJlYWQmIHNpbmdsZXRvbigpOwogCiAgICAgdm9pZCB3YWl0VW50aWxPYnNlcnZl
cnMoKTsKLSAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhSZXNvdXJjZVVzYWdlRGF0YSYpOworICAg
IHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VEYXRhJiYpOwogCiAgICAgdm9pZCBj
cmVhdGVUaHJlYWRJZk5lZWRlZCgpOwogICAgIHN0YXRpYyB2b2lkIHRocmVhZENhbGxiYWNrKHZv
aWQqIHNjcm9sbGluZ1RocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCA0NjY5YTE5OTI4N2E2Y2FmMGFlYmM2YmJiYTVh
N2VlZTVjNWViZDZiLi4zNWExN2I4ZTc4MzI5MGRmYWE2YzZkODNmM2RiNzgxMjI0Mzc0ZDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5j
cHAKQEAgLTQ1LDIyICs0NSwyMiBAQCBib29sIFNjcm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhy
ZWFkKCkKICAgICByZXR1cm4gdGhyZWFkSWRlbnRpZmllciAmJiBjdXJyZW50VGhyZWFkKCkgPT0g
dGhyZWFkSWRlbnRpZmllcjsKIH0KIAotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGF1dG8mIHNjcm9s
bGluZ1RocmVhZCA9IFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCk7CiAgICAgc2Nyb2xsaW5n
VGhyZWFkLmNyZWF0ZVRocmVhZElmTmVlZGVkKCk7CiAKICAgICB7CiAgICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0aW9uc011dGV4KTsKLSAg
ICAgICAgc2Nyb2xsaW5nVGhyZWFkLm1fZnVuY3Rpb25zLmFwcGVuZChmdW5jdGlvbik7CisgICAg
ICAgIHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikp
OwogICAgIH0KIAogICAgIHNjcm9sbGluZ1RocmVhZC53YWtlVXBSdW5Mb29wKCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoTm9uY29w
eWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoKFtmdW5jdGlvbl0oKSBt
dXRhYmxlIHsKKyAgICBkaXNwYXRjaChbZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAg
ICAgfSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3Bh
dGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzQ3VycmVu
dFRocmVhZCgpKTsKIAotICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBmdW5jdGlv
bnM7CisgICAgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb24+IGZ1bmN0aW9uczsKICAgICAKICAg
ICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZnVuY3Rpb25zTXV0ZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaApp
bmRleCBhNzA5Y2NkOGU3ODYzNjI5ZGU4YTI4M2M0NjNjYTljNzcwNTFjNzE1Li5jYjQ0NGU1ZTM2
ZjU1MzgzNDc0NjIwYWRjOGU4MDQ1ZjkwNDQ5YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KQEAgLTQ3LDExICs0OCwxMSBAQCBjbGFzcyBTY3JvbGxpbmdUaHJlYWQgewogCiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNDdXJyZW50VGhyZWFkKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYm
KTsKIAogICAgIC8vIFdpbGwgZGlzcGF0Y2ggdGhlIGdpdmVuIGZ1bmN0aW9uIG9uIHRoZSBtYWlu
IHRocmVhZCBvbmNlIGFsbCBwZW5kaW5nIGZ1bmN0aW9ucwogICAgIC8vIG9uIHRoZSBzY3JvbGxp
bmcgdGhyZWFkIGhhdmUgZmluaXNoZWQgZXhlY3V0aW5nLiBVc2VkIGZvciBzeW5jaHJvbml6YXRp
b24gcHVycG9zZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hCYXJy
aWVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxTY3JvbGxpbmdUaHJlYWQ+OwpAQCAtNzksNyArODAs
NyBAQCBwcml2YXRlOgogICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcE11dGV4OwogCiAgICAg
TG9jayBtX2Z1bmN0aW9uc011dGV4OwotICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
PiBtX2Z1bmN0aW9uczsKKyAgICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlvbj4gbV9mdW5jdGlv
bnM7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBX
ZWJDb3JlOjpSdW5Mb29wIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKaW5kZXggMDgyYmQ3M2NkYmJmMmQ5NmQ4
YzhkNGE5MTI4YTllYzk3MDQ3ZmFlOC4uNjYyNmVjY2M4ZTFhN2Q2ZjBhMDllNmY2MTRjZjFjNzAz
YWI2MGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Nj
cm9sbGluZ1RyZWVJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlSU9TLmNwcApAQCAtNjcsOSArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVJT1M6OmludmFsaWRhdGUoKQogICAgIC8vIFNpbmNlIHRoaXMgY2FuIHBvdGVudGlhbGx5IGJl
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yLAogICAgIC8v
IHdlIG5lZWQgdG8gcmVsZWFzZSBpdCBvbiB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaGFzIG1l
bWJlciB2YXJpYWJsZXMgKHN1Y2ggYXMgdGltZXJzKQogICAgIC8vIHRoYXQgZXhwZWN0IHRvIGJl
IGRlc3Ryb3llZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLnJlbGVhc2Uo
KS5sZWFrUmVmKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3Jd
IHsKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRlcmVmKCk7CisgICAgY2FsbE9uTWFp
blRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBXVEZNb3ZlKG1fc2Nyb2xsaW5nQ29vcmRp
bmF0b3IpXSB7CiAgICAgfSk7CiB9CiAKQEAgLTg2LDEwICs4NCw3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZUlPUzo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCwgY29uc3QKICAgICBpZiAobm9kZUlEID09IHJvb3ROb2RlKCktPnNjcm9sbGluZ05vZGVJRCgp
KQogICAgICAgICBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiAK
LSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0
b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIGJvb2wgbG9jYWxJc0hhbmRsaW5nUHJv
Z3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpOwotCi0gICAg
Y2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCwgc2Nyb2xsUG9z
aXRpb24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbl0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Njcm9sbGluZ0Nvb3JkaW5h
dG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbG9j
YWxJc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Nj
cm9sbCgpLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uXSB7CiAgICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9s
bChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3Jv
bGwsIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogICAgIH0pOwogfQpAQCAtMTIzLDgg
KzExOCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNE
aWRDaGFuZ2UoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlECiAgICAgaWYgKCFtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I+IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGlu
YXRvcjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlE
LCBob3Jpem9udGFsLCB2ZXJ0aWNhbF0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBob3Jpem9udGFs
LCB2ZXJ0aWNhbF0gewogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0QWN0aXZlU2Ny
b2xsU25hcEluZGljZXMobm9kZUlELCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IGJkODE4
NTQ4YjUzMGUwZTI0OWFhNGI2OGU0N2ExMjViZmQxNDIxMmUuLjhiM2YxY2M3MDlmMjRhNzI5Nzhi
NDUyMmU5MWE5OGEzMThlYWQwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTWFjLm1tCkBAIC03NSwxMSArNzUsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWM6OnJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxlckltcHNPblRoZU1haQog
ICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsZXJJbXAgfHwgbV9ob3Jpem9udGFsU2Nyb2xsZXJJbXAp
IHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGluIHBsYWNlIGZvciB0
aGUgdGltZSBiZWluZyBzaW5jZSBOU1Njcm9sbGVySW1wcyBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQK
ICAgICAgICAgLy8gb24gYSBub24tbWFpbiB0aHJlYWQuIHJkYXI6Ly9wcm9ibGVtLzI0NTM1MDU1
Ci0gICAgICAgIE5TU2Nyb2xsZXJJbXAgKnJldGFpbmVkVmVydGljYWxTY3JvbGxlckltcCA9IG1f
dmVydGljYWxTY3JvbGxlckltcC5sZWFrUmVmKCk7Ci0gICAgICAgIE5TU2Nyb2xsZXJJbXAgKnJl
dGFpbmVkSG9yaXpvbnRhbFNjcm9sbGVySW1wID0gbV9ob3Jpem9udGFsU2Nyb2xsZXJJbXAubGVh
a1JlZigpOwotICAgICAgICBXVEY6OmNhbGxPbk1haW5UaHJlYWQoW3JldGFpbmVkVmVydGljYWxT
Y3JvbGxlckltcCwgcmV0YWluZWRIb3Jpem9udGFsU2Nyb2xsZXJJbXBdIHsKLSAgICAgICAgICAg
IFtyZXRhaW5lZFZlcnRpY2FsU2Nyb2xsZXJJbXAgcmVsZWFzZV07Ci0gICAgICAgICAgICBbcmV0
YWluZWRIb3Jpem9udGFsU2Nyb2xsZXJJbXAgcmVsZWFzZV07CisgICAgICAgIFdURjo6Y2FsbE9u
TWFpblRocmVhZChbdmVydGljYWxTY3JvbGxlckltcCA9IFdURk1vdmUobV92ZXJ0aWNhbFNjcm9s
bGVySW1wKSwgaG9yaXpvbnRhbFNjcm9sbGVySW1wID0gV1RGTW92ZShtX2hvcml6b250YWxTY3Jv
bGxlckltcCldIHsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggMzJlYWM0NTI0Zjc2ZGFm
OWE3YWQyMjRlYzliNGU2ZTgwZDQzMzE4MC4uOTI5YTZiYzJmMGZjMDBlYjZhODFlMzZiYzg4Zjkz
NDAwMjRiOWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNo
cm8KICAgICAgICAgLy8gRmFzdE1hbGxvYyBoYXMgbG9jay1mcmVlIHRocmVhZCBzcGVjaWZpYyBj
YWNoZXMgdGhhdCBjYW4gb25seSBiZSBjbGVhcmVkIGZyb20gdGhlIHRocmVhZCBpdHNlbGYuCiAg
ICAgICAgIFdvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJl
YWRzKCk7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJl
ZU1lbW9yeSk7CisgICAgICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW10oKSB7IFdURjo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7IH0pOwogI2VuZGlmCiAgICAgICAgIFdURjo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQppbmRleCAxMmNiY2JmOGYyNjFhYmUxYWYxMjQyYjA1MjQ0ZDZkZjE2MzMxYzRhLi4xNjU5Nzdl
NTBlNGQ5ZDk5NmYxMTEzODAxZTQ4MDkwZDFhZDFkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQpAQCAtMzk2LDEwICszOTYsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOwogCiAgICAgaWYgKCFpc01haW5UaHJl
YWQoKSkgewotICAgICAgICBhdXRvIHZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KTsK
LSAgICAgICAgYXV0byByb3V0aW5nQ29udHJvbGxlciA9IFdURk1vdmUoX2FpclBsYXlQcmVzZW5j
ZVJvdXRpbmdDb250cm9sbGVyKTsKLQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt2b2x1bWVW
aWV3LCByb3V0aW5nQ29udHJvbGxlcl0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3ZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KSwgcm91dGluZ0NvbnRyb2xs
ZXIgPSBXVEZNb3ZlKF9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcildICgpIG11dGFi
bGUgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVh
bGxvY10gLSBkaXBhdGNoZWQgdG8gTWFpblRocmVhZCIpOwogCiAgICAgICAgICAgICB2b2x1bWVW
aWV3LmNsZWFyKCk7CkBAIC00MzUsOCArNDMyLDcgQEAgLSAodm9pZClzdGFydE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzCiAKICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBz
dGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwogCi0gICAgUmV0YWluUHRyPFdlYk1lZGlh
U2Vzc2lvbkhlbHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRh
aW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPihzZWxmKV0gKCkgewogICAgICAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
XSAtIGRpcGF0Y2hlZCB0byBNYWluVGhyZWFkIik7CiAKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYt
Pl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcikKQEAgLTQ1NCw4ICs0NTAsNyBAQCAt
ICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlcwogCiAgICAgTE9HKE1lZGlhLCAiLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwogCi0g
ICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPihzZWxmKV0g
KCkgewogICAgICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXNdIC0gZGlwYXRjaGVkIHRvIE1haW5UaHJlYWQiKTsKIAogICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRl
eCAzZDkwZGVkZjZjOTk3NGQ0NGUyMDJiODlmZDE4ZTg0MjQ3ZTA1NmRhLi40ZDE4MDU1Y2MzMzgy
NGQ5NWI5MzE0MTJjOTIyOWNiYTg0MmQ4NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC0zMjMsOCArMzIzLDcgQEAgdm9pZCBBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNv
bnN0IEF1ZGlvU3RyZWEKICAgICBtZW1zZXQobV9saXN0LmdldCgpLCAwLCBidWZmZXJMaXN0U2l6
ZSk7CiAgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9IG51bWJlck9mQ2hhbm5lbHM7CiAKLSAg
ICBSZWZQdHI8QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IHN0cm9uZ1RoaXMgPSB0aGlzOwot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXMsIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBs
ZVJhdGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdUaGlzID0gUmVmPEF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDPigqdGhpcyksIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGVd
IHsKICAgICAgICAgc3Ryb25nVGhpcy0+bV9jbGllbnQtPnNldEZvcm1hdChudW1iZXJPZkNoYW5u
ZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggOTg2MjExNzQ4M2I2OTUz
Y2FmNjJhOGEzMjFkMzVhNDAxMGZhMzI1Ny4uNjkyODcxYTEwZTZiZjU2NjYzMWIxOWFkNGY4M2Zm
YmEyMjhlYTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTgwNiw4ICs4MDYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbgogICAgIGlmIChkZWxheURpc3BhdGNoICYmICFtX21haW5UaHJlYWRDYWxsUGVuZGlu
ZykgewogICAgICAgICBtX21haW5UaHJlYWRDYWxsUGVuZGluZyA9IHRydWU7CiAKLSAgICAgICAg
YXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXNdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVh
dGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC04NDQsOCArODQzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKCFtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuaXNFbXB0eSgpICYmICFtX21haW5U
aHJlYWRDYWxsUGVuZGluZykgewotICAgICAgICAgICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdl
YWtQdHIoKTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CisgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewog
ICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBhMjhkOTI5NGRjOWUxZjA5YWMyNDM4ZjM2OGEyYzAyZGM5ZWI3MDlm
Li4yNjYyZTNjOTk2OWFmMTM5YTk2ODFlYWI1MWY4NjYyNTAzN2ZkMzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
ODUsNyArODUsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICop
a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICBpZiAoW1tjaGFu
Z2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0gaW50VmFsdWVdID09IDEpIHsK
ICAgICAgICAgICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQiIGNvZGU6J0hEQ1AnIHVzZXJJbmZvOm5pbF07CiAg
ICAgICAgICAgICBSZXRhaW5QdHI8V2ViQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNMaXN0ZW5l
cj4gc3Ryb25nU2VsZiA9IHsgc2VsZiB9OwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZiwgZXJyb3JdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9u
Z1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICAgICAg
ICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPnBsYXllckRpZFJlY2VpdmVFcnJvcihlcnJvci5nZXQo
KSk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCmluZGV4IDJjNzA3Nzc1ZjliMzkwOGQ4YTEx
ZGZjNGNhNjEzZGRiYzljMDRmM2MuLmE1YTI1M2I5YjU4MTU3ZTMyMjhjMzU0ZTgxNmM5ZmI0Y2Ji
M2VjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1hYy5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDooaWQpa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNE
aWN0aW9uCiAKICAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlckhl
bHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJvbmdL
ZXlQYXRoID0ga2V5UGF0aDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJv
bmdLZXlQYXRoXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUo
c3Ryb25nU2VsZiksIHN0cm9uZ0tleVBhdGggPSBXVEZNb3ZlKHN0cm9uZ0tleVBhdGgpXSB7CiAg
ICAgICAgIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMqIGNhbGxiYWNrID0gc3Ryb25nU2Vs
Zi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDdjYjAyNjZhM2RjN2RhZjhjZGI5MTA3ZGUw
ZGMzYzM1ODY5YTNiY2YuLjNjYTQ5NTMzMmRlZDNhZGI2MDU2MjcyODY5YTkxYzAzOWNlY2RmMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNzAxLDggKzcwMSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcigpCiAgICAgaWYg
KCFtX2F2UGxheWVyIHx8IG1faGF2ZUJlZW5Bc2tlZFRvQ3JlYXRlTGF5ZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDMxLDcgKzM0MzAsNyBAQCAtICh2b2lkKWxlZ2li
bGVPdXRwdXQ6KGlkKW91dHB1dCBkaWRPdXRwdXRBdHRyaWJ1dGVkU3RyaW5nczooTlNBcnJheSAq
KXN0cmluZ3MgbgogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTW92aWVPYnNlcnZlcj4gc3Ryb25n
U2VsZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHN0cm9uZ1N0cmluZ3MgPSBzdHJp
bmdzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBzdHJvbmdTYW1wbGVzID0gbmF0aXZlU2FtcGxl
czsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdTdHJpbmdzLCBzdHJv
bmdTYW1wbGVzLCBpdGVtVGltZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYg
PSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdTdHJpbmdzID0gV1RGTW92ZShzdHJvbmdTdHJp
bmdzKSwgc3Ryb25nU2FtcGxlcyA9IFdURk1vdmUoc3Ryb25nU2FtcGxlcyksIGl0ZW1UaW1lXSB7
CiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIGNhbGxiYWNrID0g
c3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM0NDcsOCArMzQ0Niw3IEBAIC0gKHZvaWQpb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOihpZClvdXRwdXQKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXI+IHN0cm9uZ1Nl
bGYgPSBzZWxmOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGZdIHsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyPihzZWxmKV0gewogICAgICAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrKQogICAgICAgICAgICAgY2Fs
bGJhY2stPmZsdXNoQ3VlcygpOwogICAgIH0pOwpAQCAtMzQ3Nyw3ICszNDc1LDcgQEAgLSAoQk9P
TClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIg
c2hvdWxkV2FpdEZvckxvYWQKIAogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTG9hZGVyRGVsZWdh
dGU+IHN0cm9uZ1NlbGYgPSBzZWxmOwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdD4gc3Ryb25nUmVxdWVzdCA9IGxvYWRpbmdSZXF1ZXN0OwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1JlcXVlc3RdIHsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25nUmVxdWVzdCA9IFdU
Rk1vdmUoc3Ryb25nUmVxdWVzdCldIHsKICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrOwogICAgICAgICBp
ZiAoIWNhbGxiYWNrKSB7CiAgICAgICAgICAgICBbc3Ryb25nUmVxdWVzdCBmaW5pc2hMb2FkaW5n
V2l0aEVycm9yOm5pbF07CkBAIC0zNTAyLDcgKzM1MDAsNyBAQCAtIChCT09MKXJlc291cmNlTG9h
ZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9y
UmVzcAogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZT4gc3Ryb25nU2Vs
ZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHN0
cm9uZ0NoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdT
ZWxmLCBzdHJvbmdDaGFsbGVuZ2VdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxm
ID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25nQ2hhbGxlbmdlID0gV1RGTW92ZShzdHJvbmdD
aGFsbGVuZ2UpXSB7CiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMq
IGNhbGxiYWNrID0gc3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFj
aykgewogICAgICAgICAgICAgW1tzdHJvbmdDaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpzdHJvbmdDaGFsbGVuZ2UuZ2V0KCldOwpAQCAtMzUyNCw3ICszNTIy
LDcgQEAgLSAodm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVz
b3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9hZGluZ1IKIAogICAgIFJldGFpblB0cjxXZWJDb3JlQVZG
TG9hZGVyRGVsZWdhdGU+IHN0cm9uZ1NlbGYgPSBzZWxmOwogICAgIFJldGFpblB0cjxBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gc3Ryb25nUmVxdWVzdCA9IGxvYWRpbmdSZXF1ZXN0Owot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1JlcXVlc3RdIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25n
UmVxdWVzdCA9IFdURk1vdmUoc3Ryb25nUmVxdWVzdCldIHsKICAgICAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNr
OwogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFjay0+ZGlkQ2FuY2Vs
TG9hZGluZ1JlcXVlc3Qoc3Ryb25nUmVxdWVzdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggMTQzYzA0NjAzZjJiN2Q2ZjQxMDUzYWVhYjM3M2Y1YTU1YzE0MjNjYi4uYTBl
MGNmOTA0NzVmZGZkNjc3YjY3Y2ZhMDQ5MzJkYTc2ZWIxZTNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtMTI5LDggKzEyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRp
YyB2b2lkIENNVGltZWJhc2VFZmZlY3RpdmVSYXRlQ2hhbmdlZENhbGxiYWNrKENNTm90aWZpY2F0
aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkICpsaXN0ZW5lciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZv
aWQgKiwgQ0ZUeXBlUmVmKQogewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyogcGxheWVyID0gKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyopbGlz
dGVuZXI7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IHBsYXllci0+Y3JlYXRlV2Vha1B0cigpOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXXsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFr
VGhpcyA9IHBsYXllci0+Y3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdlYWtUaGlzLmdldCgpLT5lZmZlY3RpdmVS
YXRlQ2hhbmdlZCgpOwpAQCAtMzEyLDggKzMxMSw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwbGF5KCkKIHsKLSAgICBh
dXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dl
YWtUaGlzXXsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIo
KV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB3ZWFrVGhpcy5nZXQoKS0+cGxheUludGVybmFsKCk7CkBAIC0zMzIsOCArMzMwLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBsYXlJbnRlcm5hbCgpCiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYXVzZSgpCiB7Ci0g
ICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpc117CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFr
UHRyKCldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgd2Vha1RoaXMuZ2V0KCktPnBhdXNlSW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKaW5kZXggN2U0MjQwM2NlYWY4NTYyNjMyNDU3ZTcxZGYwODI4NmU1ZDFmM2NkNy4uMDU3
ZDI2M2U5N2E1M2EwZTdiNjE5NTM0NjhkZWMwYmY4OTBkZjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMTQyLDcgKzE0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVUcmFja3MoKTsKICAgICB2b2lkIHJlbmRlcmluZ01vZGVDaGFu
Z2VkKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9u
JiYpOwogCiAgICAgZW51bSBEaXNwbGF5TW9kZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KaW5kZXggZThjYWJlZDhjMWQxNzIzNjZhNjhmZWYzNjc0NzQxMmJlN2Jl
OTM1OS4uYWE1ZTQ1OTIxMDkwMTcwNzRiMDUyMDgyOWIxNzI2OTllYzQ5MDE3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNjI0LDExICs2MjQsMTAgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6
TmV0d29ya1MKICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRh
c2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVu
Y3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIGF1dG8gd2Vh
a1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMs
IGZ1bmN0aW9uXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFr
UHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBjNTZmMjFmNjZjOGQ2YmY3
NTlmMDQ0MTJjZDQzYWY5Y2IwNDI3MGYxLi41NWE3NGMwZWFmNzMxOTM3ZDQxYWIyMTE0NjcxOTI2
MTczOWQxOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTgyLDcgKzE4Miw3IEBAIC0gKHZvaWQpc3RyZWFtRGF0
YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJzZVN0
cmVhbURhCiAgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBzdHJv
bmdTZWxmID0gc2VsZjsKIAogICAgIFJldGFpblB0cjxBVkFzc2V0Kj4gc3Ryb25nQXNzZXQgPSBh
c3NldDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdBc3NldF0gewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBz
dHJvbmdBc3NldCA9IFdURk1vdmUoc3Ryb25nQXNzZXQpXSB7CiAgICAgICAgIGlmIChzdHJvbmdT
ZWxmLT5fcGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChzdHJvbmdBc3NldC5nZXQoKSk7CiAgICAgfSk7CkBAIC0xOTgsNyAr
MTk4LDcgQEAgLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGEKICAgICBSZXRhaW5QdHI8V2ViQVZTdHJl
YW1EYXRhUGFyc2VyTGlzdGVuZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOwogCiAgICAgUmV0YWluUHRy
PEFWQXNzZXQqPiBzdHJvbmdBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0
cm9uZ1NlbGYsIHN0cm9uZ0Fzc2V0XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2Vs
ZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHN0cm9uZ0Fzc2V0ID0gV1RGTW92ZShzdHJvbmdBc3Nl
dCldIHsKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJv
bmdTZWxmLT5fcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHN0cm9uZ0Fzc2V0Lmdl
dCgpKTsKICAgICB9KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJz
ZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VT
dAogICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gc3Ryb25nU2Vs
ZiA9IHNlbGY7CiAKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gc3Ryb25nRXJyb3IgPSBlcnJvcjsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdFcnJvcl0geworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdF
cnJvciA9IFdURk1vdmUoc3Ryb25nRXJyb3IpXSB7CiAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5f
cGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yKHN0cm9uZ0Vycm9yLmdldCgpKTsKICAgICB9KTsKQEAgLTIyOSw3
ICsyMjksNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAq
KXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZU1lZGlhRAogCiAgICAgUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBzdHJvbmdTYW1wbGUgPSBzYW1wbGU7CiAgICAgU3RyaW5nIG1lZGlhVHlw
ZSA9IG5zTWVkaWFUeXBlOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9u
Z1NhbXBsZSwgdHJhY2tJRCwgbWVkaWFUeXBlLCBmbGFnc10geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdTYW1wbGUgPSBXVEZN
b3ZlKHN0cm9uZ1NhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSwgZmxhZ3NdIHsKICAgICAgICAg
aWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50
LT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzdHJvbmdTYW1wbGUuZ2V0
KCksIG1lZGlhVHlwZSwgZmxhZ3MpOwogICAgIH0pOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIC0gKHZv
aWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNl
ciBkaWRSZWFjaEVuZE9mVHJhCiAgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxp
c3RlbmVyPiBzdHJvbmdTZWxmID0gc2VsZjsKIAogICAgIFN0cmluZyBtZWRpYVR5cGUgPSBuc01l
ZGlhVHlwZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCB0cmFja0lELCBtZWRp
YVR5cGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJv
bmdTZWxmKSwgdHJhY2tJRCwgbWVkaWFUeXBlXSB7CiAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5f
cGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkUmVhY2hFbmRPZlRy
YWNrV2l0aFRyYWNrSUQodHJhY2tJRCwgbWVkaWFUeXBlKTsKICAgICB9KTsKQEAgLTI3Niw3ICsy
NzYsNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0
cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
c3Ryb25nRGF0YSA9IGluaXREYXRhOwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3NlbWFwaG9y
ZV90PiBoYXNTZXNzaW9uU2VtYXBob3JlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9zZW1hcGhv
cmVfY3JlYXRlKDApKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdE
YXRhLCB0cmFja0lELCAgaGFzU2Vzc2lvblNlbWFwaG9yZV0geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdEYXRhID0gV1RGTW92
ZShzdHJvbmdEYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSA9IFdURk1vdmUoaGFz
U2Vzc2lvblNlbWFwaG9yZSldIHsKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAg
ICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHN0cm9uZ0RhdGEuZ2V0KCksIHRyYWNrSUQs
IGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogICAgIH0pOwpAQCAtMzg5LDEzICszODksMTMgQEAgLSAo
dm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6
KGlkKW9iamVjdCBjaGFuZ2U6KE4KIAogICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAi
ZXJyb3IiXSkgewogICAgICAgICAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW2NoYW5n
ZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKLSAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIGxheWVyLCBlcnJvcl0geworICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIGxheWVyID0g
V1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKICAgICAgICAgICAgICAg
ICBzdHJvbmdTZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQoKSwg
ZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvOkAib3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJv
dGVjdGlvbiJdKSB7CiAgICAgICAgICAgICBpZiAoW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlW
YWx1ZUNoYW5nZU5ld0tleV0gYm9vbFZhbHVlXSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0
cjxOU0Vycm9yPiBlcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5X
ZWJLaXQiIGNvZGU6J0hEQ1AnIHVzZXJJbmZvOm5pbF07Ci0gICAgICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVycm9yXSB7CisgICAgICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIGxheWVy
ID0gV1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKICAgICAgICAgICAg
ICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+bGF5ZXJEaWRSZWNlaXZlRXJyb3IobGF5ZXIu
Z2V0KCksIGVycm9yLmdldCgpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0K
QEAgLTQwOSw3ICs0MDksNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3Ry
aW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICBBU1NF
UlQoX3JlbmRlcmVycy5jb250YWlucyhyZW5kZXJlci5nZXQoKSkpOwogICAgICAgICBBU1NFUlQo
W2tleVBhdGggaXNFcXVhbFRvOkAiZXJyb3IiXSk7CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbc3Ryb25nU2VsZiwgcmVuZGVyZXIsIGVycm9yXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCByZW5kZXJlciA9IFdURk1vdmUo
cmVuZGVyZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CiAgICAgICAgICAgICBzdHJvbmdT
ZWxmLT5fcGFyZW50LT5yZW5kZXJlckRpZFJlY2VpdmVFcnJvcihyZW5kZXJlci5nZXQoKSwgZXJy
b3IuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKQEAgLTQyMiw3ICs0MjIsNyBAQCAt
ICh2b2lkKWxheWVyRmFpbGVkVG9EZWNvZGU6KE5TTm90aWZpY2F0aW9uKilub3RlCiAgICAgUmV0
YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW1tub3RlIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckZhaWxlZFRvRGVjb2RlTm90aWZpY2F0aW9uRXJyb3JLZXld
OwogCiAgICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lcj4gc3Ryb25n
U2VsZiA9IHNlbGY7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVy
cm9yXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25n
U2VsZiksIGxheWVyID0gV1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsK
ICAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fcGFyZW50IHx8ICFzdHJvbmdTZWxmLT5fbGF5ZXJz
LmNvbnRhaW5zKGxheWVyLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3Ry
b25nU2VsZi0+X3BhcmVudC0+bGF5ZXJEaWRSZWNlaXZlRXJyb3IobGF5ZXIuZ2V0KCksIGVycm9y
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA5ZWNlYzUyMWE5ODk3NGVlNzAzZTNkNGQ5
MjMzNmQwZWE0ZGE2Y2I2Li4yMWY1MzM4YjI2ZjUzYzE1MmJkYmJlYzQ2MDFhZmI5ODc2MjVhZGQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yOTUsOCArMjk1LDcgQEAgc3RhdGljIHZvaWQgZHJh
d1BhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKIAogc3Rh
dGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogewotICAgIGF1dG8g
aW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtpbWFnZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gc3RhdGljX2Nhc3Q8
Q0dJbWFnZVJlZj4oaW5mbyldIHsKICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKaW5kZXggYjMwMzNmZTA1MTBmNzlkMjUxMmE0MDZiYjFiZGRmMjk1YWZhNWEzNC4u
YjQyOGQ1MGQ5NGJmOTI0MjgwMzI4N2QyZWVjMTZiZDY5YzUyOGQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC01Niw5ICs1
Niw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBp
bmZvKQogewotICAgIGF1dG8gaW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsK
LQotICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
aW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKV0gewogICAgICAgICBDR0ltYWdl
UmVsZWFzZShpbWFnZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IDhlNTc3ZmZhNGE4MDQ4ZDE2NGUyOWYwNmQ3NGM0
NGI4OWVjODM3N2YuLmVkMzJkMTlmNzQxNDE3ZDU5NmE5NjI4YmNjNTcyYzRmYjVjZjg4YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC00
ODYsOCArNDg2LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmVu
ZENyZWF0ZWRNZWRpYVNvdXJjZShJTUZBc3luY1Jlc3VsdCogYXMKICAgICBociA9IGFzeW5jUmVz
dWx0LT5HZXRTdGF0dXMoKTsKICAgICBtX2xvYWRpbmdQcm9ncmVzcyA9IFNVQ0NFRURFRChocik7
CiAKLSAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlm
ICghd2Vha1B0cikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2Vha1B0ci0+b25DcmVh
dGVkTWVkaWFTb3VyY2UoKTsKQEAgLTUxNiw4ICs1MTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5kR2V0RXZlbnQoSU1GQXN5bmNSZXN1bHQqIGFzeW5jUmVz
dWx0KQogCiAgICAgc3dpdGNoIChtZWRpYUV2ZW50VHlwZSkgewogICAgIGNhc2UgTUVTZXNzaW9u
VG9wb2xvZ3lTZXQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5j
cmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRl
V2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25Ub3BvbG9neVNldCgpOwpAQCAtNTI2LDgg
KzUyNCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRHZXRF
dmVudChJTUZBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQpCiAgICAgfQogCiAgICAgY2FzZSBNRUJ1
ZmZlcmluZ1N0YXJ0ZWQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9y
eS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3Jl
YXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25CdWZmZXJpbmdTdGFydGVkKCk7CkBA
IC01MzYsOCArNTMzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OmVuZEdldEV2ZW50KElNRkFzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCkKICAgICB9CiAKICAgICBj
YXNlIE1FQnVmZmVyaW5nU3RvcHBlZDogewotICAgICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQ
dHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vh
a1B0cl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFj
dG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1B0cikKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5vbkJ1ZmZlcmluZ1N0b3Bw
ZWQoKTsKQEAgLTU0Niw4ICs1NDIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6ZW5kR2V0RXZlbnQoSU1GQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0KQogICAgIH0K
IAogICAgIGNhc2UgTUVTZXNzaW9uRW5kZWQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93
ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtQdHJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0
ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25TZXNzaW9uRW5k
ZWQoKTsKQEAgLTE2NzUsOCArMTY3MCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6cHJvY2Vzc0lucHV0Tm90CiAgICAg
CiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgdmlkZW8gYXJlYQogICAgIGlmIChtX21lZGlhUGxheWVy
KSB7Ci0gICAgICAgIGF1dG8gd2Vha1B0ciA9IG1fbWVkaWFQbGF5ZXItPm1fd2Vha1B0ckZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyXSB7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtX21lZGlhUGxheWVyLT5tX3dl
YWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICAgICAgaWYgKHdlYWtQdHIp
CiAgICAgICAgICAgICAgICAgd2Vha1B0ci0+aW52YWxpZGF0ZUZyYW1lVmlldygpOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCmluZGV4IGRmNjYwNzAyNTQ1ZDllN2JkOTI4YzY1ZmU2
MDNmOTk1NTdmZmRmM2YuLjQyZDI0NjZjMmJmNjMxZjBlZmZhY2NmOTRmNDAwMjgxMGE3ZDAyNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmNwcApAQCAtMjk5LDExICsyOTksMTAgQEAgdm9pZCBNZWRpYVN0
cmVhbVByaXZhdGU6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogICAgIH0p
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQordm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNj
aGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGZ1bmN0aW9uXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92
ZShmdW5jdGlvbildIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVByaXZhdGUuaAppbmRleCA2YmFlNzNjZTkyYjFhNjA1OWYyZmM3YWVkMWQ3YjJi
OTk4OWJmODliLi5iZjJmYWUwMTBmMTEzZjQwYmVjODAyMjFhNTMzODlhYWNkNDlhNWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVByaXZhdGUuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhcmFjdGVy
aXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVmlkZW9UcmFjaygpOwogCi0g
ICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAg
IHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbiYmKTsKIAogICAg
IFdlYWtQdHJGYWN0b3J5PE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAg
ICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
LmgKaW5kZXggZmJhNTI4MzgxOTUyYTI1MmViYjU4NDM3MDQyODQxMGY0NmJkNTUyYi4uMmM5YjBk
MTA0OWZiMGQ3OGMzNzMyYzQ0NzUwMjlkZjYzZDU1MzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJl
U291cmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgi
CiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtODUsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZVZpZGVvRGF0YU91
dHB1dCopOwogICAgIHZvaWQgc2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVB
dWRpb0RhdGFPdXRwdXQqKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpm
dW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5
YWJsZUZ1bmN0aW9uJiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRp
YUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KaW5kZXggYzA2MTJjNTIzOThmMmZkNTcwNTIzOTEz
NjA0Y2IxZGM5OTdjYzMxNC4uNzkxNWE4NDJlYTgzZGQzNTdkMmI0Mjg4YTU3OWJmYzEzODBiNzZj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjQwLDEyICsyNDAsMTAgQEAg
dm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShB
VkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQKICAgICBbYXVkaW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVy
RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6Z2xvYmFBdWRpb0NhcHR1cmVTZXJp
YWxRdWV1ZSgpXTsKIH0KIAotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZl
cnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3ZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBm
dW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotCi0gICAgYXV0byB3ZWFrVGhpcyA9
IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgZnVuY3Rp
b25dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYy5jcHAKaW5kZXggMjQ5OWNmM2MzZmMzOGNjMmYyNDkwNzFjMWM4NmM0MjRlNjVkMzA4
MC4uZGVhN2E3YzI5NzRlM2Q4YTllMGRiODE3N2Q5NmI5ZTRlMmYxOGMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMTYzLDEwICsxNjMsOSBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqCiBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsK
LQogICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBzb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8ocmVxdWVzdENsaWVudC0+cmVxdWVzdE9y
aWdpbigpKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQsIHNv
dXJjZXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCByZXF1ZXN0Q2xpZW50ID0gV1RG
TW92ZShyZXF1ZXN0Q2xpZW50KSwgc291cmNlcyA9IFdURk1vdmUoc291cmNlcyldIHsKICAgICAg
ICAgcmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KHNvdXJj
ZXMpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9i
akMubW0KaW5kZXggN2I4ZDYxY2FlMDkyOWZkYWY0NjA3MGU1YTc3NzBmMmUzZWU4ODE1ZC4uMmU2
YzM3YTlhNmZmZTEzOTNiMGM2NDA4ZTJmNGIxYmYyNzY2NjEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9X
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBmCiAgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9IG51bWJlck9m
Q2hhbm5lbHM7CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IHN0
cm9uZ1RoaXMgPSB0aGlzOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXMsIG51bWJl
ck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdU
aGlzID0gV1RGTW92ZShzdHJvbmdUaGlzKSwgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0g
ewogICAgICAgICBpZiAoc3Ryb25nVGhpcy0+bV9jbGllbnQpCiAgICAgICAgICAgICBzdHJvbmdU
aGlzLT5tX2NsaWVudC0+c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA5MDkzNTc5NDhkNThhMTVl
MDdjYTM3OTZjMzgwZTEzOGZlOGY1MzJiLi5hYWU4MDgzOTExNWZmOWJhZmI5NDhjODI1NmYzODM0
YjQ4Yjg2ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMTU5LDcgKzE1OSw3
IEBAIGJvb2wgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmdldE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTCiAgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291cmNlV2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6bW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCksIG51bGxwdHIpKTsKICAgICBzb3VyY2Vz
LmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgbnVsbHB0
cikpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCwgc291cmNl
c10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQgPSBXVEZNb3Zl
KHJlcXVlc3RDbGllbnQpLCBzb3VyY2VzID0gV1RGTW92ZShzb3VyY2VzKV0gewogICAgICAgICBy
ZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3Qoc291cmNlcyk7
CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCA1M2ViMjVhMDRkMTE0YmIwY2M1OGRhN2ZlYjE1
YmJhMWY3Yzc0NTkzLi40ODRlOTIxZWM3NTQ4YmI2YzMzYTI2NDQ4ZTZkNzc2NzRhNTczZDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwCkBAIC0xODcsMTAgKzE4Nyw4IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxl
OjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8QmxvYlJlc291
cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCiAgICAgLy8gRmluaXNoIHRoaXMgYXN5
bmMgY2FsbCBxdWlja2x5IGFuZCByZXR1cm4uCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8Qmxv
YlJlc291cmNlSGFuZGxlPigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRvU3RhcnQoKTsKICAgICB9KTsKIH0KQEAgLTY2NSw5ICs2NjMsOCBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6bm90aWZ5RmluaXNoKCkKIAogICAgIC8vIFNjaGVkdWxlIHRvIG5vdGlm
eSB0aGUgY2xpZW50IGZyb20gYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNsaWVu
dCBtaWdodCBkaXNwb3NlIHRoZSBoYW5kbGUgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY2FsbGJhY2sg
ZnVuY3Rpb24KICAgICAvLyB3aGlsZSB3ZSBzdGlsbCBoYXZlIEJsb2JSZXNvdXJjZUhhbmRsZSBj
YWxscyBpbiB0aGUgc3RhY2suCi0gICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7Ci0g
ICAgICAgIGRvTm90aWZ5RmluaXNoKCpwcm90ZWN0ZWRUaGlzKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4oKnRoaXMpXSgpIG11
dGFibGUgeworICAgICAgICBkb05vdGlmeUZpbmlzaChwcm90ZWN0ZWRUaGlzKTsKICAgICB9KTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmNwcAppbmRleCBlNDBlZDNmOGEwMDVmNmMwMmFlMmQwMzQ2YThkMzZlNGQ4ZWIyMmQxLi43
Nzk4ZjkxOWU5NGZlYmUwOWJjMGMxODRkNjdkODljODdkZDc0MGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTY4LDI1
ICsxNjgsMjEgQEAgc3RhdGljIHZvaWQgZGVjb2RlRXNjYXBlZChEZWNvZGVUYXNrJiB0YXNrKQog
ICAgIHRhc2sucmVzdWx0LmRhdGEgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7
CiB9CiAKLXZvaWQgZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQm
IHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIGRlY29kZShjb25zdCBVUkwmIHVybCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBz
Y2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIAogICAgIGF1dG8gZGVj
b2RlVGFzayA9IGNyZWF0ZURlY29kZVRhc2sodXJsLCBzY2hlZHVsZUNvbnRleHQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBhdXRvKiBkZWNvZGVUYXNrUHRyID0gZGVjb2RlVGFz
ay5yZWxlYXNlKCk7Ci0gICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFza1B0cl0g
ewotICAgICAgICBhdXRvJiBkZWNvZGVUYXNrID0gKmRlY29kZVRhc2tQdHI7Ci0KLSAgICAgICAg
aWYgKGRlY29kZVRhc2suaXNCYXNlNjQpCi0gICAgICAgICAgICBkZWNvZGVCYXNlNjQoZGVjb2Rl
VGFzayk7CisgICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFzayA9IFdURk1vdmUo
ZGVjb2RlVGFzayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChkZWNvZGVUYXNrLT5pc0Jhc2U2
NCkKKyAgICAgICAgICAgIGRlY29kZUJhc2U2NCgqZGVjb2RlVGFzayk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGRlY29kZUVzY2FwZWQoZGVjb2RlVGFzayk7CisgICAgICAgICAgICBkZWNv
ZGVFc2NhcGVkKCpkZWNvZGVUYXNrKTsKIAogI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICAg
ICAgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyOjpkaXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2RlVGFzaz4oZGVjb2RlVGFza1B0cikpOworICAgICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNo
ZXI6OmRpc3BhdGNoKFdURk1vdmUoZGVjb2RlVGFzaykpOwogI2Vsc2UKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZGVjb2RlVGFza1B0cl0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PERlY29kZVRhc2s+IGRlY29kZVRhc2soZGVjb2RlVGFza1B0cik7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2RlY29kZVRhc2sgPSBXVEZNb3ZlKGRlY29kZVRhc2spXSB7CiAgICAgICAgICAg
ICBpZiAoIWRlY29kZVRhc2stPnJlc3VsdC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgZGVjb2Rl
VGFzay0+Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5k
ZXggNjQzMzM3Njc0MGRkZDU2MDAwN2VjZTQyZmNkNzM4M2M5NmZhZmU5NC4uNGMwMTEyMTA4MTg1
NDg1NzYxNTkzYTQzOTY1NmNjYWM4NzZjNWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3Qg
U2NoZWR1bGVDb250ZXh0IHsKICNlbmRpZgogfTsKIAotdm9pZCBkZWNvZGUoY29uc3QgVVJMJiwg
Y29uc3QgU2NoZWR1bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIpOwordm9pZCBk
ZWNvZGUoY29uc3QgVVJMJiwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlv
bkhhbmRsZXImJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGE3MzY3NWEy
ODcxMGQ1YTI5YWNkMzU5NThlZDBiYTFjMTEyY2Y0ZGQuLmJjZWIyMmQ1MTAxYjM1Mzk4NzcxY2Zh
MzExYWUzMWI0MzdiN2RlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkyLDEwICs5
Miw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIGZvciAoYXV0byYgdGFzayA6IF9kYXRhVGFza3Mp
CiAgICAgICAgIHRhc2suZ2V0KCkuc2Vzc2lvbiA9IG5pbDsKIAotICAgIC8vIEZJWE1FKEMrKzE0
KTogV2hlbiB3ZSBjYW4gbW92ZSBSZWZQdHJzIGRpcmVjdGx5IGludG8gYmxvY2tzLCByZXBsYWNl
IHRoaXMgd2l0aCBhIFJlZlB0ciYmOgotICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlciogbG9hZGVyID0gX2xvYWRlci5sZWFrUmVmKCk7Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbbG9hZGVyXSB7Ci0gICAgICAgIGxvYWRlci0+ZGVyZWYoKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2FkZXIpXSB7CiAgICAgfSk7CiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQpAQCAtNDY2LDggKzQ2Myw3IEBAIC0gKE5TVVJMUmVzcG9uc2UgKilyZXNwb25z
ZQogLSAodm9pZCljYW5jZWwKIHsKICAgICBzZWxmLnN0YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0
YXRlQ2FuY2VsaW5nOwotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+
IHN0cm9uZ1NlbGYgeyBzZWxmIH07Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrPihzZWxmKV0gewogICAgICAgICBbc3Ryb25nU2VsZiBfY2FuY2Vs
XTsKICAgICAgICAgW3N0cm9uZ1NlbGYgX2ZpbmlzaF07CiAgICAgfSk7CkBAIC00NzUsOCArNDcx
LDcgQEAgLSAodm9pZCljYW5jZWwKIAogLSAodm9pZClzdXNwZW5kCiB7Ci0gICAgUmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKLSAgICBj
YWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ry
b25nU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7
CiAgICAgICAgIC8vIE5TVVJMU2Vzc2lvbkRhdGFUYXNrcyBtdXN0IHN0YXJ0IG92ZXIgYWZ0ZXIg
c3VzcGVuZGluZywgc28gd2hpbGUKICAgICAgICAgLy8gd2UgY291bGQgZGVmZXIgbG9hZGluZyBh
dCB0aGlzIHBvaW50LCBpbnN0ZWFkIGNhbmNlbCBhbmQgcmVzdGFydAogICAgICAgICAvLyB1cG9u
IHJlc3VtZSBzbyBhcyB0byBhZGhlcmUgdG8gTlNVUkxTZXNzaW9uRGF0YVRhc2sgc2VtYW50aWNz
LgpAQCAtNDg3LDggKzQ4Miw3IEBAIC0gKHZvaWQpc3VzcGVuZAogCiAtICh2b2lkKXJlc3VtZQog
ewotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYg
eyBzZWxmIH07Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0geworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrPihzZWxmKV0gewogICAgICAgICBpZiAoc3Ryb25nU2VsZi5nZXQoKS5zdGF0ZSAhPSBO
U1VSTFNlc3Npb25UYXNrU3RhdGVTdXNwZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9h
ZC5jcHAKaW5kZXggYzZjODc5N2JiY2EwMmM5NTliZDUzM2U2NDhlY2U0ZDcxZjRhNDc4MC4uZGNk
NmI4ZGFjNmM1MWYyODU1MWM4YmM0YTg5MWM5MWQ2MzBjMTVhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTQw
MiwxMCArNDAyLDggQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3Qg
U3RyaW5nJiBoZWFkZXIpCiAgICAgICAgIENVUkxjb2RlIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZv
KG1fY3VybEhhbmRsZSwgQ1VSTElORk9fUkVTUE9OU0VfQ09ERSwgJmh0dHBDb2RlKTsKIAogICAg
ICAgICBpZiAoaHR0cENvZGUgPj0gMjAwICYmIGh0dHBDb2RlIDwgMzAwKSB7Ci0gICAgICAgICAg
ICBVUkxDYXB0dXJlIGNhcHR1cmVkVXJsKGdldEN1cmxFZmZlY3RpdmVVUkwobV9jdXJsSGFuZGxl
KSk7Ci0gICAgICAgICAgICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjYXB0dXJlZFVybCwgcHJv
dGVjdGVkVGhpc10geworICAgICAgICAgICAgVVJMIHVybCA9IGdldEN1cmxFZmZlY3RpdmVVUkwo
bV9jdXJsSGFuZGxlKTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHVybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgcHJvdGVjdGVkVGhpcyA9IFJlZjxDdXJsRG93bmxvYWQ+KCp0
aGlzKV0gewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKGNhcHR1cmVkVXJsLnVy
bCgpKTsKICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVu
Y29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkpOwpAQCAtNDE0LDE0ICs0MTIs
MTAgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBo
ZWFkZXIpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAg
IFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRIZWFkZXIoaGVhZGVyKTsKLQotICAgICAgICBSZWZQdHI8
Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCi0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIGNhcHR1cmVkSGVhZGVyLCBwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgICAg
ICBpbnQgc3BsaXRQb3MgPSBjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5maW5kKCI6Iik7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGhlYWRlciA9IGhlYWRlci5pc29sYXRlZENvcHko
KSwgcHJvdGVjdGVkVGhpcyA9IFJlZjxDdXJsRG93bmxvYWQ+KCp0aGlzKV0geworICAgICAgICAg
ICAgaW50IHNwbGl0UG9zID0gaGVhZGVyLnN0cmluZygpLmZpbmQoIjoiKTsKICAgICAgICAgICAg
IGlmIChzcGxpdFBvcyAhPSAtMSkKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5sZWZ0KHNwbGl0UG9zKSwgY2FwdHVy
ZWRIZWFkZXIuc3RyaW5nKCkuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3RyaXBXaGl0ZVNwYWNl
KCkpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGhlYWRl
ci5zdHJpbmcoKS5sZWZ0KHNwbGl0UG9zKSwgaGVhZGVyLnN0cmluZygpLnN1YnN0cmluZyhzcGxp
dFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBiNWNjZjViYTM5OGQz
M2IzMzk1NGU1NDI1MWU0NGEwYTliMzU4MDJlLi41MjRmYTI2ZGZkMzc1MzhlZTFlOGU0N2UwMjA2
ZjI0ZWMyNThkMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNw
cApAQCAtNTE0LDEwICs1MTQsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlE
YXRhYmFzZSgpCiAgICAgICAgIHF1ZXJ5LmZpbmFsaXplKCk7CiAgICAgICAgIG1fZGF0YWJhc2Uu
Y2xvc2UoKTsKICAgICAgICAgaWYgKFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuaXNBY3RpdmUo
KSkgewotICAgICAgICAgICAgU3RyaW5nSW1wbCogZGF0YWJhc2VJZGVudGlmaWVyQ29weSA9ICZt
X2RhdGFiYXNlSWRlbnRpZmllci5pbXBsKCktPmlzb2xhdGVkQ29weSgpLmxlYWtSZWYoKTsKLSAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RhdGFiYXNlSWRlbnRpZmllckNvcHldIHsKLSAg
ICAgICAgICAgICAgICBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbldpdGhJ
ZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllckNvcHkpOwotICAgICAgICAgICAgICAgIGRhdGFi
YXNlSWRlbnRpZmllckNvcHktPmRlcmVmKCk7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtkYXRhYmFzZUlkZW50aWZpZXIgPSBtX2RhdGFiYXNlSWRlbnRpZmllci5pc29sYXRlZENvcHko
KV0geworICAgICAgICAgICAgICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3Jp
Z2luV2l0aElkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGRhdGFiYXNlRmlsZW5hbWUgPSBt
X3N5bmNNYW5hZ2VyLT5mdWxsRGF0YWJhc2VGaWxlbmFtZShtX2RhdGFiYXNlSWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDAz
NmQ2YmE2OTZmMDA4OGNjZjc0ZDZhYWE1OWYzY2ExNjI5OGQzYzAuLjNlMWYxYzQwMmFkYmJlMmZl
YmE4ODU1OGNiNWYwNGNlNDgxYjUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlU3luY01hbmFnZXIuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgU3RyaW5nIFN0b3JhZ2VTeW5j
TWFuYWdlcjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50
aWZpZXIKICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJh
c2VJZGVudGlmaWVyICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAotdm9pZCBTdG9yYWdlU3luY01h
bmFnZXI6OmRpc3BhdGNoKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKQor
dm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBm
dW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3Ro
cmVhZCk7CiAKICAgICBpZiAobV90aHJlYWQpCi0gICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChm
dW5jdGlvbik7CisgICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiB9CiAKIHZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKaW5kZXggMDI4NzcyMTA1ZjIyZGEzMjk1MDMwNTNk
OWRiYjU0MWI5M2Y3OTM5OC4uODc3ZGY3MDFhMTMxMTJkZDg0ZDkzNWEyMDgxOTAzNjE2YTQyZDQy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNDIsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9y
YWdlU3luY01hbmFnZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIH5TdG9yYWdl
U3luY01hbmFnZXIoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiYpOworICAgIHZvaWQgZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYmKTsKICAg
ICB2b2lkIGNsb3NlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRo
cmVhZC5jcHAKaW5kZXggOGNhOGJjZWQ4MDk4MjJmZjY2N2UzZDMxZWI3Mjk0NjBkZGVkZmQxNC4u
NzRlYTg1ZjJlMzZhMjIxYWQ3NTI0ZmVlYTdhMjEwYjE4ZjQxZDQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNzQsMTEgKzc0LDExIEBAIHZvaWQgU3RvcmFn
ZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludCgpCiAgICAgfQogfQogCi12b2lkIFN0b3JhZ2VUaHJl
YWQ6OmRpc3BhdGNoKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKQordm9p
ZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24p
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2ls
bGVkKCkgJiYgbV90aHJlYWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PihmdW5jdGlvbikpOworICAgIG1fcXVldWUuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlvbj4oV1RGTW92ZShmdW5jdGlvbikp
KTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQpAQCAtOTAsNyArOTAsNyBA
QCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAgaWYgKCFtX3RocmVhZElEKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPihbdGhpc10gewogICAgICAgICBwZXJmb3Jt
VGVybWluYXRlKCk7CiAgICAgfSkpOwogICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fdGhy
ZWFkSUQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKICAgICBIYXNoU2V0PFN0b3JhZ2VUaHJl
YWQqPiYgdGhyZWFkcyA9IGFjdGl2ZVN0b3JhZ2VUaHJlYWRzKCk7CiAKICAgICBmb3IgKEhhc2hT
ZXQ8U3RvcmFnZVRocmVhZCo+OjppdGVyYXRvciBpdCA9IHRocmVhZHMuYmVnaW4oKSwgZW5kID0g
dGhyZWFkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+ZGlzcGF0Y2go
V1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkpOworICAgICAgICAoKml0KS0+ZGlzcGF0
Y2goW10oKSB7IFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7IH0pOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAppbmRleCBkZjUyYWM2MTIxYzg0NjZk
NDg2ZTRhNGRjOWVmM2E0ZTI4ODczZmU1Li5lZDAxYzFjOTQ5ODQyYmQ0NjQ4NzRjY2MzYTQ1YjQy
YjI2MDM0MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgKQEAgLTI3LDkg
KzI3LDkgQEAKICNkZWZpbmUgU3RvcmFnZVRocmVhZF9oCiAKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHRlcm1p
bmF0ZSgpOwogCi0gICAgdm9pZCBkaXNwYXRjaChjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
KTsKKyAgICB2b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb24mJik7CiAKICAgICBzdGF0
aWMgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKIApAQCAt
NTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVRlcm1pbmF0ZSgpOwogCiAg
ICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3NhZ2VRdWV1ZTxzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4+IG1fcXVldWU7CisgICAgTWVzc2FnZVF1ZXVlPE5vbmNvcHlhYmxlRnVu
Y3Rpb24+IG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCA4ZDgwZDRkZDA2NjQ5ZTNjMGRiMzNj
NDgwZjcyOTVhZjIwMWM2ZjNmLi45YjM2YTczZWY4NzY3NDBkM2RiNDNlMWE5MzhmOWZhOWJiNWYy
YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTI5Myw5
ICsyOTMsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJE
YXRhYmFzZSgpCiAgICAgICAgIGlmIChmb3VuZE9yaWdpbnMuY29udGFpbnMob3JpZ2luSWRlbnRp
ZmllcikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgb3JpZ2luSWRl
bnRpZmllckNvcHkgPSBvcmlnaW5JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOwotICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCBvcmlnaW5JZGVudGlmaWVyQ29weV0gewotICAgICAgICAg
ICAgZGVsZXRlT3JpZ2luV2l0aElkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllckNvcHkpOworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luSWRl
bnRpZmllci5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgZGVsZXRlT3JpZ2luV2l0aElk
ZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcik7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTMx
NCwxOSArMzEzLDE3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldE9yaWdpbkRldGFpbHMoY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpCiAgICAgICAgIG1fb3JpZ2lu
U2V0LmFkZChvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBTdHJpbmcgb3JpZ2luSWRl
bnRpZmllckNvcHkgPSBvcmlnaW5JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOwotICAgIFN0cmlu
ZyBkYXRhYmFzZUZpbGVDb3B5ID0gZGF0YWJhc2VGaWxlLmlzb2xhdGVkQ29weSgpOwotICAgIGF1
dG8gZnVuY3Rpb24gPSBbdGhpcywgb3JpZ2luSWRlbnRpZmllckNvcHksIGRhdGFiYXNlRmlsZUNv
cHldIHsKLSAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRlbnRpZmllckNvcHks
IGRhdGFiYXNlRmlsZUNvcHkpOworICAgIGF1dG8gZnVuY3Rpb24gPSBbdGhpcywgb3JpZ2luSWRl
bnRpZmllciA9IG9yaWdpbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGRhdGFiYXNlRmlsZSA9
IGRhdGFiYXNlRmlsZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBzeW5jU2V0T3JpZ2luRGV0
YWlscyhvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZUZpbGUpOwogICAgIH07CiAKICAgICBpZiAo
aXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgQVNTRVJUKG1fdGhyZWFkKTsKLSAgICAgICAgbV90
aHJlYWQtPmRpc3BhdGNoKGZ1bmN0aW9uKTsKKyAgICAgICAgbV90aHJlYWQtPmRpc3BhdGNoKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogVGhpcyB3
ZWlyZCBwaW5nLXBvbmdpbmcgd2FzIGRvbmUgdG8gZml4IGEgZGVhZGxvY2suIFdlIHNob3VsZCBm
aWd1cmUgb3V0IGEgY2xlYW5lciB3YXkgdG8gYXZvaWQgaXQgaW5zdGVhZC4KLSAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgZnVuY3Rpb25dIHsKLSAgICAgICAgICAgIG1fdGhyZWFkLT5k
aXNwYXRjaChmdW5jdGlvbik7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGZ1bmN0
aW9uID0gV1RGTW92ZShmdW5jdGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3RocmVh
ZC0+ZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlvbikpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50Lm1tCmluZGV4IGRlYjRlNDEyZjJjODc3NWYyM2QxZjZlMmM3M2ViZmU4NjQyYzIxYWEuLjY4
MDMxYzFmODZhNDA4MmJhYWUwMmM5ODYwNzRjNWRkZGRkZDE2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCkBAIC0x
MDMsMjAgKzEwMywxOSBAQCBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQqIGNsaWVudCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICB7Ci0gICAgICAgIERpZE1v
ZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQgPSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShjbGllbnQs
IG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250
ZXh0XSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWRNb2RpZnlPcmlnaW5EYXRhPiBjb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdp
bi0+aXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0g
V1RGTW92ZShjb250ZXh0KV0gewogICAgICAgICAgICAgY29udGV4dC0+Y2xpZW50LT5kaXNwYXRj
aERpZE1vZGlmeU9yaWdpbihjb250ZXh0LT5vcmlnaW4uZ2V0KCkpOwotICAgICAgICAgICAgZGVs
ZXRlIGNvbnRleHQ7CiAgICAgICAgIH0pOwogICAgIH0KIAotcHJpdmF0ZToKICAgICBEaWRNb2Rp
ZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCiAgICAgICAgIDogY2xpZW50KGNsaWVudCkKICAgICAg
ICAgLCBvcmlnaW4ob3JpZ2luKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQ7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9y
YWdlVHJhY2tlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFn
ZVRyYWNrZXJDbGllbnQubW0KaW5kZXggN2U1ZDk5MTgxOTM3MDMzZjU4ZDQ5MjM2OGU0ZDlkZTZh
MWU2MjE3NS4uZDY4MGJjNDU3ZDFiYzlhODYzNDNlNDU3NTljNzNkODM4MmJmOWFkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tlckNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50
Lm1tCkBAIC01OCwxNSArNTgsMTUgQEAgdm9pZCBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6ZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4KIAogdm9pZCBX
ZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2lu
SWRlbnRpZmllcik7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKIAogICAgIGlmIChpc01haW5U
aHJlYWQoKSkgewotICAgICAgICBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW4pOworICAg
ICAgICBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXVEZNb3ZlKG9yaWdpbikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbb3JpZ2luXSB7Ci0gICAgICAg
IFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJTdG9yYWdlVHJhY2tlckNsaWVudCgp
LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIGNhbGxPbk1haW5U
aHJlYWQoW29yaWdpbiA9IFdURk1vdmUob3JpZ2luKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgV2Vi
U3RvcmFnZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50KCktPmRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdURk1vdmUob3JpZ2luKSk7CiAgICAgfSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280017</attachid>
            <date>2016-05-27 19:27:26 -0700</date>
            <delta_ts>2016-05-27 21:41:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158166-20160527192836.patch</filename>
            <type>text/plain</type>
            <size>101297</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRkNDNkZWE5MDg4OGMwNTkwYzIzMzUx
NDIxYjAyNmIyZTA2MGNlNDQuLjdiOTMxNDdiNzZiMDcyNGJiNTE2OTMxMTk4YTlhZGJjNTZjMmM4
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzcgQEAKIDIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAorICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5
IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkgY2Fw
dHVyZWQgbGFtYmRhIHZhcmlhYmxlcy4gVGhpcworICAgICAgICBmdW5jdGlvbiBpcyB1c3VhbGx5
IGNhbGxlZCBjcm9zcy10aHJlYWQgd2l0aCBhIGxhbWJkYSBhbmQgY29weWluZworICAgICAgICB0
aGUgbGFtYmRhIChhbmQgaXRzIGNhcHR1cmVkIHZhcmlhYmxlcykgY2FuIGxlYWQgdG8gdGhyZWFk
LXNhZmV0eQorICAgICAgICBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIGNh
bGxPbk1haW5UaHJlYWQoKSB0byB0YWtlIGEgTm9uY29weWFibGVGdW5jdGlvbiYmCisgICAgICAg
IGluIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgc3RkOjpmdW5jdGlvbi4gVGhlIGNhbGwgc2l0ZXMg
b2YKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQgdG8g
dXNlIEMrKzE0J3MgbGFtYmRhCisgICAgICAgIGNhcHR1cmUgd2l0aCBpbml0aWFsaXplci4KKwor
ICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogd3Rm
L0Z1bmN0aW9uRGlzcGF0Y2hlci5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6CisgICAg
ICAgIC0gTW92ZWQgTm9uY29weWFibGVGdW5jdGlvbiBmcm9tIEZ1bmN0aW9uRGlzcGF0Y2hlci5o
IHRvIEZ1bmN0aW9uYWwuaCwKKyAgICAgICAgICBhcyBzdWdnZXN0ZWQgYnkgQW5kZXJzLgorICAg
ICAgICAtIEFkZCBhIG5ldyBvcGVyYXRvcj0obnVsbHB0cl90KSBvcGVyYXRvciB0byBOb25jb3B5
YWJsZUZ1bmN0aW9uIHRvCisgICAgICAgICAgbWF0Y2ggc3RkOjpmdW5jdGlvbiwgYXMgb25lIG9m
IHRoZSBjYWxsIHNpdGVzIG5lZWRlZCBpdC4KKworICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNw
cDoKKyAgICAgICAgKFdURjo6ZnVuY3Rpb25RdWV1ZSk6CisgICAgICAgIChXVEY6OmRpc3BhdGNo
RnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpOgorICAgICAgICAoV1RGOjpjYWxsT25NYWluVGhyZWFk
KToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorCisyMDE2LTA1LTI3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgV29ya1F1ZXVlOjpkaXNwYXRjaCgpIC8g
UnVuTG9vcDo6ZGlzcGF0Y2goKSBzaG91bGQgbm90IGNvcHkgY2FwdHVyZWQgbGFtYmRhIHZhcmlh
YmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4
MTExCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA0ZmRiMmJjNWViMjU0YjE4NGFiMzY1ZGQ3ODQ1N2RhODdlZDQx
ZTVjLi4yNTQzMGEwYzkyYmEzYzFkYWU3YWM0ZmViNTJhNjZjODJkYzczZGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQzIEBACisyMDE2LTA1LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIHNob3VsZCBub3QgY29weSBjYXB0
dXJlZCBsYW1iZGEgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTgxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVk
IGxhbWJkYSB2YXJpYWJsZXMuIFRoaXMgCisgICAgICAgIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2Fs
bGVkIGNyb3NzLXRocmVhZCB3aXRoIGEgbGFtYmRhIGFuZCBjb3B5aW5nCisgICAgICAgIHRoZSBs
YW1iZGEgKGFuZCBpdHMgY2FwdHVyZWQgdmFyaWFibGVzKSBjYW4gbGVhZCB0byB0aHJlYWQtc2Fm
ZXR5CisgICAgICAgIGlzc3Vlcy4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FsbE9u
TWFpblRocmVhZCgpIHRvIHRha2UgYSBOb25jb3B5YWJsZUZ1bmN0aW9uJiYKKyAgICAgICAgaW4g
cGFyYW1ldGVyIGluc3RlYWQgb2YgYSBzdGQ6OmZ1bmN0aW9uLiBUaGUgY2FsbCBzaXRlcyBvZgor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0byB1c2Ug
QysrMTQncyBsYW1iZGEKKyAgICAgICAgY2FwdHVyZSB3aXRoIGluaXRpYWxpemVyLgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVBlcm1pc3Npb25DaGVjayk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYWNrU291cmNl
SW5mb1JlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6cnVuVGFzayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dDo6Y29uc3RyYWludHNWYWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdDo6dXNlck1lZGlhQWNjZXNzR3JhbnRlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzY2hl
ZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzUGxh
eWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU2Ny
aXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0
U2NyaXB0KToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVT
dHJlYW06OnBlcmZvcm0pOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6Cisg
ICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJs
b2JTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlOjpkaXNwYXRjaERpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGlzcGF0Y2hEaWRJbXBvcnRJY29uRGF0
YUZvclBhZ2VVUkxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2UvUmVzb3VyY2VVc2FnZVRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlP
YnNlcnZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVhZDo6dGhyZWFk
Qm9keSk6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhy
ZWFkOjpkaXNwYXRjaEJhcnJpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFk
OjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJ
T1M6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUlPUzo6c2Ny
b2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUlPUzo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYzo6cmVsZWFzZVJlZmVyZW5jZXNUb1Njcm9sbGVySW1wc09uVGhlTWFpblRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6CisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRp
c3BhdGNoTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKC1bV2Vi
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNMaXN0ZW5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW06CisgICAg
ICAgICgtW1dlYkFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJIZWxwZXIgb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcik6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9i
c2VydmVyIGxlZ2libGVPdXRwdXQ6ZGlkT3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6bmF0aXZlU2Ft
cGxlQnVmZmVyczpmb3JJdGVtVGltZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2Jz
ZXJ2ZXIgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZG
TG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVl
c3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgcmVz
b3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVy
OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZWJhc2VFZmZlY3RpdmVSYXRlQ2hhbmdlZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnBhdXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0Ol0pOgorICAgICAgICAoLVtX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQ6d2l0aERpc2NvbnRpbnVpdHk6XSk6CisgICAgICAgICgtW1dlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkRmFpbFRvUGFyc2VTdHJl
YW1EYXRhV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVNZWRpYURhdGE6Zm9yVHJhY2tJRDptZWRp
YVR5cGU6ZmxhZ3M6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
IHN0cmVhbURhdGFQYXJzZXI6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQ6bWVkaWFUeXBl
Ol0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRh
UGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JU
cmFja0lEOl0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAg
KC1bV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGxheWVyRmFpbGVkVG9EZWNvZGU6XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRDcmVhdGVkTWVkaWFTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRH
ZXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpwcm9jZXNzSW5wdXROb3RpZnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJl
ZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Z2V0
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRs
ZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlG
aW5pc2gpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJM
U2Vzc2lvbiBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
ayBjYW5jZWxdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHN1c3Bl
bmRdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc3VtZV0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOiBEZWxldGVkLgorCiAyMDE2LTA1
LTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVt
cHQgdG8gZml4IHRoZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2MzM2MjRlYWZjZTFiNWY2MTQ5
NTI0M2E5NGRjMzk2NWQ5YTY0M2EuLjkzMzhmOTA1YzFkYmM1MzUzZGFiMzg1ZjMwMjBlY2FjMjE2
NjJjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTYtMDUtMjcgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxk
IG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90
IGNvcHkgY2FwdHVyZWQgbGFtYmRhIHZhcmlhYmxlcy4gVGhpcyAKKyAgICAgICAgZnVuY3Rpb24g
aXMgdXN1YWxseSBjYWxsZWQgY3Jvc3MtdGhyZWFkIHdpdGggYSBsYW1iZGEgYW5kIGNvcHlpbmcK
KyAgICAgICAgdGhlIGxhbWJkYSAoYW5kIGl0cyBjYXB0dXJlZCB2YXJpYWJsZXMpIGNhbiBsZWFk
IHRvIHRocmVhZC1zYWZldHkKKyAgICAgICAgaXNzdWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
dXBkYXRlcyBjYWxsT25NYWluVGhyZWFkKCkgdG8gdGFrZSBhIE5vbmNvcHlhYmxlRnVuY3Rpb24m
JgorICAgICAgICBpbiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHN0ZDo6ZnVuY3Rpb24uIFRoZSBj
YWxsIHNpdGVzIG9mCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBoYXZlIGFsc28gYmVlbiB1
cGRhdGVkIHRvIHVzZSBDKysxNCdzIGxhbWJkYQorICAgICAgICBjYXB0dXJlIHdpdGggaW5pdGlh
bGl6ZXIuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UpOgorICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VTeW5jTWFuYWdlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhy
ZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVt
QW5kVHJhY2tlckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpz
ZXRPcmlnaW5EZXRhaWxzKToKKwogMjAxNi0wNS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCBjZDE4OTM1YWY0NzcyOGY1OWM1YWVjOWU1ZGE0ZmM4MTE0YzFjNjkyLi5mYjdi
MDQxNzdhMDVmYjE5OGFhYzE1N2QyMjM0ZTk2MWI5YzE1MTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVk
IGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkgY2FwdHVyZWQgbGFt
YmRhIHZhcmlhYmxlcy4gVGhpcyAKKyAgICAgICAgZnVuY3Rpb24gaXMgdXN1YWxseSBjYWxsZWQg
Y3Jvc3MtdGhyZWFkIHdpdGggYSBsYW1iZGEgYW5kIGNvcHlpbmcKKyAgICAgICAgdGhlIGxhbWJk
YSAoYW5kIGl0cyBjYXB0dXJlZCB2YXJpYWJsZXMpIGNhbiBsZWFkIHRvIHRocmVhZC1zYWZldHkK
KyAgICAgICAgaXNzdWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBjYWxsT25NYWlu
VGhyZWFkKCkgdG8gdGFrZSBhIE5vbmNvcHlhYmxlRnVuY3Rpb24mJgorICAgICAgICBpbiBwYXJh
bWV0ZXIgaW5zdGVhZCBvZiBhIHN0ZDo6ZnVuY3Rpb24uIFRoZSBjYWxsIHNpdGVzIG9mCisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoKSBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvIHVzZSBDKysx
NCdzIGxhbWJkYQorICAgICAgICBjYXB0dXJlIHdpdGggaW5pdGlhbGl6ZXIuCisKKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERpZE1vZGlmeU9y
aWdpbkRhdGE6OkRpZE1vZGlmeU9yaWdpbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3Jh
Z2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW06CisgICAgICAgIChXZWJTdG9yYWdlVHJhY2tl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4pOgorCiAyMDE2LTA1LTI2ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBxdWVyaWVzIGFuZCBwbGF0
Zm9ybSBzY3JlZW4gbW9kZXJuaXphdGlvbiBhbmQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZGRiZGEzZDY3MmVmNzRhZDJlOTYxMTNi
NGNkZGY5ZGQwMGY5YjllLi4wZDY0YjI2YWY3YWE3NzYxNTFkYzRiNzExMzE3YmYxNDg5ZThiYThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNCw2ICsx
MTQsNyBAQAogCQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMjlDMzNE
MTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4MTM0MDEz
ODE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQu
Y3BwICovOyB9OwogCQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNzE1QjA5MkZE
MDAxRkYwQjggLyogQmFzZTY0LmggKi87IH07CisJCTgzMTlFNEExMUNGOEYwRjQwMEZFQjQ0RSAv
KiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzE5RTRBMDFDRjhGMEY0MDBGRUI0NEUgLyogRnVuY3Rpb25hbC5oICovOyB9OwogCQk4
M0ZCQTkzMjE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyog
VHlwZUNhc3RzLmggKi87IH07CiAJCTg2RjQ2RjYxMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY0
NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovOyB9OwogCQk5MzkzNEJEMzE4
QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3Ry
aW5nVmlld09iakMubW0gKi87IH07CkBAIC00MzcsNiArNDM4LDcgQEAKIAkJN0UyOUMzM0QxNUZG
RDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE9iamNSdW50aW1lRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZTY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODMxOUU0QTAxQ0Y4RjBGNDAwRkVCNDRFIC8qIEZ1bmN0aW9uYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdW
aWV3T2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFN0cmlu
Z1ZpZXdPYmpDLm1tOyBwYXRoID0gbWFjL1N0cmluZ1ZpZXdPYmpDLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODI2LDYgKzgyOCw3IEBACiAJCQkJQThBNDcyQTYxNTFBODI1QTAw
NDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyog
RnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFEQTQg
LyogRnVuY3Rpb25EaXNwYXRjaGVyLmggKi8sCisJCQkJODMxOUU0QTAxQ0Y4RjBGNDAwRkVCNDRF
IC8qIEZ1bmN0aW9uYWwuaCAqLywKIAkJCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0
UHRyLmggKi8sCiAJCQkJMEZFQzg0QUUxQkQ4MjUzMTAwODBGRjc0IC8qIEdyYXBoTm9kZVdvcmts
aXN0LmggKi8sCiAJCQkJMkNDRDg5MjkxNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVU
aW1lLmNwcCAqLywKQEAgLTEzMjksNiArMTMzMiw3IEBACiAJCQkJMEZCMzE3QzQxQzQ4ODAwMTAw
N0UzOTVBIC8qIFN5c3RlbVRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDMzMTUx
QTgyNUIwMDQxMjNGRiAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3NDQ0MTUxQTgyNUIwMDQxMjNGRiAvKiBUZXh0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTgzMTlFNEExMUNGOEYwRjQwMEZFQjQ0RSAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQ0NzE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkRnVuY3Rpb25JbnZvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0OTE1MUE4MjVCMDA0MTIzRkYgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NEIx
NTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oCmluZGV4IGFjMGUwMWZhZDI5MjkzZGUzMmJlYzUwOGQxZDNhZWQz
NTE4YzRiYjQuLjcwZjQ0YTQyZmE4ZjEyZTU5NjdhMjAyYTU2NDBjM2U4MmI0NDdiOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCkBAIC0yNyw2NiArMjcsMTEgQEAKICNkZWZpbmUg
RnVuY3Rpb25EaXNwYXRjaGVyX2gKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKLS8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gaXRzIG93biBoZWFk
ZXIgKGUuZy4gRnVuY3Rpb25hbC5oKS4KLS8vIEZJWE1FOiBXZSBjb3VsZCBtYWtlIHRoaXMgdGVt
cGxhdGVkIHRvIHN1cHBvcnQgb3RoZXIgbGFtYmRhcyB0aGFuIHZvaWQoKSBhbmQgbWFrZSB0aGlz
IG1vcmUgcmV1c2FibGUuCi1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAg
ICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
cnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KLSAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICA6IG1fY2Fs
bGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlw
ZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRv
cigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxhYmxlV3JhcHBlcikKLSAgICAg
ICAgICAgIG1fY2FsbGFibGVXcmFwcGVyLT5jYWxsKCk7Ci0gICAgfQotCi0gICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1
ZT46OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlw
ZSYmIGNhbGxhYmxlKQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3ZlKGNhbGxhYmxl
KSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3Mg
Q2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQot
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKCkgPSAwOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGU+Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIGZpbmFs
IDogcHVibGljIENhbGxhYmxlV3JhcHBlckJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgQ2FsbGFibGVXcmFwcGVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICAg
ICAgOiBtX2NhbGxhYmxlKFdURk1vdmUoY2FsbGFibGUpKQotICAgICAgICB7Ci0gICAgICAgIH0K
LQotICAgICAgICBDYWxsYWJsZVdyYXBwZXIoY29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxl
dGU7Ci0gICAgICAgIENhbGxhYmxlV3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3Jh
cHBlciYpID0gZGVsZXRlOwotCi0gICAgICAgIHZvaWQgY2FsbCgpIGZpbmFsIHsgbV9jYWxsYWJs
ZSgpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsK
LSAgICB9OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2Fs
bGFibGVXcmFwcGVyOwotfTsKLQogLy8gRnVuY3Rpb25EaXNwYXRjaGVyIGlzIGFuIGFic3RyYWN0
IHJlcHJlc2VudGF0aW9uIG9mIHNvbWV0aGluZyB0aGF0IGZ1bmN0aW9ucyBjYW4gYmUKIC8vIGRp
c3BhdGNoZWQgdG8uIFRoaXMgY2FuIGZvciBleGFtcGxlIGJlIGEgcnVuIGxvb3Agb3IgYSB3b3Jr
IHF1ZXVlLgogCkBAIC0xMDMsNiArNDgsNSBAQCBwcm90ZWN0ZWQ6CiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAogdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7Ci11c2luZyBXVEY6Ok5vbmNvcHlh
YmxlRnVuY3Rpb247CiAKICNlbmRpZiAvLyBGdW5jdGlvbkRpc3BhdGNoZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25h
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY5MTg2MGZhM2U2ODNhZjMzMzBiZTM0YTZiZDljMTBlYTNmYmJmYmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgKQEAgLTAsMCAr
MSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bWVtb3J5Pgor
CituYW1lc3BhY2UgV1RGIHsKKworLy8gRklYTUU6IFdlIGNvdWxkIG1ha2UgdGhpcyB0ZW1wbGF0
ZWQgdG8gc3VwcG9ydCBvdGhlciBsYW1iZGFzIHRoYW4gdm9pZCgpIGFuZCBtYWtlIHRoaXMgbW9y
ZSByZXVzYWJsZS4KK2NsYXNzIE5vbmNvcHlhYmxlRnVuY3Rpb24geworcHVibGljOgorICAgIE5v
bmNvcHlhYmxlRnVuY3Rpb24oKSA9IGRlZmF1bHQ7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
YWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFs
dWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIE5vbmNvcHlh
YmxlRnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCisgICAgICAgIDogbV9jYWxsYWJs
ZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlPj4o
V1RGTW92ZShjYWxsYWJsZSkpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIG9wZXJhdG9yKCko
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fY2FsbGFibGVXcmFwcGVyKQorICAgICAgICAg
ICAgbV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxhYmxlV3JhcHBlcjsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6
dHlwZT4KKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYg
Y2FsbGFibGUpCisgICAgeworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24m
IG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgICAgIG1fY2FsbGFibGVXcmFw
cGVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DYWxsYWJsZVdyYXBwZXJC
YXNlKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGwoKSA9IDA7CisgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZT4KKyAgICBjbGFzcyBDYWxsYWJsZVdy
YXBwZXIgZmluYWwgOiBwdWJsaWMgQ2FsbGFibGVXcmFwcGVyQmFzZSB7CisgICAgcHVibGljOgor
ICAgICAgICBleHBsaWNpdCBDYWxsYWJsZVdyYXBwZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUp
CisgICAgICAgICAgICA6IG1fY2FsbGFibGUoV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIENhbGxhYmxlV3JhcHBlcihjb25zdCBDYWxsYWJsZVdyYXBw
ZXImKSA9IGRlbGV0ZTsKKyAgICAgICAgQ2FsbGFibGVXcmFwcGVyJiBvcGVyYXRvcj0oY29uc3Qg
Q2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisKKyAgICAgICAgdm9pZCBjYWxsKCkgZmluYWwg
eyBtX2NhbGxhYmxlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENhbGxhYmxlVHlwZSBt
X2NhbGxhYmxlOworICAgIH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVy
QmFzZT4gbV9jYWxsYWJsZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNp
bmcgV1RGOjpOb25jb3B5YWJsZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA0NjU1
NWQ1NWYyYTliMDQ4NmYxYjMyOWZlOWViNDJiZTE5MWY0N2I3Li5kM2YwMjVlZjJjYzk2NjE4Njc2
MmVjNTYxODNlN2RlMjcxOGE3ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDcsOSArNDcs
OSBAQCBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKIAogc3Rh
dGljIFN0YXRpY0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKIAotc3RhdGljIERl
cXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVlKCkKK3N0YXRpYyBEZXF1
ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPiYgZnVuY3Rpb25RdWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+PiBmdW5jdGlvblF1ZXVl
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPj4g
ZnVuY3Rpb25RdWV1ZTsKICAgICByZXR1cm4gZnVuY3Rpb25RdWV1ZTsKIH0KIApAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAKICAgICBh
dXRvIHN0YXJ0VGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogCi0gICAg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9u
IGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewpAQCAtMTQ0LDcgKzE0
NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgfQogfQog
Ci12b2lkIGNhbGxPbk1haW5UaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikK
K3ZvaWQgY2FsbE9uTWFpblRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7
CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFp
blRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IDIwY2YxY2I4NzBl
ZDYyYWYzYmVkYjc3OTFkYmIxMWE5ODc0YTAwNzUuLjJlOGVmMWQ1YmU0MDk0YmFlZjkyNTdhMjNi
YTAzNTdiOGIwNjU4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQwLDcgKzQxLDcgQEAgdHlwZWRl
ZiB1aW50MzJfdCBUaHJlYWRJZGVudGlmaWVyOwogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4pOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRocmVh
ZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJl
YWQodm9pZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA0ODUyN2I5YjhlNTc3NmU3MTdlYzQ4YzEy
Y2U1OGMxM2ZhM2I4NzBjLi5jZDRkMzcyNjU0MGQ0NjdjMzJkYjFlNjkwMmYxZGUwMGI1NzIzYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JB
ZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAg
ICAgICAgLy8gSWYgdGhlIElEQlZhbHVlIGRvZXNuJ3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21l
dGhpbmcgd2VudCB3cm9uZyB3cml0aW5nIHRoZSBibG9icyB0byBkaXNrLgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNv
IHdlIGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVz
dWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIHsgSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJp
bmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgdGhpcywgcHJvdGVjdGVkT3BlcmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRp
b24pLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgeworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkT3Bl
cmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRpb24pLCByZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCldKCkgewogICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0aW9uLT5jb21wbGV0ZWQocmVz
dWx0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAppbmRleCAxODAy
Y2M1YjllNzQ1NWY0YWZiZDg0ODIxOWEzZGEyMjk4Y2IwNzI4Li4yMjg1NzBiMGRkOWMyODdiNTk0
Yjg3M2Y5MzVkNmJmMjNjNDNjNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVBlcm1pc3Npb25DaGVj
ayhjb25zdCBTdHJpbmcmIHNhbHQsIGJvb2wgY2EKICAgICBtX2lkSGFzaFNhbHQgPSBzYWx0Owog
ICAgIG1faGF2ZVBlcnNpc3RlbnRQZXJtaXNzaW9uID0gY2FuQWNjZXNzOwogCi0gICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yID0gV1RGTW92ZShwZXJt
aXNzaW9uQ2hlY2tQcm90ZWN0b3IpXSB7CiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKHRoaXMpOwogICAgIH0p
OwogfQpAQCAtMTYwLDggKzE2MCw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29t
cGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mCiAgICAgICAg
IGRldmljZXMuYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgbGFiZWwsIGlkLCBncm91cElkLCBkZXZpY2VUeXBlKSk7CiAgICAgfQogCi0gICAg
UmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgZGV2aWNlc10geworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8TWVkaWFEZXZpY2VzUmVxdWVzdD4oKnRoaXMpLCBk
ZXZpY2VzID0gV1RGTW92ZShkZXZpY2VzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+bV9wcm9taXNlLnJlc29sdmUoZGV2aWNlcyk7CiAgICAgfSk7CiAgICAgbV9wcm90ZWN0
b3IgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDU5
NTUyNjBjOTNhNjI1ODkzMDQ0ZDc4ZDY2MDVmZTdmMzAzMWRjMjkuLjM4NWMxNGYzNmFjMjRjMmI4
MWI5MjAyMTJjOGEyNjM4YTFiMjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bi5jcHAKQEAgLTk1LDE0ICs5NSwxNCBAQCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246Ok1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbihQZWVyQ29ubmVjdGlvbkJhY2tlbmRDbAogICAgIG1f
bWVkaWFFbmRwb2ludC0+Z2VuZXJhdGVEdGxzSW5mbygpOwogfQogCi12b2lkIE1lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gdGFzaykKK3Zv
aWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpydW5UYXNrKE5vbmNvcHlhYmxlRnVuY3Rp
b24mJiB0YXNrKQogewogICAgIGlmIChtX2R0bHNGaW5nZXJwcmludC5pc051bGwoKSkgewogICAg
ICAgICAvLyBPbmx5IG9uZSB0YXNrIG5lZWRzIHRvIGJlIGRlZmVycmVkIHNpbmNlIGl0IHdpbGwg
aG9sZCBvZmYgYW55IG90aGVycyB1bnRpbCBjb21wbGV0ZWQuCiAgICAgICAgIEFTU0VSVCghbV9p
bml0aWFsRGVmZXJyZWRUYXNrKTsKLSAgICAgICAgbV9pbml0aWFsRGVmZXJyZWRUYXNrID0gdGFz
azsKKyAgICAgICAgbV9pbml0aWFsRGVmZXJyZWRUYXNrID0gV1RGTW92ZSh0YXNrKTsKICAgICB9
IGVsc2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZCh0YXNrKTsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnN0YXJ0UnVubmluZ1Rhc2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5o
CmluZGV4IGRkM2VjMWE3YjEyNDIwODZmMDFiM2E0ZWJiZGQxZjYzZDAzYTIwYjYuLjA1NWVmYTE2
MmU2MzdjODkyYTAxYmQ0M2FjOTBmNTdjNTQxNzA2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc3LDcgKzc4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJOZWdvdGlhdGlvbk5lZWRlZFN0YXRlKCkgb3ZlcnJpZGUgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9OwogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4pOworICAgIHZvaWQgcnVuVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uJiYp
OwogICAgIHZvaWQgc3RhcnRSdW5uaW5nVGFza3MoKTsKIAogICAgIHZvaWQgY3JlYXRlT2ZmZXJU
YXNrKFJUQ09mZmVyT3B0aW9ucyYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Q
cm9taXNlJik7CkBAIC05MSw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgUGVlckNvbm5lY3Rpb25C
YWNrZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFFbmRwb2lu
dD4gbV9tZWRpYUVuZHBvaW50OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1faW5pdGlh
bERlZmVycmVkVGFzazsKKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uIG1faW5pdGlhbERlZmVycmVk
VGFzazsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTRFBQcm9jZXNzb3I+IG1fc2RwUHJvY2Vzc29y
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcAppbmRleCAwMDRlNGZiMTQwNWE5NjdmYWVlNTk1MDUyYTIxNmZlNTEy
ZWI3YzIwLi45ZTVhOWMyNDRlZjYzYTE3YmZhOGQ5YzdjY2U1YzYxM2FlYTM5YWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTEzNSwxMSArMTM1LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29u
c3RyYWludHNWYWxpZGF0ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291CiAg
ICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrIDogdmlkZW9UcmFja3MpCiAgICAgICAgIG1fdmlkZW9E
ZXZpY2VVSURzLmFwcGVuZCh2aWRlb1RyYWNrLT5wZXJzaXN0ZW50SUQoKSk7CiAKLSAgICBSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IFJlZjxVc2VyTWVkaWFSZXF1ZXN0PigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAg
IC8vIDIgLSBUaGUgY29uc3RyYWludHMgYXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9yIGFjY2Vz
cyB0byBtZWRpYS4KICAgICAgICAgaWYgKFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBwcm90ZWN0ZWRUaGlzLT5tX2NvbnRyb2xsZXIpCi0gICAgICAgICAgICBjb250cm9sbGVyLT5y
ZXF1ZXN0VXNlck1lZGlhQWNjZXNzKCpwcm90ZWN0ZWRUaGlzLmdldCgpKTsKKyAgICAgICAgICAg
IGNvbnRyb2xsZXItPnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MocHJvdGVjdGVkVGhpcy5nZXQoKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTE0OCwxMCArMTQ3LDkgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0
Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNv
bnMKICAgICBtX2FsbG93ZWRWaWRlb0RldmljZVVJRCA9IHZpZGVvRGV2aWNlVUlEOwogICAgIG1f
YXVkaW9EZXZpY2VVSURBbGxvd2VkID0gYXVkaW9EZXZpY2VVSUQ7CiAKLSAgICBSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzLCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPFVzZXJNZWRpYVJlcXVlc3Q+KCp0
aGlzKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEXSgpIG11dGFibGUgewogICAgICAg
ICAvLyAzIC0gdGhlIHVzZXIgZ3JhbnRlZCBhY2Nlc3MsIGFzayBwbGF0Zm9ybSB0byBjcmVhdGUg
dGhlIG1lZGlhIHN0cmVhbSBkZXNjcmlwdG9ycy4KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQo
KSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsKKyAgICAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhp
cy5wdHIoKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmlu
ZGV4IDlkY2VlMTlmMzI2MzkxOWRjNTRjZjg5MzgwNGVjMWYwMTk2NTRiY2EuLjg4MTgwODUwYjc0
NGJlNmE0MDc2NmI5YzU2ZGYzNTE1NmE4Mjg2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5Nyw4ICs3OTcsNyBAQCB2b2lk
IEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgICAgIG1faXNEZWxl
dGlvblNjaGVkdWxlZCA9IHRydWU7CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
c10geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1ZGlv
Q29udGV4dD4oKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGVsZXRlTWFya2VkTm9kZXMoKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTAwMiw4ICsxMDAx
LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKIHsKICAg
ICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBv
biB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlCiAgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlv
IEkvTyB0aHJlYWQgaGVyZSBhbmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgot
ICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBSZWY8QXVkaW9Db250ZXh0PigqdGhpcyldIHsKICAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVu
dCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggZDA2MDc1NTFlNjIzZDIxNDZlOTVhOTA1Yzk5YzU0Zjc3ZjQ4ZTM0Yy4uZjA2YzIx
MzAyM2M3Y2FhM2NlODU0MWQ2ZDg1YTE3MGZkM2ExMTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC01MzY3LDEyICs1MzY3LDggQEAgU2VjdXJpdHlPcmlnaW4qIERvY3VtZW50Ojp0b3BP
cmlnaW4oKSBjb25zdAogCiB2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiB7Ci0g
ICAgVGFzayogdGFza1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSku
cmVsZWFzZSgpOwotICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGRvY3VtZW50UmVmZXJlbmNlKG1fd2Vh
a0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoWz1dIHsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3Rvcnku
Y3JlYXRlV2Vha1B0cigpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRhc2s+
IHRhc2sodGFza1B0cik7CiAKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRS
ZWZlcmVuY2UuZ2V0KCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQpCkBAIC01MzgwLDkgKzUzNzYs
OSBAQCB2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiAKICAgICAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZl
cnNMb2FkaW5nKCkgJiYgZG9jdW1lbnQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkg
fHwgIWRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkb2N1
bWVudC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUoKnRhc2sucmVsZWFzZSgpKSk7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygqZG9jdW1lbnQp
OworICAgICAgICAgICAgdGFzay5wZXJmb3JtVGFzaygqZG9jdW1lbnQpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMjcxMzM5MjM5ZTgwYzNkNDZm
YjYyODVlZjUyYjVhOTY2OTgyMWQwYS4uNmNiMjVkOTY4MWMxOTY4YjIzMDk0NGRjYjQ3ZDJjOTM1
ZGM3NGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMjgwLDggKzI4
MCw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVybCkKICAgICBpZiAobV9jYWNoZWRTY3JpcHQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSAmbV9lbGVtZW50OwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIGVsZW1lbnRdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBl
bGVtZW50ID0gUmVmPEVsZW1lbnQ+KG1fZWxlbWVudCldIHsKICAgICAgICAgZGlzcGF0Y2hFcnJv
ckV2ZW50KCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IDBmYjkxMjRlMWY2Mzg0OTY5N2NlYWMwM2Zk
YWE2MTJmYTZlMWUyNWYuLjZiNGJiYjNmNThmOWIxYzhiNmUwNGFmMzRmMzJkZTg3ZDMwYjA2ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2Fn
ZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC02MywxMiArNjQs
MTIgQEAgaW5saW5lIEFzeW5jRmlsZVN0cmVhbTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMoRmlsZVN0
cmVhbUNsaWVudCYgY2xpZW50KQogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIGNhbGxPbkZpbGVU
aHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCitzdGF0aWMgdm9pZCBjYWxs
T25GaWxlVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IHF1ZXVl
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZXNzYWdlUXVldWU8Tm9uY29weWFibGVGdW5j
dGlvbj4+IHF1ZXVlOwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGNyZWF0ZUZpbGVUaHJl
YWRPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGNyZWF0ZUZpbGVUaHJlYWRPbmNlLCBbXSB7CkBA
IC04OSw3ICs5MCw3IEBAIHN0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoc3RkOjpmdW5jdGlv
bjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUu
Z2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PE5vbmNvcHlhYmxlRnVuY3Rpb24+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIEFzeW5jRmls
ZVN0cmVhbTo6QXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKQEAgLTEw
MiwzMyArMTAzLDI4IEBAIEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSgpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIC8vIFJlbGVhc2Ugc28gdGhhdCB3ZSBj
YW4gY29udHJvbCB0aGUgdGltaW5nIG9mIGRlbGV0aW9uIGJlbG93LgotICAgIGF1dG8mIGludGVy
bmFscyA9ICptX2ludGVybmFscy5yZWxlYXNlKCk7Ci0KICAgICAvLyBTZXQgZmxhZyB0byBwcmV2
ZW50IGNsaWVudCBjYWxsYmFja3MgYW5kIGFsc28gcHJldmVudCBxdWV1ZWQgb3BlcmF0aW9ucyBm
cm9tIHN0YXJ0aW5nLgotICAgIGludGVybmFscy5kZXN0cm95ZWQgPSB0cnVlOworICAgIG1faW50
ZXJuYWxzLT5kZXN0cm95ZWQgPSB0cnVlOwogCiAgICAgLy8gQ2FsbCB0aHJvdWdoIGZpbGUgdGhy
ZWFkIGFuZCBiYWNrIHRvIG1haW4gdGhyZWFkIHRvIG1ha2Ugc3VyZSBkZWxldGlvbiBoYXBwZW5z
CiAgICAgLy8gYWZ0ZXIgYWxsIGZpbGUgdGhyZWFkIGZ1bmN0aW9ucyBhbmQgYWxsIG1haW4gdGhy
ZWFkIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgotICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZp
bnRlcm5hbHNdIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbJmludGVybmFsc10gewotICAg
ICAgICAgICAgZGVsZXRlICZpbnRlcm5hbHM7CisgICAgY2FsbE9uRmlsZVRocmVhZChbaW50ZXJu
YWxzID0gV1RGTW92ZShtX2ludGVybmFscyldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2ludGVybmFscyA9IFdURk1vdmUoaW50ZXJuYWxzKV0gewogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTdHJlYW06OnBlcmZvcm0oc3RkOjpmdW5jdGlv
bjxzdGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+IG9w
ZXJhdGlvbikKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248c3Rk
OjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJh
dGlvbikKIHsKICAgICBhdXRvJiBpbnRlcm5hbHMgPSAqbV9pbnRlcm5hbHM7Ci0gICAgY2FsbE9u
RmlsZVRocmVhZChbJmludGVybmFscywgb3BlcmF0aW9uXSB7CisgICAgY2FsbE9uRmlsZVRocmVh
ZChbJmludGVybmFscywgb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pXSB7CiAgICAgICAg
IC8vIERvbid0IGRvIHRoZSBvcGVyYXRpb24gaWYgc3RvcCB3YXMgYWxyZWFkeSBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkLiBOb3RlIHRoYXQgdGhlcmUgaXMKICAgICAgICAgLy8gYSByYWNlIGhl
cmUsIGJ1dCBzaW5jZSBza2lwcGluZyB0aGUgb3BlcmF0aW9uIGlzIGFuIG9wdGltaXphdGlvbiBp
dCdzIE9LIHRoYXQgd2UgY2FuJ3QKICAgICAgICAgLy8gZ3VhcmFudGVlIGV4YWN0bHkgd2hpY2gg
b3BlcmF0aW9ucyBhcmUgc2tpcHBlZC4gTm90ZSB0aGF0IHRoaXMgaXMgYWxzbyB0aGUgb25seSBy
ZWFzb24KICAgICAgICAgLy8gd2UgdXNlIGFuIGF0b21pY19ib29sIHJhdGhlciB0aGFuIGp1c3Qg
YSBib29sIGZvciBkZXN0cm95ZWQuCiAgICAgICAgIGlmIChpbnRlcm5hbHMuZGVzdHJveWVkKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIG1haW5UaHJlYWRXb3JrID0gb3BlcmF0
aW9uKGludGVybmFscy5zdHJlYW0pOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFsmaW50ZXJu
YWxzLCBtYWluVGhyZWFkV29ya10geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFsmaW50ZXJu
YWxzLCBtYWluVGhyZWFkV29yayA9IG9wZXJhdGlvbihpbnRlcm5hbHMuc3RyZWFtKV0gewogICAg
ICAgICAgICAgaWYgKGludGVybmFscy5kZXN0cm95ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgbWFpblRocmVhZFdvcmsoaW50ZXJuYWxzLmNsaWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAppbmRleCA0MjhmNzMwZWU0NzZjZWJiYjQ3
OTFkYjdmOWU1OTVlZTI5NzBiZWM3Li5mZjQ4MWE0NWZiODI4Y2IxYjM2MmJmNzY5MDBjYTAxZThh
MDVlZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2
b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjxzdGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNs
aWVudCYpPihGaWxlU3RyZWFtJik+KTsKKyAgICB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYpOwog
CiAgICAgc3RydWN0IEludGVybmFsczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxzPiBt
X2ludGVybmFsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCmluZGV4IDEwMDAxMzU0ZjY4MjYzMmEwZDVjOGE0MDAwOGNiNjcyYjdmMGRm
NWYuLmM1OThhYzM0ZmQyNzA3YTlkZDc4MTc4MWRlMTIxNmY1MDY4NTZmMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTE3
LDEwICsxMTcsOCBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVh
dGUocGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lz
dHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29sYXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJs
b2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQgPSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmws
IHBhdGgsIGNvbnRlbnRUeXBlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0g
ewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JS
ZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckZpbGVCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpjcmVhdGUoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+cGF0aCksIGJsb2JSZWdpc3RyeUNv
bnRleHQtPmNvbnRlbnRUeXBlKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJsLCBwYXRoLCBjb250ZW50
VHlwZSldIHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29udGV4dC0+dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShjb250ZXh0LT5wYXRo
KSwgY29udGV4dC0+Y29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0xMzEs
MTAgKzEyOSw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+IGJsCiAgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUp
OwogICAgIGVsc2UgewogICAgICAgICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFu
IGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29u
dGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBj
b250ZW50VHlwZSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHRdIHsKLSAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlD
b250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgV1RGTW92ZShibG9iUmVnaXN0cnlDb250ZXh0
LT5ibG9iUGFydHMpLCBibG9iUmVnaXN0cnlDb250ZXh0LT5jb250ZW50VHlwZSk7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdpc3Ry
eUNvbnRleHQ+KHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSldIHsKKyAgICAg
ICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LT51cmwsIFdURk1v
dmUoY29udGV4dC0+YmxvYlBhcnRzKSwgY29udGV4dC0+Y29udGVudFR5cGUpOwogICAgICAgICB9
KTsKICAgICB9CiB9CkBAIC0xNDksMTAgKzE0NSw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYK
ICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29s
YXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQg
PSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwsIHNyY1VSTCk7Ci0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbnRleHRdIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVn
aXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwg
YmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
Y29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJsLCBzcmNV
UkwpXSB7CisgICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoY29udGV4
dC0+dXJsLCBjb250ZXh0LT5zcmNVUkwpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0xNzgs
MTAgKzE3Miw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSCiAgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBp
c29sYXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRl
eHQgPSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dChuZXdVUkwsIHNyY1VSTCk7Ci0gICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbnRleHQsIHN0YXJ0LCBlbmRdIHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRl
eHQpOwotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
YmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBibG9iUmVnaXN0cnlDb250ZXh0LT5zcmNVUkwsIHN0
YXJ0LCBlbmQpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0PihuZXdVUkwsIHNyY1VSTCksIHN0YXJ0LCBlbmRd
IHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNv
bnRleHQtPnVybCwgY29udGV4dC0+c3JjVVJMLCBzdGFydCwgZW5kKTsKICAgICAgICAgfSk7CiAg
ICAgfQogfQpAQCAtMTkzLDExICsxODUsOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJlc3VsdFNp
emUgPSBibG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSh1cmwpOwogICAgIGVsc2UgewogICAgICAgICAv
LyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4K
LSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlD
b250ZXh0KHVybCk7CiAgICAgICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQsICZzZW1hcGhvcmUsICZyZXN1bHRTaXplXSB7Ci0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lz
dHJ5Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIHJlc3VsdFNpemUgPSBibG9iUmVnaXN0
cnkoKS5ibG9iU2l6ZShibG9iUmVnaXN0cnlDb250ZXh0LT51cmwpOworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0
Pih1cmwpLCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6ZV0geworICAgICAgICAgICAgcmVzdWx0U2l6
ZSA9IGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKGNvbnRleHQtPnVybCk7CiAgICAgICAgICAgICBz
ZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIH0pOwogICAgICAgICBzZW1hcGhvcmUud2FpdChz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKQEAgLTIxNCwxMCArMjA0LDggQEAg
dm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
IHVybCkKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29s
YXRlZCBjb3B5IG9mIGRhdGEuCi0gICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQg
PSBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtjb250ZXh0XSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29u
dGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIGJsb2JSZWdp
c3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdp
c3RyeUNvbnRleHQ+KHVybCldIHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0
ZXJCbG9iVVJMKGNvbnRleHQtPnVybCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDZkYTI0NGU1ZDNhMWU2
NGFiM2ExODBkOTEzODAyNTBiNjQ5MGEzOGMuLmUxZWRhNWNhYTFkMDA1YzBjZGVhMTEzYzY1YjA1
OTgzOTUzNGYwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcApAQCAtMjA5MCwxMCArMjA5MCw5IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpkaXNwYXRjaERp
ZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYKICAgICBB
U1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogICAgICsrbV9tYWluVGhyZWFkQ2FsbGJhY2tDb3Vu
dDsKIAotICAgIFN0cmluZyBwYWdlVVJMQ29weSA9IHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGFnZVVSTENvcHldIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKV0gewogICAgICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkSW1wb3J0SWNvblVSTEZv
clBhZ2VVUkwocGFnZVVSTENvcHkpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZEltcG9ydElj
b25VUkxGb3JQYWdlVVJMKHBhZ2VVUkwpOwogICAgICAgICBjaGVja0Nsb3NlZEFmdGVyTWFpblRo
cmVhZENhbGxiYWNrKCk7CiAgICAgfSk7CiB9CkBAIC0yMTAzLDEwICsyMTAyLDkgQEAgdm9pZCBJ
Y29uRGF0YWJhc2U6OmRpc3BhdGNoRGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMT25NYWluVGhy
ZWFkKGNvbnN0IFN0cmluZyYKICAgICBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogICAgICsr
bV9tYWluVGhyZWFkQ2FsbGJhY2tDb3VudDsKIAotICAgIFN0cmluZyBwYWdlVVJMQ29weSA9IHBh
Z2VVUkwuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGFnZVVS
TENvcHldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwYWdlVVJMID0gcGFnZVVSTC5p
c29sYXRlZENvcHkoKV0gewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMKHBhZ2VVUkxDb3B5KTsKKyAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwocGFnZVVSTCk7CiAgICAg
ICAgIGNoZWNrQ2xvc2VkQWZ0ZXJNYWluVGhyZWFkQ2FsbGJhY2soKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCmluZGV4IDIzNTAwYmUy
YWM1YjBmMDhjMDYyNzdkNjNhMTBkODhiYTNlM2Y4YzcuLmVmMmE1MjUyZmZhYWI0OTZiZDRjNTMw
ZjFjNTA1MTQzODVmNDYyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3Vy
Y2VVc2FnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdl
VGhyZWFkLmNwcApAQCAtNzcsOSArNzcsOSBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6Ondh
aXRVbnRpbE9ic2VydmVycygpCiAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9sb2NrKTsKIH0K
IAotdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlPYnNlcnZlcnMoUmVzb3VyY2VVc2Fn
ZURhdGEmIGRhdGEpCit2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVycyhS
ZXNvdXJjZVVzYWdlRGF0YSYmIGRhdGEpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbZGF0YV0o
KSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtkYXRhID0gV1RGTW92ZShkYXRhKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgUmVz
b3VyY2VVc2FnZURhdGEmKT4+IGZ1bmN0aW9uczsKICAgICAgICAgCiAgICAgICAgIHsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBOT19SRVRVUk4gdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjp0aHJlYWRC
b2R5KCkKIAogICAgICAgICBSZXNvdXJjZVVzYWdlRGF0YSBkYXRhOwogICAgICAgICBwbGF0Zm9y
bVRocmVhZEJvZHkobV92bSwgZGF0YSk7Ci0gICAgICAgIG5vdGlmeU9ic2VydmVycyhkYXRhKTsK
KyAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKFdURk1vdmUoZGF0YSkpOwogCiAgICAgICAgIGF1dG8g
ZHVyYXRpb24gPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzPihzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHN0YXJ0KTsKICAgICAg
ICAgYXV0byBkaWZmZXJlbmNlID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyg1MDApIC0gZHVy
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCmluZGV4IGZk
MjU4MWFmYzVhNWQ2YzljZjQ1ZmQ3YmJmM2YzNWMzZjJhNGNhYmMuLjI1ZTRjM2Q1YWE2YWIzYjRh
YjFkNmRlNTg1NjJkMGZkZmNlMTZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVzb3VyY2VVc2FnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VV
c2FnZVRocmVhZC5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJlc291
cmNlVXNhZ2VUaHJlYWQmIHNpbmdsZXRvbigpOwogCiAgICAgdm9pZCB3YWl0VW50aWxPYnNlcnZl
cnMoKTsKLSAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhSZXNvdXJjZVVzYWdlRGF0YSYpOworICAg
IHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VEYXRhJiYpOwogCiAgICAgdm9pZCBj
cmVhdGVUaHJlYWRJZk5lZWRlZCgpOwogICAgIHN0YXRpYyB2b2lkIHRocmVhZENhbGxiYWNrKHZv
aWQqIHNjcm9sbGluZ1RocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCA0NjY5YTE5OTI4N2E2Y2FmMGFlYmM2YmJiYTVh
N2VlZTVjNWViZDZiLi4zNWExN2I4ZTc4MzI5MGRmYWE2YzZkODNmM2RiNzgxMjI0Mzc0ZDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5j
cHAKQEAgLTQ1LDIyICs0NSwyMiBAQCBib29sIFNjcm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhy
ZWFkKCkKICAgICByZXR1cm4gdGhyZWFkSWRlbnRpZmllciAmJiBjdXJyZW50VGhyZWFkKCkgPT0g
dGhyZWFkSWRlbnRpZmllcjsKIH0KIAotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGF1dG8mIHNjcm9s
bGluZ1RocmVhZCA9IFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCk7CiAgICAgc2Nyb2xsaW5n
VGhyZWFkLmNyZWF0ZVRocmVhZElmTmVlZGVkKCk7CiAKICAgICB7CiAgICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0aW9uc011dGV4KTsKLSAg
ICAgICAgc2Nyb2xsaW5nVGhyZWFkLm1fZnVuY3Rpb25zLmFwcGVuZChmdW5jdGlvbik7CisgICAg
ICAgIHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikp
OwogICAgIH0KIAogICAgIHNjcm9sbGluZ1RocmVhZC53YWtlVXBSdW5Mb29wKCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoTm9uY29w
eWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoKFtmdW5jdGlvbl0oKSBt
dXRhYmxlIHsKKyAgICBkaXNwYXRjaChbZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAg
ICAgfSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3Bh
dGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzQ3VycmVu
dFRocmVhZCgpKTsKIAotICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBmdW5jdGlv
bnM7CisgICAgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb24+IGZ1bmN0aW9uczsKICAgICAKICAg
ICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZnVuY3Rpb25zTXV0ZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaApp
bmRleCBhNzA5Y2NkOGU3ODYzNjI5ZGU4YTI4M2M0NjNjYTljNzcwNTFjNzE1Li5jYjQ0NGU1ZTM2
ZjU1MzgzNDc0NjIwYWRjOGU4MDQ1ZjkwNDQ5YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KQEAgLTQ3LDExICs0OCwxMSBAQCBjbGFzcyBTY3JvbGxpbmdUaHJlYWQgewogCiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNDdXJyZW50VGhyZWFkKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYm
KTsKIAogICAgIC8vIFdpbGwgZGlzcGF0Y2ggdGhlIGdpdmVuIGZ1bmN0aW9uIG9uIHRoZSBtYWlu
IHRocmVhZCBvbmNlIGFsbCBwZW5kaW5nIGZ1bmN0aW9ucwogICAgIC8vIG9uIHRoZSBzY3JvbGxp
bmcgdGhyZWFkIGhhdmUgZmluaXNoZWQgZXhlY3V0aW5nLiBVc2VkIGZvciBzeW5jaHJvbml6YXRp
b24gcHVycG9zZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hCYXJy
aWVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxTY3JvbGxpbmdUaHJlYWQ+OwpAQCAtNzksNyArODAs
NyBAQCBwcml2YXRlOgogICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcE11dGV4OwogCiAgICAg
TG9jayBtX2Z1bmN0aW9uc011dGV4OwotICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
PiBtX2Z1bmN0aW9uczsKKyAgICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlvbj4gbV9mdW5jdGlv
bnM7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBX
ZWJDb3JlOjpSdW5Mb29wIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKaW5kZXggMDgyYmQ3M2NkYmJmMmQ5NmQ4
YzhkNGE5MTI4YTllYzk3MDQ3ZmFlOC4uNjYyNmVjY2M4ZTFhN2Q2ZjBhMDllNmY2MTRjZjFjNzAz
YWI2MGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Nj
cm9sbGluZ1RyZWVJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlSU9TLmNwcApAQCAtNjcsOSArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVJT1M6OmludmFsaWRhdGUoKQogICAgIC8vIFNpbmNlIHRoaXMgY2FuIHBvdGVudGlhbGx5IGJl
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yLAogICAgIC8v
IHdlIG5lZWQgdG8gcmVsZWFzZSBpdCBvbiB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaGFzIG1l
bWJlciB2YXJpYWJsZXMgKHN1Y2ggYXMgdGltZXJzKQogICAgIC8vIHRoYXQgZXhwZWN0IHRvIGJl
IGRlc3Ryb3llZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLnJlbGVhc2Uo
KS5sZWFrUmVmKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3Jd
IHsKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRlcmVmKCk7CisgICAgY2FsbE9uTWFp
blRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBXVEZNb3ZlKG1fc2Nyb2xsaW5nQ29vcmRp
bmF0b3IpXSB7CiAgICAgfSk7CiB9CiAKQEAgLTg2LDEwICs4NCw3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZUlPUzo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCwgY29uc3QKICAgICBpZiAobm9kZUlEID09IHJvb3ROb2RlKCktPnNjcm9sbGluZ05vZGVJRCgp
KQogICAgICAgICBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiAK
LSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0
b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIGJvb2wgbG9jYWxJc0hhbmRsaW5nUHJv
Z3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpOwotCi0gICAg
Y2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCwgc2Nyb2xsUG9z
aXRpb24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbl0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Njcm9sbGluZ0Nvb3JkaW5h
dG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbG9j
YWxJc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Nj
cm9sbCgpLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uXSB7CiAgICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9s
bChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3Jv
bGwsIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogICAgIH0pOwogfQpAQCAtMTIzLDgg
KzExOCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNE
aWRDaGFuZ2UoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlECiAgICAgaWYgKCFtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I+IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGlu
YXRvcjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlE
LCBob3Jpem9udGFsLCB2ZXJ0aWNhbF0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBob3Jpem9udGFs
LCB2ZXJ0aWNhbF0gewogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0QWN0aXZlU2Ny
b2xsU25hcEluZGljZXMobm9kZUlELCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IGJkODE4
NTQ4YjUzMGUwZTI0OWFhNGI2OGU0N2ExMjViZmQxNDIxMmUuLjhiM2YxY2M3MDlmMjRhNzI5Nzhi
NDUyMmU5MWE5OGEzMThlYWQwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTWFjLm1tCkBAIC03NSwxMSArNzUsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWM6OnJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxlckltcHNPblRoZU1haQog
ICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsZXJJbXAgfHwgbV9ob3Jpem9udGFsU2Nyb2xsZXJJbXAp
IHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGluIHBsYWNlIGZvciB0
aGUgdGltZSBiZWluZyBzaW5jZSBOU1Njcm9sbGVySW1wcyBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQK
ICAgICAgICAgLy8gb24gYSBub24tbWFpbiB0aHJlYWQuIHJkYXI6Ly9wcm9ibGVtLzI0NTM1MDU1
Ci0gICAgICAgIE5TU2Nyb2xsZXJJbXAgKnJldGFpbmVkVmVydGljYWxTY3JvbGxlckltcCA9IG1f
dmVydGljYWxTY3JvbGxlckltcC5sZWFrUmVmKCk7Ci0gICAgICAgIE5TU2Nyb2xsZXJJbXAgKnJl
dGFpbmVkSG9yaXpvbnRhbFNjcm9sbGVySW1wID0gbV9ob3Jpem9udGFsU2Nyb2xsZXJJbXAubGVh
a1JlZigpOwotICAgICAgICBXVEY6OmNhbGxPbk1haW5UaHJlYWQoW3JldGFpbmVkVmVydGljYWxT
Y3JvbGxlckltcCwgcmV0YWluZWRIb3Jpem9udGFsU2Nyb2xsZXJJbXBdIHsKLSAgICAgICAgICAg
IFtyZXRhaW5lZFZlcnRpY2FsU2Nyb2xsZXJJbXAgcmVsZWFzZV07Ci0gICAgICAgICAgICBbcmV0
YWluZWRIb3Jpem9udGFsU2Nyb2xsZXJJbXAgcmVsZWFzZV07CisgICAgICAgIFdURjo6Y2FsbE9u
TWFpblRocmVhZChbdmVydGljYWxTY3JvbGxlckltcCA9IFdURk1vdmUobV92ZXJ0aWNhbFNjcm9s
bGVySW1wKSwgaG9yaXpvbnRhbFNjcm9sbGVySW1wID0gV1RGTW92ZShtX2hvcml6b250YWxTY3Jv
bGxlckltcCldIHsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggMzJlYWM0NTI0Zjc2ZGFm
OWE3YWQyMjRlYzliNGU2ZTgwZDQzMzE4MC4uOTI5YTZiYzJmMGZjMDBlYjZhODFlMzZiYzg4Zjkz
NDAwMjRiOWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNo
cm8KICAgICAgICAgLy8gRmFzdE1hbGxvYyBoYXMgbG9jay1mcmVlIHRocmVhZCBzcGVjaWZpYyBj
YWNoZXMgdGhhdCBjYW4gb25seSBiZSBjbGVhcmVkIGZyb20gdGhlIHRocmVhZCBpdHNlbGYuCiAg
ICAgICAgIFdvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJl
YWRzKCk7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJl
ZU1lbW9yeSk7CisgICAgICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW10oKSB7IFdURjo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7IH0pOwogI2VuZGlmCiAgICAgICAgIFdURjo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQppbmRleCAxMmNiY2JmOGYyNjFhYmUxYWYxMjQyYjA1MjQ0ZDZkZjE2MzMxYzRhLi4xNjU5Nzdl
NTBlNGQ5ZDk5NmYxMTEzODAxZTQ4MDkwZDFhZDFkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQpAQCAtMzk2LDEwICszOTYsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOwogCiAgICAgaWYgKCFpc01haW5UaHJl
YWQoKSkgewotICAgICAgICBhdXRvIHZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KTsK
LSAgICAgICAgYXV0byByb3V0aW5nQ29udHJvbGxlciA9IFdURk1vdmUoX2FpclBsYXlQcmVzZW5j
ZVJvdXRpbmdDb250cm9sbGVyKTsKLQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt2b2x1bWVW
aWV3LCByb3V0aW5nQ29udHJvbGxlcl0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3ZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KSwgcm91dGluZ0NvbnRyb2xs
ZXIgPSBXVEZNb3ZlKF9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcildICgpIG11dGFi
bGUgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVh
bGxvY10gLSBkaXBhdGNoZWQgdG8gTWFpblRocmVhZCIpOwogCiAgICAgICAgICAgICB2b2x1bWVW
aWV3LmNsZWFyKCk7CkBAIC00MzUsOCArNDMyLDcgQEAgLSAodm9pZClzdGFydE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzCiAKICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBz
dGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwogCi0gICAgUmV0YWluUHRyPFdlYk1lZGlh
U2Vzc2lvbkhlbHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRh
aW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPihzZWxmKV0gKCkgewogICAgICAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
XSAtIGRpcGF0Y2hlZCB0byBNYWluVGhyZWFkIik7CiAKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYt
Pl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcikKQEAgLTQ1NCw4ICs0NTAsNyBAQCAt
ICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlcwogCiAgICAgTE9HKE1lZGlhLCAiLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwogCi0g
ICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPihzZWxmKV0g
KCkgewogICAgICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXNdIC0gZGlwYXRjaGVkIHRvIE1haW5UaHJlYWQiKTsKIAogICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRl
eCAzZDkwZGVkZjZjOTk3NGQ0NGUyMDJiODlmZDE4ZTg0MjQ3ZTA1NmRhLi40ZDE4MDU1Y2MzMzgy
NGQ5NWI5MzE0MTJjOTIyOWNiYTg0MmQ4NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC0zMjMsOCArMzIzLDcgQEAgdm9pZCBBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNv
bnN0IEF1ZGlvU3RyZWEKICAgICBtZW1zZXQobV9saXN0LmdldCgpLCAwLCBidWZmZXJMaXN0U2l6
ZSk7CiAgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9IG51bWJlck9mQ2hhbm5lbHM7CiAKLSAg
ICBSZWZQdHI8QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IHN0cm9uZ1RoaXMgPSB0aGlzOwot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXMsIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBs
ZVJhdGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdUaGlzID0gUmVmPEF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDPigqdGhpcyksIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGVd
IHsKICAgICAgICAgc3Ryb25nVGhpcy0+bV9jbGllbnQtPnNldEZvcm1hdChudW1iZXJPZkNoYW5u
ZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggOTg2MjExNzQ4M2I2OTUz
Y2FmNjJhOGEzMjFkMzVhNDAxMGZhMzI1Ny4uNjkyODcxYTEwZTZiZjU2NjYzMWIxOWFkNGY4M2Zm
YmEyMjhlYTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTgwNiw4ICs4MDYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbgogICAgIGlmIChkZWxheURpc3BhdGNoICYmICFtX21haW5UaHJlYWRDYWxsUGVuZGlu
ZykgewogICAgICAgICBtX21haW5UaHJlYWRDYWxsUGVuZGluZyA9IHRydWU7CiAKLSAgICAgICAg
YXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXNdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVh
dGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC04NDQsOCArODQzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKCFtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuaXNFbXB0eSgpICYmICFtX21haW5U
aHJlYWRDYWxsUGVuZGluZykgewotICAgICAgICAgICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdl
YWtQdHIoKTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CisgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewog
ICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBhMjhkOTI5NGRjOWUxZjA5YWMyNDM4ZjM2OGEyYzAyZGM5ZWI3MDlm
Li4yNjYyZTNjOTk2OWFmMTM5YTk2ODFlYWI1MWY4NjYyNTAzN2ZkMzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
ODUsNyArODUsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICop
a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICBpZiAoW1tjaGFu
Z2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0gaW50VmFsdWVdID09IDEpIHsK
ICAgICAgICAgICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQiIGNvZGU6J0hEQ1AnIHVzZXJJbmZvOm5pbF07CiAg
ICAgICAgICAgICBSZXRhaW5QdHI8V2ViQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNMaXN0ZW5l
cj4gc3Ryb25nU2VsZiA9IHsgc2VsZiB9OwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZiwgZXJyb3JdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9u
Z1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICAgICAg
ICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPnBsYXllckRpZFJlY2VpdmVFcnJvcihlcnJvci5nZXQo
KSk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCmluZGV4IDJjNzA3Nzc1ZjliMzkwOGQ4YTEx
ZGZjNGNhNjEzZGRiYzljMDRmM2MuLmE1YTI1M2I5YjU4MTU3ZTMyMjhjMzU0ZTgxNmM5ZmI0Y2Ji
M2VjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1hYy5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDooaWQpa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNE
aWN0aW9uCiAKICAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlckhl
bHBlcj4gc3Ryb25nU2VsZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJvbmdL
ZXlQYXRoID0ga2V5UGF0aDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJv
bmdLZXlQYXRoXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUo
c3Ryb25nU2VsZiksIHN0cm9uZ0tleVBhdGggPSBXVEZNb3ZlKHN0cm9uZ0tleVBhdGgpXSB7CiAg
ICAgICAgIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMqIGNhbGxiYWNrID0gc3Ryb25nU2Vs
Zi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDdjYjAyNjZhM2RjN2RhZjhjZGI5MTA3ZGUw
ZGMzYzM1ODY5YTNiY2YuLjNjYTQ5NTMzMmRlZDNhZGI2MDU2MjcyODY5YTkxYzAzOWNlY2RmMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNzAxLDggKzcwMSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcigpCiAgICAgaWYg
KCFtX2F2UGxheWVyIHx8IG1faGF2ZUJlZW5Bc2tlZFRvQ3JlYXRlTGF5ZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDMxLDcgKzM0MzAsNyBAQCAtICh2b2lkKWxlZ2li
bGVPdXRwdXQ6KGlkKW91dHB1dCBkaWRPdXRwdXRBdHRyaWJ1dGVkU3RyaW5nczooTlNBcnJheSAq
KXN0cmluZ3MgbgogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTW92aWVPYnNlcnZlcj4gc3Ryb25n
U2VsZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHN0cm9uZ1N0cmluZ3MgPSBzdHJp
bmdzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBzdHJvbmdTYW1wbGVzID0gbmF0aXZlU2FtcGxl
czsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdTdHJpbmdzLCBzdHJv
bmdTYW1wbGVzLCBpdGVtVGltZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYg
PSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdTdHJpbmdzID0gV1RGTW92ZShzdHJvbmdTdHJp
bmdzKSwgc3Ryb25nU2FtcGxlcyA9IFdURk1vdmUoc3Ryb25nU2FtcGxlcyksIGl0ZW1UaW1lXSB7
CiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIGNhbGxiYWNrID0g
c3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM0NDcsOCArMzQ0Niw3IEBAIC0gKHZvaWQpb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOihpZClvdXRwdXQKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXI+IHN0cm9uZ1Nl
bGYgPSBzZWxmOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGZdIHsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyPihzZWxmKV0gewogICAgICAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrKQogICAgICAgICAgICAgY2Fs
bGJhY2stPmZsdXNoQ3VlcygpOwogICAgIH0pOwpAQCAtMzQ3Nyw3ICszNDc1LDcgQEAgLSAoQk9P
TClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIg
c2hvdWxkV2FpdEZvckxvYWQKIAogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTG9hZGVyRGVsZWdh
dGU+IHN0cm9uZ1NlbGYgPSBzZWxmOwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdD4gc3Ryb25nUmVxdWVzdCA9IGxvYWRpbmdSZXF1ZXN0OwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1JlcXVlc3RdIHsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25nUmVxdWVzdCA9IFdU
Rk1vdmUoc3Ryb25nUmVxdWVzdCldIHsKICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrOwogICAgICAgICBp
ZiAoIWNhbGxiYWNrKSB7CiAgICAgICAgICAgICBbc3Ryb25nUmVxdWVzdCBmaW5pc2hMb2FkaW5n
V2l0aEVycm9yOm5pbF07CkBAIC0zNTAyLDcgKzM1MDAsNyBAQCAtIChCT09MKXJlc291cmNlTG9h
ZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9y
UmVzcAogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZT4gc3Ryb25nU2Vs
ZiA9IHNlbGY7CiAgICAgUmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHN0
cm9uZ0NoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdT
ZWxmLCBzdHJvbmdDaGFsbGVuZ2VdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxm
ID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25nQ2hhbGxlbmdlID0gV1RGTW92ZShzdHJvbmdD
aGFsbGVuZ2UpXSB7CiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMq
IGNhbGxiYWNrID0gc3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFj
aykgewogICAgICAgICAgICAgW1tzdHJvbmdDaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpzdHJvbmdDaGFsbGVuZ2UuZ2V0KCldOwpAQCAtMzUyNCw3ICszNTIy
LDcgQEAgLSAodm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVz
b3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9hZGluZ1IKIAogICAgIFJldGFpblB0cjxXZWJDb3JlQVZG
TG9hZGVyRGVsZWdhdGU+IHN0cm9uZ1NlbGYgPSBzZWxmOwogICAgIFJldGFpblB0cjxBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gc3Ryb25nUmVxdWVzdCA9IGxvYWRpbmdSZXF1ZXN0Owot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1JlcXVlc3RdIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJvbmdTZWxmKSwgc3Ryb25n
UmVxdWVzdCA9IFdURk1vdmUoc3Ryb25nUmVxdWVzdCldIHsKICAgICAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNr
OwogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFjay0+ZGlkQ2FuY2Vs
TG9hZGluZ1JlcXVlc3Qoc3Ryb25nUmVxdWVzdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggMTQzYzA0NjAzZjJiN2Q2ZjQxMDUzYWVhYjM3M2Y1YTU1YzE0MjNjYi4uYTBl
MGNmOTA0NzVmZGZkNjc3YjY3Y2ZhMDQ5MzJkYTc2ZWIxZTNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtMTI5LDggKzEyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRp
YyB2b2lkIENNVGltZWJhc2VFZmZlY3RpdmVSYXRlQ2hhbmdlZENhbGxiYWNrKENNTm90aWZpY2F0
aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkICpsaXN0ZW5lciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZv
aWQgKiwgQ0ZUeXBlUmVmKQogewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyogcGxheWVyID0gKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyopbGlz
dGVuZXI7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IHBsYXllci0+Y3JlYXRlV2Vha1B0cigpOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXXsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFr
VGhpcyA9IHBsYXllci0+Y3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdlYWtUaGlzLmdldCgpLT5lZmZlY3RpdmVS
YXRlQ2hhbmdlZCgpOwpAQCAtMzEyLDggKzMxMSw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwbGF5KCkKIHsKLSAgICBh
dXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dl
YWtUaGlzXXsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIo
KV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB3ZWFrVGhpcy5nZXQoKS0+cGxheUludGVybmFsKCk7CkBAIC0zMzIsOCArMzMwLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBsYXlJbnRlcm5hbCgpCiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYXVzZSgpCiB7Ci0g
ICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpc117CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFr
UHRyKCldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgd2Vha1RoaXMuZ2V0KCktPnBhdXNlSW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKaW5kZXggN2U0MjQwM2NlYWY4NTYyNjMyNDU3ZTcxZGYwODI4NmU1ZDFmM2NkNy4uMDU3
ZDI2M2U5N2E1M2EwZTdiNjE5NTM0NjhkZWMwYmY4OTBkZjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMTQyLDcgKzE0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVUcmFja3MoKTsKICAgICB2b2lkIHJlbmRlcmluZ01vZGVDaGFu
Z2VkKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9u
JiYpOwogCiAgICAgZW51bSBEaXNwbGF5TW9kZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KaW5kZXggZThjYWJlZDhjMWQxNzIzNjZhNjhmZWYzNjc0NzQxMmJlN2Jl
OTM1OS4uYWE1ZTQ1OTIxMDkwMTcwNzRiMDUyMDgyOWIxNzI2OTllYzQ5MDE3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNjI0LDExICs2MjQsMTAgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6
TmV0d29ya1MKICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRh
c2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVu
Y3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIGF1dG8gd2Vh
a1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMs
IGZ1bmN0aW9uXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFr
UHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBjNTZmMjFmNjZjOGQ2YmY3
NTlmMDQ0MTJjZDQzYWY5Y2IwNDI3MGYxLi41NWE3NGMwZWFmNzMxOTM3ZDQxYWIyMTE0NjcxOTI2
MTczOWQxOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTgyLDcgKzE4Miw3IEBAIC0gKHZvaWQpc3RyZWFtRGF0
YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJzZVN0
cmVhbURhCiAgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBzdHJv
bmdTZWxmID0gc2VsZjsKIAogICAgIFJldGFpblB0cjxBVkFzc2V0Kj4gc3Ryb25nQXNzZXQgPSBh
c3NldDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdBc3NldF0gewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBz
dHJvbmdBc3NldCA9IFdURk1vdmUoc3Ryb25nQXNzZXQpXSB7CiAgICAgICAgIGlmIChzdHJvbmdT
ZWxmLT5fcGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChzdHJvbmdBc3NldC5nZXQoKSk7CiAgICAgfSk7CkBAIC0xOTgsNyAr
MTk4LDcgQEAgLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGEKICAgICBSZXRhaW5QdHI8V2ViQVZTdHJl
YW1EYXRhUGFyc2VyTGlzdGVuZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOwogCiAgICAgUmV0YWluUHRy
PEFWQXNzZXQqPiBzdHJvbmdBc3NldCA9IGFzc2V0OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0
cm9uZ1NlbGYsIHN0cm9uZ0Fzc2V0XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2Vs
ZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHN0cm9uZ0Fzc2V0ID0gV1RGTW92ZShzdHJvbmdBc3Nl
dCldIHsKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJv
bmdTZWxmLT5fcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHN0cm9uZ0Fzc2V0Lmdl
dCgpKTsKICAgICB9KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJz
ZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VT
dAogICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gc3Ryb25nU2Vs
ZiA9IHNlbGY7CiAKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gc3Ryb25nRXJyb3IgPSBlcnJvcjsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdFcnJvcl0geworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdF
cnJvciA9IFdURk1vdmUoc3Ryb25nRXJyb3IpXSB7CiAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5f
cGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VT
dHJlYW1EYXRhV2l0aEVycm9yKHN0cm9uZ0Vycm9yLmdldCgpKTsKICAgICB9KTsKQEAgLTIyOSw3
ICsyMjksNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAq
KXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZU1lZGlhRAogCiAgICAgUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBzdHJvbmdTYW1wbGUgPSBzYW1wbGU7CiAgICAgU3RyaW5nIG1lZGlhVHlw
ZSA9IG5zTWVkaWFUeXBlOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9u
Z1NhbXBsZSwgdHJhY2tJRCwgbWVkaWFUeXBlLCBmbGFnc10geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdTYW1wbGUgPSBXVEZN
b3ZlKHN0cm9uZ1NhbXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSwgZmxhZ3NdIHsKICAgICAgICAg
aWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50
LT5kaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzdHJvbmdTYW1wbGUuZ2V0
KCksIG1lZGlhVHlwZSwgZmxhZ3MpOwogICAgIH0pOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIC0gKHZv
aWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNl
ciBkaWRSZWFjaEVuZE9mVHJhCiAgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxp
c3RlbmVyPiBzdHJvbmdTZWxmID0gc2VsZjsKIAogICAgIFN0cmluZyBtZWRpYVR5cGUgPSBuc01l
ZGlhVHlwZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCB0cmFja0lELCBtZWRp
YVR5cGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJv
bmdTZWxmKSwgdHJhY2tJRCwgbWVkaWFUeXBlXSB7CiAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5f
cGFyZW50KQogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkUmVhY2hFbmRPZlRy
YWNrV2l0aFRyYWNrSUQodHJhY2tJRCwgbWVkaWFUeXBlKTsKICAgICB9KTsKQEAgLTI3Niw3ICsy
NzYsNyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0
cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
c3Ryb25nRGF0YSA9IGluaXREYXRhOwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3NlbWFwaG9y
ZV90PiBoYXNTZXNzaW9uU2VtYXBob3JlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9zZW1hcGhv
cmVfY3JlYXRlKDApKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdE
YXRhLCB0cmFja0lELCAgaGFzU2Vzc2lvblNlbWFwaG9yZV0geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCBzdHJvbmdEYXRhID0gV1RGTW92
ZShzdHJvbmdEYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSA9IFdURk1vdmUoaGFz
U2Vzc2lvblNlbWFwaG9yZSldIHsKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCiAg
ICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHN0cm9uZ0RhdGEuZ2V0KCksIHRyYWNrSUQs
IGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogICAgIH0pOwpAQCAtMzg5LDEzICszODksMTMgQEAgLSAo
dm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6
KGlkKW9iamVjdCBjaGFuZ2U6KE4KIAogICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAi
ZXJyb3IiXSkgewogICAgICAgICAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW2NoYW5n
ZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKLSAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIGxheWVyLCBlcnJvcl0geworICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIGxheWVyID0g
V1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKICAgICAgICAgICAgICAg
ICBzdHJvbmdTZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQoKSwg
ZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvOkAib3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJv
dGVjdGlvbiJdKSB7CiAgICAgICAgICAgICBpZiAoW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlW
YWx1ZUNoYW5nZU5ld0tleV0gYm9vbFZhbHVlXSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0
cjxOU0Vycm9yPiBlcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5X
ZWJLaXQiIGNvZGU6J0hEQ1AnIHVzZXJJbmZvOm5pbF07Ci0gICAgICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVycm9yXSB7CisgICAgICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIGxheWVy
ID0gV1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKICAgICAgICAgICAg
ICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+bGF5ZXJEaWRSZWNlaXZlRXJyb3IobGF5ZXIu
Z2V0KCksIGVycm9yLmdldCgpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0K
QEAgLTQwOSw3ICs0MDksNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3Ry
aW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICBBU1NF
UlQoX3JlbmRlcmVycy5jb250YWlucyhyZW5kZXJlci5nZXQoKSkpOwogICAgICAgICBBU1NFUlQo
W2tleVBhdGggaXNFcXVhbFRvOkAiZXJyb3IiXSk7CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbc3Ryb25nU2VsZiwgcmVuZGVyZXIsIGVycm9yXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3N0cm9uZ1NlbGYgPSBXVEZNb3ZlKHN0cm9uZ1NlbGYpLCByZW5kZXJlciA9IFdURk1vdmUo
cmVuZGVyZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CiAgICAgICAgICAgICBzdHJvbmdT
ZWxmLT5fcGFyZW50LT5yZW5kZXJlckRpZFJlY2VpdmVFcnJvcihyZW5kZXJlci5nZXQoKSwgZXJy
b3IuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKQEAgLTQyMiw3ICs0MjIsNyBAQCAt
ICh2b2lkKWxheWVyRmFpbGVkVG9EZWNvZGU6KE5TTm90aWZpY2F0aW9uKilub3RlCiAgICAgUmV0
YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW1tub3RlIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckZhaWxlZFRvRGVjb2RlTm90aWZpY2F0aW9uRXJyb3JLZXld
OwogCiAgICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lcj4gc3Ryb25n
U2VsZiA9IHNlbGY7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVy
cm9yXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25n
U2VsZiksIGxheWVyID0gV1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsK
ICAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fcGFyZW50IHx8ICFzdHJvbmdTZWxmLT5fbGF5ZXJz
LmNvbnRhaW5zKGxheWVyLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3Ry
b25nU2VsZi0+X3BhcmVudC0+bGF5ZXJEaWRSZWNlaXZlRXJyb3IobGF5ZXIuZ2V0KCksIGVycm9y
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA5ZWNlYzUyMWE5ODk3NGVlNzAzZTNkNGQ5
MjMzNmQwZWE0ZGE2Y2I2Li4yMWY1MzM4YjI2ZjUzYzE1MmJkYmJlYzQ2MDFhZmI5ODc2MjVhZGQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yOTUsOCArMjk1LDcgQEAgc3RhdGljIHZvaWQgZHJh
d1BhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKIAogc3Rh
dGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogewotICAgIGF1dG8g
aW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtpbWFnZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gc3RhdGljX2Nhc3Q8
Q0dJbWFnZVJlZj4oaW5mbyldIHsKICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKaW5kZXggYjMwMzNmZTA1MTBmNzlkMjUxMmE0MDZiYjFiZGRmMjk1YWZhNWEzNC4u
YjQyOGQ1MGQ5NGJmOTI0MjgwMzI4N2QyZWVjMTZiZDY5YzUyOGQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC01Niw5ICs1
Niw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBp
bmZvKQogewotICAgIGF1dG8gaW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsK
LQotICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
aW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKV0gewogICAgICAgICBDR0ltYWdl
UmVsZWFzZShpbWFnZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IDhlNTc3ZmZhNGE4MDQ4ZDE2NGUyOWYwNmQ3NGM0
NGI4OWVjODM3N2YuLmVkMzJkMTlmNzQxNDE3ZDU5NmE5NjI4YmNjNTcyYzRmYjVjZjg4YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC00
ODYsOCArNDg2LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmVu
ZENyZWF0ZWRNZWRpYVNvdXJjZShJTUZBc3luY1Jlc3VsdCogYXMKICAgICBociA9IGFzeW5jUmVz
dWx0LT5HZXRTdGF0dXMoKTsKICAgICBtX2xvYWRpbmdQcm9ncmVzcyA9IFNVQ0NFRURFRChocik7
CiAKLSAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlm
ICghd2Vha1B0cikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2Vha1B0ci0+b25DcmVh
dGVkTWVkaWFTb3VyY2UoKTsKQEAgLTUxNiw4ICs1MTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5kR2V0RXZlbnQoSU1GQXN5bmNSZXN1bHQqIGFzeW5jUmVz
dWx0KQogCiAgICAgc3dpdGNoIChtZWRpYUV2ZW50VHlwZSkgewogICAgIGNhc2UgTUVTZXNzaW9u
VG9wb2xvZ3lTZXQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5j
cmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRl
V2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25Ub3BvbG9neVNldCgpOwpAQCAtNTI2LDgg
KzUyNCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRHZXRF
dmVudChJTUZBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQpCiAgICAgfQogCiAgICAgY2FzZSBNRUJ1
ZmZlcmluZ1N0YXJ0ZWQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9y
eS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3Jl
YXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25CdWZmZXJpbmdTdGFydGVkKCk7CkBA
IC01MzYsOCArNTMzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OmVuZEdldEV2ZW50KElNRkFzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCkKICAgICB9CiAKICAgICBj
YXNlIE1FQnVmZmVyaW5nU3RvcHBlZDogewotICAgICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQ
dHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vh
a1B0cl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFj
dG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1B0cikKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5vbkJ1ZmZlcmluZ1N0b3Bw
ZWQoKTsKQEAgLTU0Niw4ICs1NDIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6ZW5kR2V0RXZlbnQoSU1GQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0KQogICAgIH0K
IAogICAgIGNhc2UgTUVTZXNzaW9uRW5kZWQ6IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV93
ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtQdHJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fd2Vha1B0
ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgd2Vha1B0ci0+b25TZXNzaW9uRW5k
ZWQoKTsKQEAgLTE2NzUsOCArMTY3MCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6cHJvY2Vzc0lucHV0Tm90CiAgICAg
CiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgdmlkZW8gYXJlYQogICAgIGlmIChtX21lZGlhUGxheWVy
KSB7Ci0gICAgICAgIGF1dG8gd2Vha1B0ciA9IG1fbWVkaWFQbGF5ZXItPm1fd2Vha1B0ckZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyXSB7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtX21lZGlhUGxheWVyLT5tX3dl
YWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICAgICAgaWYgKHdlYWtQdHIp
CiAgICAgICAgICAgICAgICAgd2Vha1B0ci0+aW52YWxpZGF0ZUZyYW1lVmlldygpOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCmluZGV4IGRmNjYwNzAyNTQ1ZDllN2JkOTI4YzY1ZmU2
MDNmOTk1NTdmZmRmM2YuLjQyZDI0NjZjMmJmNjMxZjBlZmZhY2NmOTRmNDAwMjgxMGE3ZDAyNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmNwcApAQCAtMjk5LDExICsyOTksMTAgQEAgdm9pZCBNZWRpYVN0
cmVhbVByaXZhdGU6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogICAgIH0p
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQordm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNj
aGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGZ1bmN0aW9uXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92
ZShmdW5jdGlvbildIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVByaXZhdGUuaAppbmRleCA2YmFlNzNjZTkyYjFhNjA1OWYyZmM3YWVkMWQ3YjJi
OTk4OWJmODliLi5iZjJmYWUwMTBmMTEzZjQwYmVjODAyMjFhNTMzODlhYWNkNDlhNWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVByaXZhdGUuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhcmFjdGVy
aXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVmlkZW9UcmFjaygpOwogCi0g
ICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAg
IHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbiYmKTsKIAogICAg
IFdlYWtQdHJGYWN0b3J5PE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAg
ICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
LmgKaW5kZXggZmJhNTI4MzgxOTUyYTI1MmViYjU4NDM3MDQyODQxMGY0NmJkNTUyYi4uMmM5YjBk
MTA0OWZiMGQ3OGMzNzMyYzQ0NzUwMjlkZjYzZDU1MzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJl
U291cmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgi
CiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtODUsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZVZpZGVvRGF0YU91
dHB1dCopOwogICAgIHZvaWQgc2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVB
dWRpb0RhdGFPdXRwdXQqKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpm
dW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5
YWJsZUZ1bmN0aW9uJiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRp
YUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KaW5kZXggYzA2MTJjNTIzOThmMmZkNTcwNTIzOTEz
NjA0Y2IxZGM5OTdjYzMxNC4uNzkxNWE4NDJlYTgzZGQzNTdkMmI0Mjg4YTU3OWJmYzEzODBiNzZj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjQwLDEyICsyNDAsMTAgQEAg
dm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShB
VkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQKICAgICBbYXVkaW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVy
RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6Z2xvYmFBdWRpb0NhcHR1cmVTZXJp
YWxRdWV1ZSgpXTsKIH0KIAotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZl
cnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3ZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBm
dW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotCi0gICAgYXV0byB3ZWFrVGhpcyA9
IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgZnVuY3Rp
b25dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYy5jcHAKaW5kZXggMjQ5OWNmM2MzZmMzOGNjMmYyNDkwNzFjMWM4NmM0MjRlNjVkMzA4
MC4uZGVhN2E3YzI5NzRlM2Q4YTllMGRiODE3N2Q5NmI5ZTRlMmYxOGMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMTYzLDEwICsxNjMsOSBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqCiBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsK
LQogICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBzb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8ocmVxdWVzdENsaWVudC0+cmVxdWVzdE9y
aWdpbigpKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQsIHNv
dXJjZXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCByZXF1ZXN0Q2xpZW50ID0gV1RG
TW92ZShyZXF1ZXN0Q2xpZW50KSwgc291cmNlcyA9IFdURk1vdmUoc291cmNlcyldIHsKICAgICAg
ICAgcmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KHNvdXJj
ZXMpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9i
akMubW0KaW5kZXggN2I4ZDYxY2FlMDkyOWZkYWY0NjA3MGU1YTc3NzBmMmUzZWU4ODE1ZC4uMmU2
YzM3YTlhNmZmZTEzOTNiMGM2NDA4ZTJmNGIxYmYyNzY2NjEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9X
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBmCiAgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9IG51bWJlck9m
Q2hhbm5lbHM7CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IHN0
cm9uZ1RoaXMgPSB0aGlzOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXMsIG51bWJl
ck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGVdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdU
aGlzID0gV1RGTW92ZShzdHJvbmdUaGlzKSwgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0g
ewogICAgICAgICBpZiAoc3Ryb25nVGhpcy0+bV9jbGllbnQpCiAgICAgICAgICAgICBzdHJvbmdU
aGlzLT5tX2NsaWVudC0+c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA5MDkzNTc5NDhkNThhMTVl
MDdjYTM3OTZjMzgwZTEzOGZlOGY1MzJiLi5hYWU4MDgzOTExNWZmOWJhZmI5NDhjODI1NmYzODM0
YjQ4Yjg2ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMTU5LDcgKzE1OSw3
IEBAIGJvb2wgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmdldE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTCiAgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291cmNlV2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6bW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCksIG51bGxwdHIpKTsKICAgICBzb3VyY2Vz
LmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgbnVsbHB0
cikpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCwgc291cmNl
c10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQgPSBXVEZNb3Zl
KHJlcXVlc3RDbGllbnQpLCBzb3VyY2VzID0gV1RGTW92ZShzb3VyY2VzKV0gewogICAgICAgICBy
ZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3Qoc291cmNlcyk7
CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCA1M2ViMjVhMDRkMTE0YmIwY2M1OGRhN2ZlYjE1
YmJhMWY3Yzc0NTkzLi40ODRlOTIxZWM3NTQ4YmI2YzMzYTI2NDQ4ZTZkNzc2NzRhNTczZDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwCkBAIC0xODcsMTAgKzE4Nyw4IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxl
OjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8QmxvYlJlc291
cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCiAgICAgLy8gRmluaXNoIHRoaXMgYXN5
bmMgY2FsbCBxdWlja2x5IGFuZCByZXR1cm4uCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8Qmxv
YlJlc291cmNlSGFuZGxlPigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRvU3RhcnQoKTsKICAgICB9KTsKIH0KQEAgLTY2NSw5ICs2NjMsOCBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6bm90aWZ5RmluaXNoKCkKIAogICAgIC8vIFNjaGVkdWxlIHRvIG5vdGlm
eSB0aGUgY2xpZW50IGZyb20gYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNsaWVu
dCBtaWdodCBkaXNwb3NlIHRoZSBoYW5kbGUgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY2FsbGJhY2sg
ZnVuY3Rpb24KICAgICAvLyB3aGlsZSB3ZSBzdGlsbCBoYXZlIEJsb2JSZXNvdXJjZUhhbmRsZSBj
YWxscyBpbiB0aGUgc3RhY2suCi0gICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7Ci0g
ICAgICAgIGRvTm90aWZ5RmluaXNoKCpwcm90ZWN0ZWRUaGlzKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4oKnRoaXMpXSgpIG11
dGFibGUgeworICAgICAgICBkb05vdGlmeUZpbmlzaChwcm90ZWN0ZWRUaGlzKTsKICAgICB9KTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmNwcAppbmRleCBlNDBlZDNmOGEwMDVmNmMwMmFlMmQwMzQ2YThkMzZlNGQ4ZWIyMmQxLi43
Nzk4ZjkxOWU5NGZlYmUwOWJjMGMxODRkNjdkODljODdkZDc0MGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTY4LDI1
ICsxNjgsMjEgQEAgc3RhdGljIHZvaWQgZGVjb2RlRXNjYXBlZChEZWNvZGVUYXNrJiB0YXNrKQog
ICAgIHRhc2sucmVzdWx0LmRhdGEgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7
CiB9CiAKLXZvaWQgZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQm
IHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIGRlY29kZShjb25zdCBVUkwmIHVybCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBz
Y2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIAogICAgIGF1dG8gZGVj
b2RlVGFzayA9IGNyZWF0ZURlY29kZVRhc2sodXJsLCBzY2hlZHVsZUNvbnRleHQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBhdXRvKiBkZWNvZGVUYXNrUHRyID0gZGVjb2RlVGFz
ay5yZWxlYXNlKCk7Ci0gICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFza1B0cl0g
ewotICAgICAgICBhdXRvJiBkZWNvZGVUYXNrID0gKmRlY29kZVRhc2tQdHI7Ci0KLSAgICAgICAg
aWYgKGRlY29kZVRhc2suaXNCYXNlNjQpCi0gICAgICAgICAgICBkZWNvZGVCYXNlNjQoZGVjb2Rl
VGFzayk7CisgICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFzayA9IFdURk1vdmUo
ZGVjb2RlVGFzayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChkZWNvZGVUYXNrLT5pc0Jhc2U2
NCkKKyAgICAgICAgICAgIGRlY29kZUJhc2U2NCgqZGVjb2RlVGFzayk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGRlY29kZUVzY2FwZWQoZGVjb2RlVGFzayk7CisgICAgICAgICAgICBkZWNv
ZGVFc2NhcGVkKCpkZWNvZGVUYXNrKTsKIAogI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICAg
ICAgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyOjpkaXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2RlVGFzaz4oZGVjb2RlVGFza1B0cikpOworICAgICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNo
ZXI6OmRpc3BhdGNoKFdURk1vdmUoZGVjb2RlVGFzaykpOwogI2Vsc2UKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZGVjb2RlVGFza1B0cl0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PERlY29kZVRhc2s+IGRlY29kZVRhc2soZGVjb2RlVGFza1B0cik7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2RlY29kZVRhc2sgPSBXVEZNb3ZlKGRlY29kZVRhc2spXSB7CiAgICAgICAgICAg
ICBpZiAoIWRlY29kZVRhc2stPnJlc3VsdC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgZGVjb2Rl
VGFzay0+Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5k
ZXggNjQzMzM3Njc0MGRkZDU2MDAwN2VjZTQyZmNkNzM4M2M5NmZhZmU5NC4uNGMwMTEyMTA4MTg1
NDg1NzYxNTkzYTQzOTY1NmNjYWM4NzZjNWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3Qg
U2NoZWR1bGVDb250ZXh0IHsKICNlbmRpZgogfTsKIAotdm9pZCBkZWNvZGUoY29uc3QgVVJMJiwg
Y29uc3QgU2NoZWR1bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIpOwordm9pZCBk
ZWNvZGUoY29uc3QgVVJMJiwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlv
bkhhbmRsZXImJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGE3MzY3NWEy
ODcxMGQ1YTI5YWNkMzU5NThlZDBiYTFjMTEyY2Y0ZGQuLmJjZWIyMmQ1MTAxYjM1Mzk4NzcxY2Zh
MzExYWUzMWI0MzdiN2RlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkyLDEwICs5
Miw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIGZvciAoYXV0byYgdGFzayA6IF9kYXRhVGFza3Mp
CiAgICAgICAgIHRhc2suZ2V0KCkuc2Vzc2lvbiA9IG5pbDsKIAotICAgIC8vIEZJWE1FKEMrKzE0
KTogV2hlbiB3ZSBjYW4gbW92ZSBSZWZQdHJzIGRpcmVjdGx5IGludG8gYmxvY2tzLCByZXBsYWNl
IHRoaXMgd2l0aCBhIFJlZlB0ciYmOgotICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlciogbG9hZGVyID0gX2xvYWRlci5sZWFrUmVmKCk7Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbbG9hZGVyXSB7Ci0gICAgICAgIGxvYWRlci0+ZGVyZWYoKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2FkZXIpXSB7CiAgICAgfSk7CiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQpAQCAtNDY2LDggKzQ2Myw3IEBAIC0gKE5TVVJMUmVzcG9uc2UgKilyZXNwb25z
ZQogLSAodm9pZCljYW5jZWwKIHsKICAgICBzZWxmLnN0YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0
YXRlQ2FuY2VsaW5nOwotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+
IHN0cm9uZ1NlbGYgeyBzZWxmIH07Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrPihzZWxmKV0gewogICAgICAgICBbc3Ryb25nU2VsZiBfY2FuY2Vs
XTsKICAgICAgICAgW3N0cm9uZ1NlbGYgX2ZpbmlzaF07CiAgICAgfSk7CkBAIC00NzUsOCArNDcx
LDcgQEAgLSAodm9pZCljYW5jZWwKIAogLSAodm9pZClzdXNwZW5kCiB7Ci0gICAgUmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKLSAgICBj
YWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ry
b25nU2VsZiA9IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpXSB7
CiAgICAgICAgIC8vIE5TVVJMU2Vzc2lvbkRhdGFUYXNrcyBtdXN0IHN0YXJ0IG92ZXIgYWZ0ZXIg
c3VzcGVuZGluZywgc28gd2hpbGUKICAgICAgICAgLy8gd2UgY291bGQgZGVmZXIgbG9hZGluZyBh
dCB0aGlzIHBvaW50LCBpbnN0ZWFkIGNhbmNlbCBhbmQgcmVzdGFydAogICAgICAgICAvLyB1cG9u
IHJlc3VtZSBzbyBhcyB0byBhZGhlcmUgdG8gTlNVUkxTZXNzaW9uRGF0YVRhc2sgc2VtYW50aWNz
LgpAQCAtNDg3LDggKzQ4Miw3IEBAIC0gKHZvaWQpc3VzcGVuZAogCiAtICh2b2lkKXJlc3VtZQog
ewotICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYg
eyBzZWxmIH07Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0geworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrPihzZWxmKV0gewogICAgICAgICBpZiAoc3Ryb25nU2VsZi5nZXQoKS5zdGF0ZSAhPSBO
U1VSTFNlc3Npb25UYXNrU3RhdGVTdXNwZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9h
ZC5jcHAKaW5kZXggYzZjODc5N2JiY2EwMmM5NTliZDUzM2U2NDhlY2U0ZDcxZjRhNDc4MC4uMmZl
ZjAwNTFkNzY4OTk1YmM2MDI2ZmUwZjMxNDMzOGJlYzVhZmZlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTQw
MiwxMSArNDAyLDkgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3Qg
U3RyaW5nJiBoZWFkZXIpCiAgICAgICAgIENVUkxjb2RlIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZv
KG1fY3VybEhhbmRsZSwgQ1VSTElORk9fUkVTUE9OU0VfQ09ERSwgJmh0dHBDb2RlKTsKIAogICAg
ICAgICBpZiAoaHR0cENvZGUgPj0gMjAwICYmIGh0dHBDb2RlIDwgMzAwKSB7Ci0gICAgICAgICAg
ICBVUkxDYXB0dXJlIGNhcHR1cmVkVXJsKGdldEN1cmxFZmZlY3RpdmVVUkwobV9jdXJsSGFuZGxl
KSk7Ci0gICAgICAgICAgICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjYXB0dXJlZFVybCwgcHJv
dGVjdGVkVGhpc10gewotICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKGNhcHR1cmVk
VXJsLnVybCgpKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSBnZXRDdXJsRWZmZWN0aXZlVVJMKG1f
Y3VybEhhbmRsZSk7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB1cmwgPSB1
cmwuaXNvbGF0ZWRDb3B5KCksIHByb3RlY3RlZFRoaXMgPSBSZWY8Q3VybERvd25sb2FkPigqdGhp
cyldIHsKKyAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldFVSTCh1cmwpOwogICAgICAgICAg
ICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlw
ZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUp
KSk7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6Q29udGVudFR5cGUpKSk7CiAKQEAgLTQxNCwxNCArNDEyLDEwIEBAIHZvaWQgQ3Vy
bERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmdDYXB0dXJl
IGNhcHR1cmVkSGVhZGVyKGhlYWRlcik7Ci0KLSAgICAgICAgUmVmUHRyPEN1cmxEb3dubG9hZD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKLQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBj
YXB0dXJlZEhlYWRlciwgcHJvdGVjdGVkVGhpc10gewotICAgICAgICAgICAgaW50IHNwbGl0UG9z
ID0gY2FwdHVyZWRIZWFkZXIuc3RyaW5nKCkuZmluZCgiOiIpOworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBoZWFkZXIgPSBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHByb3RlY3RlZFRo
aXMgPSBSZWY8Q3VybERvd25sb2FkPigqdGhpcyldIHsKKyAgICAgICAgICAgIGludCBzcGxpdFBv
cyA9IGhlYWRlci5zdHJpbmcoKS5maW5kKCI6Iik7CiAgICAgICAgICAgICBpZiAoc3BsaXRQb3Mg
IT0gLTEpCi0gICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoY2Fw
dHVyZWRIZWFkZXIuc3RyaW5nKCkubGVmdChzcGxpdFBvcyksIGNhcHR1cmVkSGVhZGVyLnN0cmlu
ZygpLnN1YnN0cmluZyhzcGxpdFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICAgICAg
ICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChoZWFkZXIuc3RyaW5nKCkubGVm
dChzcGxpdFBvcyksIGhlYWRlci5zdHJpbmcoKS5zdWJzdHJpbmcoc3BsaXRQb3MgKyAxKS5zdHJp
cFdoaXRlU3BhY2UoKSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggYjVjY2Y1YmEzOThkMzNiMzM5NTRlNTQyNTFl
NDRhMGE5YjM1ODAyZS4uNTI0ZmEyNmRmZDM3NTM4ZWUxZThlNDdlMDIwNmYyNGVjMjU4ZDA1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKQEAgLTUxNCwxMCAr
NTE0LDggQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UoKQogICAg
ICAgICBxdWVyeS5maW5hbGl6ZSgpOwogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAgICAg
ICAgIGlmIChTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
ICAgIFN0cmluZ0ltcGwqIGRhdGFiYXNlSWRlbnRpZmllckNvcHkgPSAmbV9kYXRhYmFzZUlkZW50
aWZpZXIuaW1wbCgpLT5pc29sYXRlZENvcHkoKS5sZWFrUmVmKCk7Ci0gICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtkYXRhYmFzZUlkZW50aWZpZXJDb3B5XSB7Ci0gICAgICAgICAgICAgICAg
U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW5XaXRoSWRlbnRpZmllcihkYXRh
YmFzZUlkZW50aWZpZXJDb3B5KTsKLSAgICAgICAgICAgICAgICBkYXRhYmFzZUlkZW50aWZpZXJD
b3B5LT5kZXJlZigpOworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGF0YWJhc2VJZGVu
dGlmaWVyID0gbV9kYXRhYmFzZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAg
ICAgICAgICBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbldpdGhJZGVudGlm
aWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIFN0cmluZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+
ZnVsbERhdGFiYXNlRmlsZW5hbWUobV9kYXRhYmFzZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAwMzZkNmJhNjk2ZjAwODhj
Y2Y3NGQ2YWFhNTlmM2NhMTYyOThkM2MwLi4zZTFmMWM0MDJhZGJiZTJmZWJhODg1NThjYjVmMDRj
ZTQ4MWI1MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2Vy
LmNwcApAQCAtNjMsMTMgKzYzLDEzIEBAIFN0cmluZyBTdG9yYWdlU3luY01hbmFnZXI6OmZ1bGxE
YXRhYmFzZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyCiAgICAgcmV0
dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIGRhdGFiYXNlSWRlbnRpZmllciAr
ICIubG9jYWxzdG9yYWdlIik7CiB9CiAKLXZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpkaXNwYXRj
aChjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvbikKK3ZvaWQgU3RvcmFnZVN5
bmNNYW5hZ2VyOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV90aHJlYWQpOwogCiAgICAg
aWYgKG1fdGhyZWFkKQotICAgICAgICBtX3RocmVhZC0+ZGlzcGF0Y2goZnVuY3Rpb24pOworICAg
ICAgICBtX3RocmVhZC0+ZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiB2b2lkIFN0
b3JhZ2VTeW5jTWFuYWdlcjo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5oCmluZGV4IDAyODc3MjEwNWYyMmRhMzI5NTAzMDUzZDlkYmI1NDFiOTNmNzkz
OTguLjg3N2RmNzAxYTEzMTEyZGQ4NGQ5MzVhMjA4MTkwMzYxNmE0MmQ0MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQyLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3RvcmFnZVN5bmNNYW5hZ2Vy
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB+U3RvcmFnZVN5bmNNYW5hZ2VyKCk7
CiAKLSAgICB2b2lkIGRpc3BhdGNoKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mKTsKKyAg
ICB2b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb24mJik7CiAgICAgdm9pZCBjbG9zZSgp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VU
aHJlYWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4
IDhjYThiY2VkODA5ODIyZmY2NjdlM2QzMWViNzI5NDYwZGRlZGZkMTQuLjc0ZWE4NWYyZTM2YTIy
MWFkNzUyNGZlZWE3YTIxMGIxOGY0MWQ0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFn
ZVRocmVhZC5jcHAKQEAgLTc0LDExICs3NCwxMSBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRocmVh
ZEVudHJ5UG9pbnQoKQogICAgIH0KIH0KIAotdm9pZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChj
b25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvbikKK3ZvaWQgU3RvcmFnZVRocmVh
ZDo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhy
ZWFkSUQpOwotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjpmdW5jdGlv
bjx2b2lkICgpPj4oZnVuY3Rpb24pKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPE5vbmNvcHlhYmxlRnVuY3Rpb24+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIHZvaWQg
U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTdG9yYWdl
VGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWRJRCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+PihbdGhpc10geworICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Tm9u
Y29weWFibGVGdW5jdGlvbj4oW3RoaXNdIHsKICAgICAgICAgcGVyZm9ybVRlcm1pbmF0ZSgpOwog
ICAgIH0pKTsKICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVhZElEKTsKQEAgLTEw
OSw3ICsxMDksNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1l
bW9yeUluQWxsVGhyZWFkcygpCiAgICAgSGFzaFNldDxTdG9yYWdlVGhyZWFkKj4mIHRocmVhZHMg
PSBhY3RpdmVTdG9yYWdlVGhyZWFkcygpOwogCiAgICAgZm9yIChIYXNoU2V0PFN0b3JhZ2VUaHJl
YWQqPjo6aXRlcmF0b3IgaXQgPSB0aHJlYWRzLmJlZ2luKCksIGVuZCA9IHRocmVhZHMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPmRpc3BhdGNoKFdURjo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KTsKKyAgICAgICAgKCppdCktPmRpc3BhdGNoKFtdKCkgeyBXVEY6
OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOyB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9TdG9yYWdlVGhyZWFkLmgKaW5kZXggZGY1MmFjNjEyMWM4NDY2ZDQ4NmU0YTRkYzllZjNh
NGUyODg3M2ZlNS4uZWQwMWMxYzk0OTg0MmJkNDY0ODc0Y2NjM2E0NWI0MmIyNjAzNDA1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oCkBAIC0yNyw5ICsyNyw5IEBACiAjZGVm
aW5lIFN0b3JhZ2VUaHJlYWRfaAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L01lc3NhZ2VRdWV1ZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICBib29sIHN0YXJ0KCk7CiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAotICAg
IHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+Jik7CisgICAgdm9pZCBk
aXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAgICAgc3RhdGljIHZvaWQgcmVsZWFz
ZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKQEAgLTU5LDcgKzU5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1UZXJtaW5hdGUoKTsKIAogICAgIFRocmVhZElkZW50
aWZpZXIgbV90aHJlYWRJRDsKLSAgICBNZXNzYWdlUXVldWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+
PiBtX3F1ZXVlOworICAgIE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPiBtX3F1ZXVl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5jcHAKaW5kZXggOGQ4MGQ0ZGQwNjY0OWUzYzBkYjMzYzQ4MGY3Mjk1YWYyMDFj
NmYzZi4uOWIzNmE3M2VmODc2NzQwZDNkYjQzZTFhOTM4ZjlmYTliYjVmMmE2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yOTMsOSArMjkzLDggQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAg
ICAgICBpZiAoZm91bmRPcmlnaW5zLmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXJDb3B5ID0g
b3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgb3JpZ2luSWRlbnRpZmllckNvcHldIHsKLSAgICAgICAgICAgIGRlbGV0ZU9yaWdp
bldpdGhJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXJDb3B5KTsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbklkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgICAgIGRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKG9yaWdp
bklkZW50aWZpZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0zMTQsMTkgKzMxMywxNyBA
QCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllciwgY29uc3QgU3RyaQogICAgICAgICBtX29yaWdpblNldC5hZGQob3JpZ2lu
SWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXJDb3B5ID0g
b3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKTsKLSAgICBTdHJpbmcgZGF0YWJhc2VGaWxl
Q29weSA9IGRhdGFiYXNlRmlsZS5pc29sYXRlZENvcHkoKTsKLSAgICBhdXRvIGZ1bmN0aW9uID0g
W3RoaXMsIG9yaWdpbklkZW50aWZpZXJDb3B5LCBkYXRhYmFzZUZpbGVDb3B5XSB7Ci0gICAgICAg
IHN5bmNTZXRPcmlnaW5EZXRhaWxzKG9yaWdpbklkZW50aWZpZXJDb3B5LCBkYXRhYmFzZUZpbGVD
b3B5KTsKKyAgICBhdXRvIGZ1bmN0aW9uID0gW3RoaXMsIG9yaWdpbklkZW50aWZpZXIgPSBvcmln
aW5JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBkYXRhYmFzZUZpbGUgPSBkYXRhYmFzZUZpbGUu
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRl
bnRpZmllciwgZGF0YWJhc2VGaWxlKTsKICAgICB9OwogCiAgICAgaWYgKGlzTWFpblRocmVhZCgp
KSB7CiAgICAgICAgIEFTU0VSVChtX3RocmVhZCk7Ci0gICAgICAgIG1fdGhyZWFkLT5kaXNwYXRj
aChmdW5jdGlvbik7CisgICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9u
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgd2VpcmQgcGluZy1wb25n
aW5nIHdhcyBkb25lIHRvIGZpeCBhIGRlYWRsb2NrLiBXZSBzaG91bGQgZmlndXJlIG91dCBhIGNs
ZWFuZXIgd2F5IHRvIGF2b2lkIGl0IGluc3RlYWQuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIGZ1bmN0aW9uXSB7Ci0gICAgICAgICAgICBtX3RocmVhZC0+ZGlzcGF0Y2goZnVuY3Rp
b24pOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUo
ZnVuY3Rpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV90aHJlYWQtPmRpc3BhdGNoKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQppbmRleCBk
ZWI0ZTQxMmYyYzg3NzVmMjNkMWY2ZTJjNzNlYmZlODY0MmMyMWFhLi5hM2VjOTljZTAxZGRlOGNh
ZDllMDMzMTM1YTUyNTI0YjAyODUxNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9T
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtMTAzLDIwICsxMDMsMTkg
QEAgY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgewotICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRh
KiBjb250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPmlzb2xh
dGVkQ29weSgpKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0geworICAgICAg
ICBhdXRvIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNs
aWVudCwgb3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAgICBjb250ZXh0LT5jbGll
bnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdpbi5nZXQoKSk7Ci0gICAg
ICAgICAgICBkZWxldGUgY29udGV4dDsKICAgICAgICAgfSk7CiAgICAgfQogCi1wcml2YXRlOgog
ICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKICAgICAgICAgOiBjbGllbnQoY2xp
ZW50KQogICAgICAgICAsIG9yaWdpbihvcmlnaW4pCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToK
ICAgICBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudDsKICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJTdG9yYWdlVHJhY2tlckNsaWVudC5tbQppbmRleCA3ZTVkOTkxODE5MzcwMzNmNThkNDky
MzY4ZTRkOWRlNmExZTYyMTc1Li5kNjgwYmM0NTdkMWJjOWE4NjM0M2U0NTc1OWM3M2Q4MzgyYmY5
YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFj
a2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZVRy
YWNrZXJDbGllbnQubW0KQEAgLTU4LDE1ICs1OCwxNSBAQCB2b2lkIFdlYlN0b3JhZ2VUcmFja2Vy
Q2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PgogCiB2b2lkIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
ZmllcihvcmlnaW5JZGVudGlmaWVyKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwogCiAgICAg
aWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9y
aWdpbik7CisgICAgICAgIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdURk1vdmUob3JpZ2luKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtvcmlnaW5d
IHsKLSAgICAgICAgV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3JhZ2VUcmFj
a2VyQ2xpZW50KCktPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4pXSgpIG11dGFibGUgewor
ICAgICAgICBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViU3RvcmFnZVRyYWNrZXJD
bGllbnQoKS0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV1RGTW92ZShvcmlnaW4pKTsKICAgICB9
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280019</attachid>
            <date>2016-05-27 21:42:06 -0700</date>
            <delta_ts>2016-05-27 22:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158166-20160527214317.patch</filename>
            <type>text/plain</type>
            <size>110741</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRkNDNkZWE5MDg4OGMwNTkwYzIzMzUx
NDIxYjAyNmIyZTA2MGNlNDQuLjQ5YjU5ZGNhZGUxZDdlZWRmYTZiZTZiNjZiMjE2YTgxYWZiZjli
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzcgQEAKIDIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAorICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5
IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkgY2Fw
dHVyZWQgbGFtYmRhIHZhcmlhYmxlcy4gVGhpcworICAgICAgICBmdW5jdGlvbiBpcyB1c3VhbGx5
IGNhbGxlZCBjcm9zcy10aHJlYWQgd2l0aCBhIGxhbWJkYSBhbmQgY29weWluZworICAgICAgICB0
aGUgbGFtYmRhIChhbmQgaXRzIGNhcHR1cmVkIHZhcmlhYmxlcykgY2FuIGxlYWQgdG8gdGhyZWFk
LXNhZmV0eQorICAgICAgICBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIGNh
bGxPbk1haW5UaHJlYWQoKSB0byB0YWtlIGEgTm9uY29weWFibGVGdW5jdGlvbiYmCisgICAgICAg
IGluIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgc3RkOjpmdW5jdGlvbi4gVGhlIGNhbGwgc2l0ZXMg
b2YKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQgdG8g
dXNlIEMrKzE0J3MgbGFtYmRhCisgICAgICAgIGNhcHR1cmUgd2l0aCBpbml0aWFsaXplci4KKwor
ICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogd3Rm
L0Z1bmN0aW9uRGlzcGF0Y2hlci5oOgorICAgICAgICAqIHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9u
Lmg6CisgICAgICAgIC0gTW92ZWQgTm9uY29weWFibGVGdW5jdGlvbiBmcm9tIEZ1bmN0aW9uRGlz
cGF0Y2hlci5oIHRvCisgICAgICAgICAgTm9uY29weWFibGVGdW5jdGlvbi5oLgorICAgICAgICAt
IEFkZCBhIG5ldyBvcGVyYXRvcj0obnVsbHB0cl90KSBvcGVyYXRvciB0byBOb25jb3B5YWJsZUZ1
bmN0aW9uIHRvCisgICAgICAgICAgbWF0Y2ggc3RkOjpmdW5jdGlvbiwgYXMgb25lIG9mIHRoZSBj
YWxsIHNpdGVzIG5lZWRlZCBpdC4KKworICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdURjo6ZnVuY3Rpb25RdWV1ZSk6CisgICAgICAgIChXVEY6OmRpc3BhdGNoRnVuY3Rp
b25zRnJvbU1haW5UaHJlYWQpOgorICAgICAgICAoV1RGOjpjYWxsT25NYWluVGhyZWFkKToKKyAg
ICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorCisyMDE2LTA1LTI3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKICAgICAgICAgV29ya1F1ZXVlOjpkaXNwYXRjaCgpIC8gUnVuTG9v
cDo6ZGlzcGF0Y2goKSBzaG91bGQgbm90IGNvcHkgY2FwdHVyZWQgbGFtYmRhIHZhcmlhYmxlcwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTExCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MTM3OTJmODE4YzhiM2EzZjk5NGU3YTllMTQwYTM4YzA2Zjk1ZTcxLi4x
ZWEwYWMyNDA2OWQ2OWYzZmI1ZWRhYzYwMWU5MGZiNDQ2ZmE2Mjc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQzIEBACisyMDE2LTA1LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIHNob3VsZCBub3QgY29weSBjYXB0dXJlZCBs
YW1iZGEgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJk
YSB2YXJpYWJsZXMuIFRoaXMgCisgICAgICAgIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2FsbGVkIGNy
b3NzLXRocmVhZCB3aXRoIGEgbGFtYmRhIGFuZCBjb3B5aW5nCisgICAgICAgIHRoZSBsYW1iZGEg
KGFuZCBpdHMgY2FwdHVyZWQgdmFyaWFibGVzKSBjYW4gbGVhZCB0byB0aHJlYWQtc2FmZXR5Cisg
ICAgICAgIGlzc3Vlcy4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FsbE9uTWFpblRo
cmVhZCgpIHRvIHRha2UgYSBOb25jb3B5YWJsZUZ1bmN0aW9uJiYKKyAgICAgICAgaW4gcGFyYW1l
dGVyIGluc3RlYWQgb2YgYSBzdGQ6OmZ1bmN0aW9uLiBUaGUgY2FsbCBzaXRlcyBvZgorICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKCkgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0byB1c2UgQysrMTQn
cyBsYW1iZGEKKyAgICAgICAgY2FwdHVyZSB3aXRoIGluaXRpYWxpemVyLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1Jl
cXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbjo6cnVuVGFzayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6Y29u
c3RyYWludHNWYWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6
dXNlck1lZGlhQWNjZXNzR3JhbnRlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5v
ZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1
ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpw
ZW5kaW5nVGFza3NUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU2NyaXB0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0
KToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVh
bTo6fkFzeW5jRmlsZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06
OnBlcmZvcm0pOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAg
ICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJC
bG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNl
OjpkaXNwYXRjaERpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGlzcGF0Y2hEaWRJbXBvcnRJY29uRGF0YUZvclBh
Z2VVUkxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlPYnNlcnZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVhZDo6dGhyZWFkQm9keSk6
CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmg6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpk
aXNwYXRjaEJhcnJpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpkaXNw
YXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3Jv
bGxpbmdUcmVlSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6Omlu
dmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUlPUzo6c2Nyb2xsaW5n
VHJlZU5vZGVEaWRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUlPUzo6
Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZUlPUzo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1h
Yzo6cmVsZWFzZVJlZmVyZW5jZXNUb1Njcm9sbGVySW1wc09uVGhlTWFpblRocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lv
bkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6CisgICAgICAgICgtW1dlYk1l
ZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJl
cGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNo
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakNMaXN0ZW5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2Jq
ZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW06CisgICAgICAgICgt
W1dlYkFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJIZWxwZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlVmlkZW9MYXllcik6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVy
IGxlZ2libGVPdXRwdXQ6ZGlkT3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6bmF0aXZlU2FtcGxlQnVm
ZmVyczpmb3JJdGVtVGltZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIg
b3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVy
RGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJl
c291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VM
b2FkZXI6c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToK
KyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVyOmRpZENh
bmNlbExvYWRpbmdSZXF1ZXN0Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNNVGltZWJhc2VFZmZlY3RpdmVSYXRlQ2hhbmdlZENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnBhdXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0
YVBhcnNlcjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0Ol0pOgorICAgICAgICAoLVtXZWJBVlN0
cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNlU3RyZWFtRGF0
YUFzQXNzZXQ6d2l0aERpc2NvbnRpbnVpdHk6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRh
V2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBz
dHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVNZWRpYURhdGE6Zm9yVHJhY2tJRDptZWRpYVR5cGU6
ZmxhZ3M6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVh
bURhdGFQYXJzZXI6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQ6bWVkaWFUeXBlOl0pOgor
ICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2Vy
OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lE
Ol0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKC1bV2Vi
QVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIGxheWVyRmFpbGVkVG9EZWNvZGU6XSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5SZWxl
YXNlQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRDcmVhdGVkTWVkaWFTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRHZXRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpwcm9jZXNzSW5wdXROb3RpZnkpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2sp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Z2V0TWVkaWFT
dHJlYW1UcmFja1NvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291
cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlGaW5pc2gp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
biBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBjYW5j
ZWxdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHN1c3BlbmRdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc3VtZV0pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOiBEZWxldGVkLgorCiAyMDE2LTA1LTI3ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIxOTA1NzQpOiBTd2lwZSBzbmFwc2hvdHMgYXJlIGFsd2F5cyBibGFjayBvbiBpUGhvbmUg
NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA0NjMzNjI0ZWFmY2UxYjVmNjE0OTUyNDNhOTRkYzM5NjVkOWE2NDNhLi45
MzM4ZjkwNWMxZGJjNTM1M2RhYjM4NWYzMDIwZWNhYzIxNjYyY2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM0IEBACisyMDE2LTA1LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIHNob3VsZCBub3QgY29weSBjYXB0dXJlZCBsYW1i
ZGEgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTgxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJkYSB2
YXJpYWJsZXMuIFRoaXMgCisgICAgICAgIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2FsbGVkIGNyb3Nz
LXRocmVhZCB3aXRoIGEgbGFtYmRhIGFuZCBjb3B5aW5nCisgICAgICAgIHRoZSBsYW1iZGEgKGFu
ZCBpdHMgY2FwdHVyZWQgdmFyaWFibGVzKSBjYW4gbGVhZCB0byB0aHJlYWQtc2FmZXR5CisgICAg
ICAgIGlzc3Vlcy4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FsbE9uTWFpblRocmVh
ZCgpIHRvIHRha2UgYSBOb25jb3B5YWJsZUZ1bmN0aW9uJiYKKyAgICAgICAgaW4gcGFyYW1ldGVy
IGluc3RlYWQgb2YgYSBzdGQ6OmZ1bmN0aW9uLiBUaGUgY2FsbCBzaXRlcyBvZgorICAgICAgICBj
YWxsT25NYWluVGhyZWFkKCkgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0byB1c2UgQysrMTQncyBs
YW1iZGEKKyAgICAgICAgY2FwdHVyZSB3aXRoIGluaXRpYWxpemVyLgorCisgICAgICAgICogU3Rv
cmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFT
eW5jOjpkZWxldGVFbXB0eURhdGFiYXNlKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OmRpc3Bh
dGNoKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhy
ZWFkOjpkaXNwYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5h
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5SW5BbGxUaHJlYWRzKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
aDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c2V0T3JpZ2luRGV0YWlscyk6CisKIDIw
MTYtMDUtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBGaXggQ01ha2UgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2QxODkzNWFmNDc3
MjhmNTljNWFlYzllNWRhNGZjODExNGMxYzY5Mi4uZmI3YjA0MTc3YTA1ZmIxOThhYWMxNTdkMjIz
NGU5NjFiOWMxNTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA1
LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZCgpIHNob3VsZCBub3QgY29weSBjYXB0dXJlZCBsYW1iZGEgdmFyaWFibGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMuIFRoaXMgCisg
ICAgICAgIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2FsbGVkIGNyb3NzLXRocmVhZCB3aXRoIGEgbGFt
YmRhIGFuZCBjb3B5aW5nCisgICAgICAgIHRoZSBsYW1iZGEgKGFuZCBpdHMgY2FwdHVyZWQgdmFy
aWFibGVzKSBjYW4gbGVhZCB0byB0aHJlYWQtc2FmZXR5CisgICAgICAgIGlzc3Vlcy4KKworICAg
ICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FsbE9uTWFpblRocmVhZCgpIHRvIHRha2UgYSBOb25j
b3B5YWJsZUZ1bmN0aW9uJiYKKyAgICAgICAgaW4gcGFyYW1ldGVyIGluc3RlYWQgb2YgYSBzdGQ6
OmZ1bmN0aW9uLiBUaGUgY2FsbCBzaXRlcyBvZgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkg
aGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0byB1c2UgQysrMTQncyBsYW1iZGEKKyAgICAgICAgY2Fw
dHVyZSB3aXRoIGluaXRpYWxpemVyLgorCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQubW06CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRv
TWFpblRocmVhZCk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpEaWRNb2RpZnlPcmln
aW5EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKToKKwogMjAxNi0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWVkaWEgcXVlcmllcyBhbmQgcGxhdGZvcm0gc2NyZWVuIG1vZGVybml6YXRp
b24gYW5kIHN0cmVhbWxpbmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOGRkYmRhM2Q2NzJlZjc0YWQyZTk2MTEzYjRjZGRmOWRkMDBmOWI5ZS4uYjFmYmEx
N2Q4MDNkOGRjMDVkZDlmNWQ0YmE5Yzk5MDYxZDczMTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTQsNiArMTE0LDcgQEAKIAkJN0UyOUMzM0UxNUZG
RDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2Jq
Y1J1bnRpbWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICov
OyB9OworCQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGMkJBREUx
Q0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCAqLzsgfTsKIAkJODNGQkE5
MzIxOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVD
YXN0cy5oICovOyB9OwogCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGNDZGNUYx
QTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgfTsKIAkJOTM5MzRCRDMxOEExRThD
MzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1Zp
ZXdPYmpDLm1tICovOyB9OwpAQCAtNDM3LDYgKzQzOCw3IEBACiAJCTdFMjlDMzNEMTVGRkQ3OUIw
MDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPYmpjUnVudGltZUV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgxMzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZTY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBOb25jb3B5YWJsZUZ1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmNvcHlhYmxlRnVuY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5
cGVDYXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlQ2FzdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8q
IFJlZkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2
QTEgLyogU3RyaW5nVmlld09iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBTdHJpbmdWaWV3T2JqQy5tbTsgcGF0aCA9IG1hYy9TdHJpbmdWaWV3T2JqQy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2OSw2ICs4NzEsNyBAQAogCQkJCTFBM0Y2
QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAogCQkJCTBGMEQ4NUIz
MTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLywKIAkJCQlBOEE0NzJEMDE1MUE4MjVCMDA0
MTIzRkYgLyogTm9uY29weWFibGUuaCAqLywKKwkJCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMg
LyogTm9uY29weWFibGVGdW5jdGlvbi5oICovLAogCQkJCUE4QTQ3MkQ1MTUxQTgyNUIwMDQxMjNG
RiAvKiBOdW1iZXJPZkNvcmVzLmNwcCAqLywKIAkJCQlBOEE0NzJENjE1MUE4MjVCMDA0MTIzRkYg
LyogTnVtYmVyT2ZDb3Jlcy5oICovLAogCQkJCTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAvKiBP
YmpjUnVudGltZUV4dHJhcy5oICovLApAQCAtMTIzMSw2ICsxMjM0LDcgQEAKIAkJCQlBOEE0NzNE
OTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODNGMkJBREYxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI2ODRENDM2MUMwMDBENDAwMDgxRDY2MyAvKiBJbmRleFNwYXJzZVNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczREMxNTFBODI1QjAwNDEyM0ZGIC8qIElubGlu
ZUFTTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwREEwODQxNzk5RjA0RDAwNTI5QTlCIC8qIElu
c2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GdW5j
dGlvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCmlu
ZGV4IGFjMGUwMWZhZDI5MjkzZGUzMmJlYzUwOGQxZDNhZWQzNTE4YzRiYjQuLmMzYTYwZjA4YzUw
NTI4ZmRlZDY1NjEyMjcxNjc4ZmY3NDQzNzJkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0Z1bmN0aW9uRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oCkBAIC0yNyw2NiArMjcsMTEgQEAKICNkZWZpbmUgRnVuY3Rpb25EaXNwYXRjaGVyX2gK
IAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdURiB7CiAKLS8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gaXRzIG93biBoZWFkZXIgKGUuZy4gRnVu
Y3Rpb25hbC5oKS4KLS8vIEZJWE1FOiBXZSBjb3VsZCBtYWtlIHRoaXMgdGVtcGxhdGVkIHRvIHN1
cHBvcnQgb3RoZXIgbGFtYmRhcyB0aGFuIHZvaWQoKSBhbmQgbWFrZSB0aGlzIG1vcmUgcmV1c2Fi
bGUuCi1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBOb25jb3B5YWJs
ZUZ1bmN0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVU
eXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVy
ZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KLSAgICBOb25jb3B5YWJsZUZ1bmN0
aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVy
KHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUo
Y2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxhYmxlV3JhcHBlcikKLSAgICAgICAgICAgIG1fY2Fs
bGFibGVXcmFwcGVyLT5jYWxsKCk7Ci0gICAgfQotCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+Ci0g
ICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxl
KQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3ZlKGNhbGxhYmxlKSk7Ci0gICAgICAg
IHJldHVybiAqdGhpczsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFw
cGVyQmFzZSB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB+Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQotCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBjYWxsKCkgPSAwOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
YWxsYWJsZVR5cGU+Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIGZpbmFsIDogcHVibGljIENh
bGxhYmxlV3JhcHBlckJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQ2FsbGFi
bGVXcmFwcGVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICAgICAgOiBtX2NhbGxh
YmxlKFdURk1vdmUoY2FsbGFibGUpKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBD
YWxsYWJsZVdyYXBwZXIoY29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7Ci0gICAgICAg
IENhbGxhYmxlV3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3JhcHBlciYpID0gZGVs
ZXRlOwotCi0gICAgICAgIHZvaWQgY2FsbCgpIGZpbmFsIHsgbV9jYWxsYWJsZSgpOyB9Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsKLSAgICB9OwotCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2FsbGFibGVXcmFwcGVy
OwotfTsKLQogLy8gRnVuY3Rpb25EaXNwYXRjaGVyIGlzIGFuIGFic3RyYWN0IHJlcHJlc2VudGF0
aW9uIG9mIHNvbWV0aGluZyB0aGF0IGZ1bmN0aW9ucyBjYW4gYmUKIC8vIGRpc3BhdGNoZWQgdG8u
IFRoaXMgY2FuIGZvciBleGFtcGxlIGJlIGEgcnVuIGxvb3Agb3IgYSB3b3JrIHF1ZXVlLgogCkBA
IC0xMDMsNiArNDgsNSBAQCBwcm90ZWN0ZWQ6CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7Ci11c2luZyBXVEY6Ok5vbmNvcHlhYmxlRnVuY3Rpb247
CiAKICNlbmRpZiAvLyBGdW5jdGlvbkRpc3BhdGNoZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRl
eCA0NjU1NWQ1NWYyYTliMDQ4NmYxYjMyOWZlOWViNDJiZTE5MWY0N2I3Li5kM2YwMjVlZjJjYzk2
NjE4Njc2MmVjNTYxODNlN2RlMjcxOGE3ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDcs
OSArNDcsOSBAQCBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsK
IAogc3RhdGljIFN0YXRpY0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKIAotc3Rh
dGljIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVlKCkKK3N0YXRp
YyBEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPiYgZnVuY3Rpb25RdWV1ZSgpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+PiBmdW5jdGlv
blF1ZXVlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0
aW9uPj4gZnVuY3Rpb25RdWV1ZTsKICAgICByZXR1cm4gZnVuY3Rpb25RdWV1ZTsKIH0KIApAQCAt
MTIwLDcgKzEyMCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAK
ICAgICBhdXRvIHN0YXJ0VGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwog
Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBOb25jb3B5YWJsZUZ1
bmN0aW9uIGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewpAQCAtMTQ0
LDcgKzE0NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAg
fQogfQogCi12b2lkIGNhbGxPbk1haW5UaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5j
dGlvbikKK3ZvaWQgY2FsbE9uTWFpblRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rp
b24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IDIwY2Yx
Y2I4NzBlZDYyYWYzYmVkYjc3OTFkYmIxMWE5ODc0YTAwNzUuLjlmNTg1NmQwY2FjNTNiNDUyMDcx
YjJmNjhiM2VkZThmMzMxODBhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDYgKzMyLDcgQEAK
IAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQwLDcg
KzQxLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBUaHJlYWRJZGVudGlmaWVyOwogLy8gTXVzdCBiZSBj
YWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0
aWFsaXplTWFpblRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWlu
VGhyZWFkKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
Y2FsbE9uTWFpblRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNo
QXN5bmNPbk1haW5UaHJlYWQodm9pZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxl
RnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTE4NjBmYTNlNjgzYWYzMzMwYmUzNGE2YmQ5YzEwZWEz
ZmJiZmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTm9uY29weWFibGVGdW5j
dGlvbi5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIEZJWE1FOiBXZSBjb3VsZCBt
YWtlIHRoaXMgdGVtcGxhdGVkIHRvIHN1cHBvcnQgb3RoZXIgbGFtYmRhcyB0aGFuIHZvaWQoKSBh
bmQgbWFrZSB0aGlzIG1vcmUgcmV1c2FibGUuCitjbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0OworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlw
ZT4KKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQorICAg
ICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVy
PENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBvcGVyYXRvcigpKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NhbGxhYmxlV3Jh
cHBlcikKKyAgICAgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyLT5jYWxsKCk7CisgICAgfQorCisg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdy
YXBwZXI7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVU
eXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9
KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQorICAgIHsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZN
b3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpCisgICAgeworICAgICAg
ICBtX2NhbGxhYmxlV3JhcHBlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyQmFzZSB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKCkg
PSAwOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGU+CisgICAg
Y2xhc3MgQ2FsbGFibGVXcmFwcGVyIGZpbmFsIDogcHVibGljIENhbGxhYmxlV3JhcHBlckJhc2Ug
eworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FsbGFibGVXcmFwcGVyKENhbGxhYmxl
VHlwZSYmIGNhbGxhYmxlKQorICAgICAgICAgICAgOiBtX2NhbGxhYmxlKFdURk1vdmUoY2FsbGFi
bGUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDYWxsYWJsZVdyYXBwZXIoY29u
c3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisgICAgICAgIENhbGxhYmxlV3JhcHBlciYg
b3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOworCisgICAgICAgIHZv
aWQgY2FsbCgpIGZpbmFsIHsgbV9jYWxsYWJsZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsKKyAgICB9OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2FsbGFibGVXcmFwcGVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Tm9uY29weWFibGVGdW5jdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA0
ODUyN2I5YjhlNTc3NmU3MTdlYzQ4YzEyY2U1OGMxM2ZhM2I4NzBjLi5jZDRkMzcyNjU0MGQ0Njdj
MzJkYjFlNjkwMmYxZGUwMGI1NzIzYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05NzksNyArOTc5LDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICAgICAgLy8gSWYgdGhlIElEQlZhbHVlIGRvZXNuJ3Qg
aGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21ldGhpbmcgd2VudCB3cm9uZyB3cml0aW5nIHRoZSBibG9i
cyB0byBkaXNrLgogICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVs
bHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdlIGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9u
LT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVND
SUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGlu
IG9iamVjdCBzdG9yZSIpIH0pOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgcHJvdGVjdGVkT3BlcmF0aW9uID0g
V1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRpb24pLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkg
eworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkT3BlcmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRp
b24pLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgewogICAgICAgICAgICAgcHJvdGVjdGVk
T3BlcmF0aW9uLT5jb21wbGV0ZWQocmVzdWx0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1Jl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXNSZXF1ZXN0LmNwcAppbmRleCAxODAyY2M1YjllNzQ1NWY0YWZiZDg0ODIxOWEzZGEyMjk4Y2Iw
NzI4Li4yMjg1NzBiMGRkOWMyODdiNTk0Yjg3M2Y5MzVkNmJmMjNjNDNjNTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
UmVxdWVzdC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpk
aWRDb21wbGV0ZVBlcm1pc3Npb25DaGVjayhjb25zdCBTdHJpbmcmIHNhbHQsIGJvb2wgY2EKICAg
ICBtX2lkSGFzaFNhbHQgPSBzYWx0OwogICAgIG1faGF2ZVBlcnNpc3RlbnRQZXJtaXNzaW9uID0g
Y2FuQWNjZXNzOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNr
UHJvdGVjdG9yXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNr
UHJvdGVjdG9yID0gV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tQcm90ZWN0b3IpXSB7CiAgICAgICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzKHRoaXMpOwogICAgIH0pOwogfQpAQCAtMTYwLDggKzE2MCw3IEBAIHZvaWQgTWVk
aWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0
IFRyYWNrU291cmNlSW5mCiAgICAgICAgIGRldmljZXMuYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbGFiZWwsIGlkLCBncm91cElkLCBkZXZp
Y2VUeXBlKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+IHByb3Rl
Y3RlZFRoaXModGhpcyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgZGV2
aWNlc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8TWVkaWFE
ZXZpY2VzUmVxdWVzdD4oKnRoaXMpLCBkZXZpY2VzID0gV1RGTW92ZShkZXZpY2VzKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wcm9taXNlLnJlc29sdmUoZGV2aWNlcyk7
CiAgICAgfSk7CiAgICAgbV9wcm90ZWN0b3IgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uY3BwCmluZGV4IDU5NTUyNjBjOTNhNjI1ODkzMDQ0ZDc4ZDY2MDVmZTdmMzAz
MWRjMjkuLjM4NWMxNGYzNmFjMjRjMmI4MWI5MjAyMTJjOGEyNjM4YTFiMjI2ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTk1LDE0ICs5NSwxNCBAQCBNZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb246Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbihQZWVyQ29u
bmVjdGlvbkJhY2tlbmRDbAogICAgIG1fbWVkaWFFbmRwb2ludC0+Z2VuZXJhdGVEdGxzSW5mbygp
OwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gdGFzaykKK3ZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpy
dW5UYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiB0YXNrKQogewogICAgIGlmIChtX2R0bHNGaW5n
ZXJwcmludC5pc051bGwoKSkgewogICAgICAgICAvLyBPbmx5IG9uZSB0YXNrIG5lZWRzIHRvIGJl
IGRlZmVycmVkIHNpbmNlIGl0IHdpbGwgaG9sZCBvZmYgYW55IG90aGVycyB1bnRpbCBjb21wbGV0
ZWQuCiAgICAgICAgIEFTU0VSVCghbV9pbml0aWFsRGVmZXJyZWRUYXNrKTsKLSAgICAgICAgbV9p
bml0aWFsRGVmZXJyZWRUYXNrID0gdGFzazsKKyAgICAgICAgbV9pbml0aWFsRGVmZXJyZWRUYXNr
ID0gV1RGTW92ZSh0YXNrKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZCh0
YXNrKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9p
ZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnN0YXJ0UnVubmluZ1Rhc2tzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCmluZGV4IGRkM2VjMWE3YjEyNDIwODZmMDFiM2E0ZWJi
ZGQxZjYzZDAzYTIwYjYuLjg2YjI0NzczMGEzZDE3MmMwNDUxNmViOGZjZmVkNjM5NjI1ZWFkYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJOZWdv
dGlhdGlvbk5lZWRlZFN0YXRlKCkgb3ZlcnJpZGUgeyBub3RJbXBsZW1lbnRlZCgpOyB9OwogCiBw
cml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAgIHZv
aWQgcnVuVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogICAgIHZvaWQgc3RhcnRSdW5uaW5n
VGFza3MoKTsKIAogICAgIHZvaWQgY3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYsIFBl
ZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJik7CkBAIC05MSw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgUGVlckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50KiBtX2NsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFFbmRwb2ludD4gbV9tZWRpYUVuZHBvaW50OwogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1faW5pdGlhbERlZmVycmVkVGFzazsKKyAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uIG1faW5pdGlhbERlZmVycmVkVGFzazsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTRFBQcm9jZXNzb3I+IG1fc2RwUHJvY2Vzc29yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCAw
MDRlNGZiMTQwNWE5NjdmYWVlNTk1MDUyYTIxNmZlNTEyZWI3YzIwLi45ZTVhOWMyNDRlZjYzYTE3
YmZhOGQ5YzdjY2U1YzYxM2FlYTM5YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTEzNSwxMSArMTM1
LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0ZWQoY29uc3Qg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291CiAgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNr
IDogdmlkZW9UcmFja3MpCiAgICAgICAgIG1fdmlkZW9EZXZpY2VVSURzLmFwcGVuZCh2aWRlb1Ry
YWNrLT5wZXJzaXN0ZW50SUQoKSk7CiAKLSAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7
CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZjxVc2VyTWVkaWFSZXF1
ZXN0PigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDIgLSBUaGUgY29uc3RyYWludHMg
YXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9yIGFjY2VzcyB0byBtZWRpYS4KICAgICAgICAgaWYg
KFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwcm90ZWN0ZWRUaGlzLT5tX2NvbnRy
b2xsZXIpCi0gICAgICAgICAgICBjb250cm9sbGVyLT5yZXF1ZXN0VXNlck1lZGlhQWNjZXNzKCpw
cm90ZWN0ZWRUaGlzLmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnJlcXVlc3RVc2Vy
TWVkaWFBY2Nlc3MocHJvdGVjdGVkVGhpcy5nZXQoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTE0OCwx
MCArMTQ3LDkgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVk
KGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnMKICAgICBtX2FsbG93ZWRWaWRlb0Rl
dmljZVVJRCA9IHZpZGVvRGV2aWNlVUlEOwogICAgIG1fYXVkaW9EZXZpY2VVSURBbGxvd2VkID0g
YXVkaW9EZXZpY2VVSUQ7CiAKLSAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBhdWRpb0Rl
dmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzID0gUmVmPFVzZXJNZWRpYVJlcXVlc3Q+KCp0aGlzKSwgYXVkaW9EZXZpY2VVSUQsIHZp
ZGVvRGV2aWNlVUlEXSgpIG11dGFibGUgewogICAgICAgICAvLyAzIC0gdGhlIHVzZXIgZ3JhbnRl
ZCBhY2Nlc3MsIGFzayBwbGF0Zm9ybSB0byBjcmVhdGUgdGhlIG1lZGlhIHN0cmVhbSBkZXNjcmlw
dG9ycy4KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3Jl
YXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQoKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVv
RGV2aWNlVUlEKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5wdHIoKSwgYXVkaW9EZXZpY2VVSUQs
IHZpZGVvRGV2aWNlVUlEKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDlkY2VlMTlmMzI2MzkxOWRjNTRj
Zjg5MzgwNGVjMWYwMTk2NTRiY2EuLjg4MTgwODUwYjc0NGJlNmE0MDc2NmI5YzU2ZGYzNTE1NmE4
Mjg2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKQEAgLTc5Nyw4ICs3OTcsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVO
b2RlRGVsZXRpb24oKQogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CiAK
LSAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1ZGlvQ29udGV4dD4oKnRoaXMpXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKICAg
ICAgICAgfSk7CiAgICAgfQpAQCAtMTAwMiw4ICsxMDAxLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6
OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKIHsKICAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBE
b2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBvbiB0aGUgbWFpbiB0aHJlYWQsIHNpbmNl
CiAgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlvIEkvTyB0aHJlYWQgaGVyZSBhbmQgdGhl
IGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgotICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
c10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8QXVkaW9Db250
ZXh0PigqdGhpcyldIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCiAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWJmNmVjM2E4ODdhMWMz
OTVjYzkzNzRiMjM1OGYyODBjZmI5ZTVjNC4uNmM2YjMxYzUwN2JmNTBkNmU2NDk5YmU4ZTY2YmVm
NjNhNTdlMGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01Mzg2LDEyICs1Mzg2LDgg
QEAgU2VjdXJpdHlPcmlnaW4qIERvY3VtZW50Ojp0b3BPcmlnaW4oKSBjb25zdAogCiB2b2lkIERv
Y3VtZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiB7Ci0gICAgVGFzayogdGFza1B0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSkucmVsZWFzZSgpOwotICAgIFdlYWtQdHI8
RG9jdW1lbnQ+IGRvY3VtZW50UmVmZXJlbmNlKG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigp
KTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoWz1dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtk
b2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpLCB0YXNrID0g
V1RGTW92ZSh0YXNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRhc2s+IHRhc2sodGFza1B0cik7CiAKICAgICAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7CiAgICAgICAg
IGlmICghZG9jdW1lbnQpCkBAIC01Mzk5LDkgKzUzOTUsOSBAQCB2b2lkIERvY3VtZW50Ojpwb3N0
VGFzayhUYXNrIHRhc2spCiAKICAgICAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7
CiAgICAgICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZlcnNMb2FkaW5nKCkgJiYgZG9jdW1lbnQt
PmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkgfHwgIWRvY3VtZW50LT5tX3BlbmRpbmdU
YXNrcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuYXBw
ZW5kKFdURk1vdmUoKnRhc2sucmVsZWFzZSgpKSk7CisgICAgICAgICAgICBkb2N1bWVudC0+bV9w
ZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0YXNrLT5wZXJmb3JtVGFzaygqZG9jdW1lbnQpOworICAgICAgICAgICAgdGFzay5wZXJm
b3JtVGFzaygqZG9jdW1lbnQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAKaW5kZXggMjcxMzM5MjM5ZTgwYzNkNDZmYjYyODVlZjUyYjVhOTY2OTgyMWQwYS4u
NmNiMjVkOTY4MWMxOTY4YjIzMDk0NGRjYjQ3ZDJjOTM1ZGM3NGU5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMjgwLDggKzI4MCw3IEBAIGJvb2wgU2NyaXB0RWxlbWVu
dDo6cmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkKICAgICBpZiAobV9jYWNo
ZWRTY3JpcHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQgPSAmbV9lbGVtZW50OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGVsZW1lbnRd
IHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBlbGVtZW50ID0gUmVmPEVsZW1lbnQ+KG1f
ZWxlbWVudCldIHsKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0Zp
bGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3Bw
CmluZGV4IDBmYjkxMjRlMWY2Mzg0OTY5N2NlYWMwM2ZkYWE2MTJmYTZlMWUyNWYuLmY0YjcwY2Yw
NTFkYThjZmMwZjVjY2ViMDZiNGEyYzNiNjQ3M2IyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDEyICs2NCwxMiBAQCBpbmxpbmUgQXN5
bmNGaWxlU3RyZWFtOjpJbnRlcm5hbHM6OkludGVybmFscyhGaWxlU3RyZWFtQ2xpZW50JiBjbGll
bnQpCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoTm9u
Y29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxN
ZXNzYWdlUXVldWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+Pj4gcXVldWU7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPj4gcXVldWU7CiAK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgY3JlYXRlRmlsZVRocmVhZE9uY2U7CiAgICAgc3Rk
OjpjYWxsX29uY2UoY3JlYXRlRmlsZVRocmVhZE9uY2UsIFtdIHsKQEAgLTg5LDcgKzkwLDcgQEAg
c3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5j
dGlvbikKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7
CisgICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5j
dGlvbj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3luY0Zp
bGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQpAQCAtMTAyLDMzICsxMDMsMjggQEAg
QXN5bmNGaWxlU3RyZWFtOjp+QXN5bmNGaWxlU3RyZWFtKCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgLy8gUmVsZWFzZSBzbyB0aGF0IHdlIGNhbiBjb250cm9sIHRoZSB0
aW1pbmcgb2YgZGVsZXRpb24gYmVsb3cuCi0gICAgYXV0byYgaW50ZXJuYWxzID0gKm1faW50ZXJu
YWxzLnJlbGVhc2UoKTsKLQogICAgIC8vIFNldCBmbGFnIHRvIHByZXZlbnQgY2xpZW50IGNhbGxi
YWNrcyBhbmQgYWxzbyBwcmV2ZW50IHF1ZXVlZCBvcGVyYXRpb25zIGZyb20gc3RhcnRpbmcuCi0g
ICAgaW50ZXJuYWxzLmRlc3Ryb3llZCA9IHRydWU7CisgICAgbV9pbnRlcm5hbHMtPmRlc3Ryb3ll
ZCA9IHRydWU7CiAKICAgICAvLyBDYWxsIHRocm91Z2ggZmlsZSB0aHJlYWQgYW5kIGJhY2sgdG8g
bWFpbiB0aHJlYWQgdG8gbWFrZSBzdXJlIGRlbGV0aW9uIGhhcHBlbnMKICAgICAvLyBhZnRlciBh
bGwgZmlsZSB0aHJlYWQgZnVuY3Rpb25zIGFuZCBhbGwgbWFpbiB0aHJlYWQgZnVuY3Rpb25zIGNh
bGxlZCBmcm9tIHRoZW0uCi0gICAgY2FsbE9uRmlsZVRocmVhZChbJmludGVybmFsc10gewotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFsmaW50ZXJuYWxzXSB7Ci0gICAgICAgICAgICBkZWxldGUg
JmludGVybmFsczsKKyAgICBjYWxsT25GaWxlVGhyZWFkKFtpbnRlcm5hbHMgPSBXVEZNb3ZlKG1f
aW50ZXJuYWxzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbaW50ZXJu
YWxzID0gV1RGTW92ZShpbnRlcm5hbHMpXSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12
b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248
dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4gb3BlcmF0aW9uKQordm9pZCBB
c3luY0ZpbGVTdHJlYW06OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjxzdGQ6OmZ1bmN0aW9uPHZvaWQo
RmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYgb3BlcmF0aW9uKQogewogICAgIGF1
dG8mIGludGVybmFscyA9ICptX2ludGVybmFsczsKLSAgICBjYWxsT25GaWxlVGhyZWFkKFsmaW50
ZXJuYWxzLCBvcGVyYXRpb25dIHsKKyAgICBjYWxsT25GaWxlVGhyZWFkKFsmaW50ZXJuYWxzLCBv
cGVyYXRpb24gPSBXVEZNb3ZlKG9wZXJhdGlvbildIHsKICAgICAgICAgLy8gRG9uJ3QgZG8gdGhl
IG9wZXJhdGlvbiBpZiBzdG9wIHdhcyBhbHJlYWR5IGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
IE5vdGUgdGhhdCB0aGVyZSBpcwogICAgICAgICAvLyBhIHJhY2UgaGVyZSwgYnV0IHNpbmNlIHNr
aXBwaW5nIHRoZSBvcGVyYXRpb24gaXMgYW4gb3B0aW1pemF0aW9uIGl0J3MgT0sgdGhhdCB3ZSBj
YW4ndAogICAgICAgICAvLyBndWFyYW50ZWUgZXhhY3RseSB3aGljaCBvcGVyYXRpb25zIGFyZSBz
a2lwcGVkLiBOb3RlIHRoYXQgdGhpcyBpcyBhbHNvIHRoZSBvbmx5IHJlYXNvbgogICAgICAgICAv
LyB3ZSB1c2UgYW4gYXRvbWljX2Jvb2wgcmF0aGVyIHRoYW4ganVzdCBhIGJvb2wgZm9yIGRlc3Ry
b3llZC4KICAgICAgICAgaWYgKGludGVybmFscy5kZXN0cm95ZWQpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZFdvcmsgPSBvcGVyYXRpb24oaW50ZXJuYWxzLnN0
cmVhbSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoWyZpbnRlcm5hbHMsIG1haW5UaHJlYWRX
b3JrXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoWyZpbnRlcm5hbHMsIG1haW5UaHJlYWRX
b3JrID0gb3BlcmF0aW9uKGludGVybmFscy5zdHJlYW0pXSB7CiAgICAgICAgICAgICBpZiAoaW50
ZXJuYWxzLmRlc3Ryb3llZCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBt
YWluVGhyZWFkV29yayhpbnRlcm5hbHMuY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Fz
eW5jRmlsZVN0cmVhbS5oCmluZGV4IDQyOGY3MzBlZTQ3NmNlYmJiNDc5MWRiN2Y5ZTU5NWVlMjk3
MGJlYzcuLmZmNDgxYTQ1ZmI4MjhjYjFiMzYyYmY3NjkwMGNhMDFlOGEwNWVkNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaApAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgcGVyZm9ybShzdGQ6
OmZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJl
YW0mKT4pOworICAgIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248dm9p
ZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJik7CiAKICAgICBzdHJ1Y3QgSW50
ZXJuYWxzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbHM+IG1faW50ZXJuYWxzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5k
ZXggMTAwMDEzNTRmNjgyNjMyYTBkNWM4YTQwMDA4Y2I2NzJiN2YwZGY1Zi4uYzU5OGFjMzRmZDI3
MDdhOWRkNzgxNzgxZGUxMjE2ZjUwNjg1NmYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC0xMTcsMTAgKzExNyw4IEBAIHZv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmls
ZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVu
dFR5cGUpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZv
cm1zIGFuIGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4
dCogY29udGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgcGF0aCwgY29udGVudFR5
cGUpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0XSB7Ci0gICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4dChj
b250ZXh0KTsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwo
YmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShi
bG9iUmVnaXN0cnlDb250ZXh0LT5wYXRoKSwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+Y29udGVudFR5
cGUpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxCbG9iUmVnaXN0cnlDb250ZXh0Pih1cmwsIHBhdGgsIGNvbnRlbnRUeXBlKV0geworICAgICAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTChjb250ZXh0LT51cmwsIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGNvbnRleHQtPnBhdGgpLCBjb250ZXh0LT5jb250
ZW50VHlwZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTEzMSwxMCArMTI5LDggQEAgdm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmws
IFZlY3RvcjxCbG9iUGFydD4gYmwKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIC8vIEJsb2JSZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBv
ZiBkYXRhLgotICAgICAgICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JS
ZWdpc3RyeUNvbnRleHQodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0gewotICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQoY29udGV4dCk7
Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoYmxvYlJlZ2lzdHJ5
Q29udGV4dC0+dXJsLCBXVEZNb3ZlKGJsb2JSZWdpc3RyeUNvbnRleHQtPmJsb2JQYXJ0cyksIGJs
b2JSZWdpc3RyeUNvbnRleHQtPmNvbnRlbnRUeXBlKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJsLCBX
VEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKV0geworICAgICAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQtPnVybCwgV1RGTW92ZShjb250ZXh0LT5ibG9i
UGFydHMpLCBjb250ZXh0LT5jb250ZW50VHlwZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAg
LTE0OSwxMCArMTQ1LDggQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJgogICAgICAgICBibG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwogICAgIGVsc2UgewogICAgICAg
ICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNvcHkgb2YgZGF0
YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBCbG9iUmVnaXN0
cnlDb250ZXh0KHVybCwgc3JjVVJMKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4
dF0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJs
b2JSZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckJsb2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBibG9iUmVnaXN0cnlDb250
ZXh0LT5zcmNVUkwpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0Pih1cmwsIHNyY1VSTCldIHsKKyAgICAgICAg
ICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LT51cmwsIGNvbnRleHQt
PnNyY1VSTCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTE3OCwxMCArMTcyLDggQEAgdm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBV
UkwmIG5ld1VSTCwgY29uc3QgVVIKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UobmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNvcHkgb2Yg
ZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBCbG9iUmVn
aXN0cnlDb250ZXh0KG5ld1VSTCwgc3JjVVJMKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
Y29udGV4dCwgc3RhcnQsIGVuZF0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JS
ZWdpc3RyeUNvbnRleHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShibG9iUmVnaXN0cnlDb250
ZXh0LT51cmwsIGJsb2JSZWdpc3RyeUNvbnRleHQtPnNyY1VSTCwgc3RhcnQsIGVuZCk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdp
c3RyeUNvbnRleHQ+KG5ld1VSTCwgc3JjVVJMKSwgc3RhcnQsIGVuZF0geworICAgICAgICAgICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29udGV4dC0+dXJsLCBjb250
ZXh0LT5zcmNVUkwsIHN0YXJ0LCBlbmQpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0xOTMs
MTEgKzE4NSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpi
bG9iU2l6ZShjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3Ry
eSgpLmJsb2JTaXplKHVybCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJsb2JSZWdpc3RyeUNv
bnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRhLgotICAgICAgICBCbG9iUmVn
aXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQodXJsKTsKICAg
ICAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY29udGV4dCwgJnNlbWFwaG9yZSwgJnJlc3VsdFNpemVdIHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRl
eHQpOwotICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKGJs
b2JSZWdpc3RyeUNvbnRleHQtPnVybCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdpc3RyeUNvbnRleHQ+KHVybCksICZzZW1hcGhv
cmUsICZyZXN1bHRTaXplXSB7CisgICAgICAgICAgICByZXN1bHRTaXplID0gYmxvYlJlZ2lzdHJ5
KCkuYmxvYlNpemUoY29udGV4dC0+dXJsKTsKICAgICAgICAgICAgIHNlbWFwaG9yZS5zaWduYWwo
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHNlbWFwaG9yZS53YWl0KHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6bWF4KCkpOwpAQCAtMjE0LDEwICsyMDQsOCBAQCB2b2lkIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBi
bG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgIGVsc2UgewogICAgICAg
ICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNvcHkgb2YgZGF0
YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBCbG9iUmVnaXN0
cnlDb250ZXh0KHVybCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHRdIHsKLSAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0
cnlDb250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3Rl
ckJsb2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsKTsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4dD4odXJs
KV0geworICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoY29udGV4
dC0+dXJsKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggNmRhMjQ0ZTVkM2ExZTY0YWIzYTE4MGQ5MTM4MDI1
MGI2NDkwYTM4Yy4uZTFlZGE1Y2FhMWQwMDVjMGNkZWExMTNjNjViMDU5ODM5NTM0ZjA3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yMDkwLDEw
ICsyMDkwLDkgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmRpc3BhdGNoRGlkSW1wb3J0SWNvblVSTEZv
clBhZ2VVUkxPbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJgogICAgIEFTU0VSVF9JQ09OX1NZTkNf
VEhSRUFEKCk7CiAgICAgKyttX21haW5UaHJlYWRDYWxsYmFja0NvdW50OwogCi0gICAgU3RyaW5n
IHBhZ2VVUkxDb3B5ID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCBwYWdlVVJMQ29weV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBh
Z2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChwYWdlVVJM
Q29weSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkwo
cGFnZVVSTCk7CiAgICAgICAgIGNoZWNrQ2xvc2VkQWZ0ZXJNYWluVGhyZWFkQ2FsbGJhY2soKTsK
ICAgICB9KTsKIH0KQEAgLTIxMDMsMTAgKzIxMDIsOSBAQCB2b2lkIEljb25EYXRhYmFzZTo6ZGlz
cGF0Y2hEaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkxPbk1haW5UaHJlYWQoY29uc3QgU3RyaW5n
JgogICAgIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFEKCk7CiAgICAgKyttX21haW5UaHJlYWRDYWxs
YmFja0NvdW50OwogCi0gICAgU3RyaW5nIHBhZ2VVUkxDb3B5ID0gcGFnZVVSTC5pc29sYXRlZENv
cHkoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwYWdlVVJMQ29weV0geworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpXSB7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRJbXBvcnRJ
Y29uRGF0YUZvclBhZ2VVUkwocGFnZVVSTENvcHkpOworICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZEltcG9ydEljb25EYXRhRm9yUGFnZVVSTChwYWdlVVJMKTsKICAgICAgICAgY2hlY2tDbG9zZWRB
ZnRlck1haW5UaHJlYWRDYWxsYmFjaygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKaW5kZXggMjM1MDBiZTJhYzViMGYwOGMwNjI3N2Q2
M2ExMGQ4OGJhM2UzZjhjNy4uZWYyYTUyNTJmZmFhYjQ5NmJkNGM1MzBmMWM1MDUxNDM4NWY0NjIz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCkBAIC03
Nyw5ICs3Nyw5IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6d2FpdFVudGlsT2JzZXJ2ZXJz
KCkKICAgICAgICAgbV9jb25kaXRpb24ud2FpdChtX2xvY2spOwogfQogCi12b2lkIFJlc291cmNl
VXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVycyhSZXNvdXJjZVVzYWdlRGF0YSYgZGF0YSkKK3Zv
aWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6bm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VEYXRh
JiYgZGF0YSkKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtkYXRhXSgpIG11dGFibGUgeworICAg
IGNhbGxPbk1haW5UaHJlYWQoW2RhdGEgPSBXVEZNb3ZlKGRhdGEpXSgpIG11dGFibGUgewogICAg
ICAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJjZVVzYWdlRGF0YSYp
Pj4gZnVuY3Rpb25zOwogICAgICAgICAKICAgICAgICAgewpAQCAtMTE3LDcgKzExNyw3IEBAIE5P
X1JFVFVSTiB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnRocmVhZEJvZHkoKQogCiAgICAgICAg
IFJlc291cmNlVXNhZ2VEYXRhIGRhdGE7CiAgICAgICAgIHBsYXRmb3JtVGhyZWFkQm9keShtX3Zt
LCBkYXRhKTsKLSAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKGRhdGEpOworICAgICAgICBub3RpZnlP
YnNlcnZlcnMoV1RGTW92ZShkYXRhKSk7CiAKICAgICAgICAgYXV0byBkdXJhdGlvbiA9IHN0ZDo6
Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpIC0gc3RhcnQpOwogICAgICAgICBhdXRvIGRpZmZlcmVu
Y2UgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDUwMCkgLSBkdXJhdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKaW5kZXggZmQyNTgxYWZjNWE1ZDZjOWNm
NDVmZDdiYmYzZjM1YzNmMmE0Y2FiYy4uMjVlNGMzZDVhYTZhYjNiNGFiMWQ2ZGU1ODU2MmQwZmRm
Y2UxNmQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKQEAg
LTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUmVzb3VyY2VVc2FnZVRocmVhZCYg
c2luZ2xldG9uKCk7CiAKICAgICB2b2lkIHdhaXRVbnRpbE9ic2VydmVycygpOwotICAgIHZvaWQg
bm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VEYXRhJik7CisgICAgdm9pZCBub3RpZnlPYnNl
cnZlcnMoUmVzb3VyY2VVc2FnZURhdGEmJik7CiAKICAgICB2b2lkIGNyZWF0ZVRocmVhZElmTmVl
ZGVkKCk7CiAgICAgc3RhdGljIHZvaWQgdGhyZWFkQ2FsbGJhY2sodm9pZCogc2Nyb2xsaW5nVGhy
ZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJl
YWQuY3BwCmluZGV4IDQ2NjlhMTk5Mjg3YTZjYWYwYWViYzZiYmJhNWE3ZWVlNWM1ZWJkNmIuLjM1
YTE3YjhlNzgzMjkwZGZhYTZjNmQ4M2YzZGI3ODEyMjQzNzRkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcApAQCAtNDUsMjIgKzQ1
LDIyIEBAIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKQogICAgIHJldHVy
biB0aHJlYWRJZGVudGlmaWVyICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJZGVudGlmaWVy
OwogfQogCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChOb25jb3B5YWJs
ZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgYXV0byYgc2Nyb2xsaW5nVGhyZWFkID0gU2Ny
b2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKTsKICAgICBzY3JvbGxpbmdUaHJlYWQuY3JlYXRlVGhy
ZWFkSWZOZWVkZWQoKTsKIAogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2soc2Nyb2xsaW5nVGhyZWFkLm1fZnVuY3Rpb25zTXV0ZXgpOwotICAgICAgICBzY3JvbGxpbmdU
aHJlYWQubV9mdW5jdGlvbnMuYXBwZW5kKGZ1bmN0aW9uKTsKKyAgICAgICAgc2Nyb2xsaW5nVGhy
ZWFkLm1fZnVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQogCiAgICAg
c2Nyb2xsaW5nVGhyZWFkLndha2VVcFJ1bkxvb3AoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUaHJl
YWQ6OmRpc3BhdGNoQmFycmllcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQordm9p
ZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1bmN0aW9uJiYg
ZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0Y2goW2Z1bmN0aW9uXSgpIG11dGFibGUgeworICAgIGRp
c3BhdGNoKFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSgpIG11dGFibGUgewogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9KTsKIH0KQEAgLTEw
NCw3ICsxMDQsNyBAQCB2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9t
U2Nyb2xsaW5nVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoaXNDdXJyZW50VGhyZWFkKCkpOwogCi0g
ICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IGZ1bmN0aW9uczsKKyAgICBWZWN0b3I8
Tm9uY29weWFibGVGdW5jdGlvbj4gZnVuY3Rpb25zOwogICAgIAogICAgIHsKICAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9mdW5jdGlvbnNNdXRleCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCmluZGV4IGE3MDljY2Q4ZTc4
NjM2MjlkZThhMjgzYzQ2M2NhOWM3NzA1MWM3MTUuLmFhZjU3N2JkZDk4ODNkNDMwMjA0NzIyNmI1
ZTgyMTBiZjg2YjU1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RocmVhZC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDcsMTEgKzQ4LDExIEBAIGNs
YXNzIFNjcm9sbGluZ1RocmVhZCB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0N1cnJl
bnRUaHJlYWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaChzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNw
YXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAgICAgLy8gV2lsbCBkaXNwYXRjaCB0aGUg
Z2l2ZW4gZnVuY3Rpb24gb24gdGhlIG1haW4gdGhyZWFkIG9uY2UgYWxsIHBlbmRpbmcgZnVuY3Rp
b25zCiAgICAgLy8gb24gdGhlIHNjcm9sbGluZyB0aHJlYWQgaGF2ZSBmaW5pc2hlZCBleGVjdXRp
bmcuIFVzZWQgZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBkaXNwYXRjaEJhcnJpZXIoc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hCYXJyaWVyKE5vbmNvcHlhYmxl
RnVuY3Rpb24mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFNjcm9s
bGluZ1RocmVhZD47CkBAIC03OSw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX2luaXRp
YWxpemVSdW5Mb29wTXV0ZXg7CiAKICAgICBMb2NrIG1fZnVuY3Rpb25zTXV0ZXg7Ci0gICAgVmVj
dG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25zOworICAgIFZlY3RvcjxOb25j
b3B5YWJsZUZ1bmN0aW9uPiBtX2Z1bmN0aW9uczsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFdlYkNvcmU6OlJ1bkxvb3AgaGVyZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNw
cAppbmRleCAwODJiZDczY2RiYmYyZDk2ZDhjOGQ0YTkxMjhhOWVjOTcwNDdmYWU4Li42NjI2ZWNj
YzhlMWE3ZDZmMGEwOWU2ZjYxNGNmMWM3MDNhYjYwYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwCkBAIC02Nyw5
ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6aW52YWxpZGF0ZSgpCiAgICAgLy8gU2lu
Y2UgdGhpcyBjYW4gcG90ZW50aWFsbHkgYmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBzY3Jv
bGxpbmcgY29vcmRpbmF0b3IsCiAgICAgLy8gd2UgbmVlZCB0byByZWxlYXNlIGl0IG9uIHRoZSBt
YWluIHRocmVhZCBzaW5jZSBpdCBoYXMgbWVtYmVyIHZhcmlhYmxlcyAoc3VjaCBhcyB0aW1lcnMp
CiAgICAgLy8gdGhhdCBleHBlY3QgdG8gYmUgZGVzdHJveWVkIGZyb20gdGhlIG1haW4gdGhyZWFk
LgotICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Ny
b2xsaW5nQ29vcmRpbmF0b3IucmVsZWFzZSgpLmxlYWtSZWYoKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvcl0gewotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+ZGVyZWYoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvciA9
IFdURk1vdmUobV9zY3JvbGxpbmdDb29yZGluYXRvcildIHsKICAgICB9KTsKIH0KIApAQCAtODYs
MTAgKzg0LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlSU9TOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNj
cm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdAogICAgIGlmIChub2RlSUQgPT0gcm9v
dE5vZGUoKS0+c2Nyb2xsaW5nTm9kZUlEKCkpCiAgICAgICAgIHNldE1haW5GcmFtZVNjcm9sbFBv
c2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKIAotICAgIFJlZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yPiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7Ci0g
ICAgYm9vbCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwgPSBpc0hhbmRsaW5nUHJv
Z3JhbW1hdGljU2Nyb2xsKCk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29y
ZGluYXRvciwgbm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbG9jYWxJc0hhbmRsaW5nUHJvZ3JhbW1h
dGljU2Nyb2xsLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uXSB7CisgICAgY2FsbE9uTWFp
blRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBu
b2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwg
PSBpc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsKCksIHNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb25dIHsKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjaGVkdWxlVXBkYXRlU2Ny
b2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxvY2Fs
SXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlv
bik7CiAgICAgfSk7CiB9CkBAIC0xMjMsOCArMTE4LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlSU9T
OjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2Rl
SUQKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRp
bmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsXSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLCBub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsXSB7CiAgICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhub2RlSUQsIGhvcml6b250
YWwsIHZlcnRpY2FsKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWMubW0KaW5kZXggYmQ4MTg1NDhiNTMwZTBlMjQ5YWE0YjY4ZTQ3YTEyNWJmZDE0
MjEyZS4uOGIzZjFjYzcwOWYyNGE3Mjk3OGI0NTIyZTkxYTk4YTMxOGVhZDAwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KQEAgLTc1LDExICs3NSw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6cmVsZWFzZVJlZmVyZW5j
ZXNUb1Njcm9sbGVySW1wc09uVGhlTWFpCiAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxlckltcCB8
fCBtX2hvcml6b250YWxTY3JvbGxlckltcCkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBh
IHdvcmthcm91bmQgaW4gcGxhY2UgZm9yIHRoZSB0aW1lIGJlaW5nIHNpbmNlIE5TU2Nyb2xsZXJJ
bXBzIGNhbm5vdCBiZSBkZWFsbG9jYXRlZAogICAgICAgICAvLyBvbiBhIG5vbi1tYWluIHRocmVh
ZC4gcmRhcjovL3Byb2JsZW0vMjQ1MzUwNTUKLSAgICAgICAgTlNTY3JvbGxlckltcCAqcmV0YWlu
ZWRWZXJ0aWNhbFNjcm9sbGVySW1wID0gbV92ZXJ0aWNhbFNjcm9sbGVySW1wLmxlYWtSZWYoKTsK
LSAgICAgICAgTlNTY3JvbGxlckltcCAqcmV0YWluZWRIb3Jpem9udGFsU2Nyb2xsZXJJbXAgPSBt
X2hvcml6b250YWxTY3JvbGxlckltcC5sZWFrUmVmKCk7Ci0gICAgICAgIFdURjo6Y2FsbE9uTWFp
blRocmVhZChbcmV0YWluZWRWZXJ0aWNhbFNjcm9sbGVySW1wLCByZXRhaW5lZEhvcml6b250YWxT
Y3JvbGxlckltcF0gewotICAgICAgICAgICAgW3JldGFpbmVkVmVydGljYWxTY3JvbGxlckltcCBy
ZWxlYXNlXTsKLSAgICAgICAgICAgIFtyZXRhaW5lZEhvcml6b250YWxTY3JvbGxlckltcCByZWxl
YXNlXTsKKyAgICAgICAgV1RGOjpjYWxsT25NYWluVGhyZWFkKFt2ZXJ0aWNhbFNjcm9sbGVySW1w
ID0gV1RGTW92ZShtX3ZlcnRpY2FsU2Nyb2xsZXJJbXApLCBob3Jpem9udGFsU2Nyb2xsZXJJbXAg
PSBXVEZNb3ZlKG1faG9yaXpvbnRhbFNjcm9sbGVySW1wKV0gewogICAgICAgICB9KTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAppbmRleCAzMmVhYzQ1MjRmNzZkYWY5YTdhZDIyNGVjOWI0ZTZlODBkNDMzMTgwLi40OTVk
OGI3ZTg4Y2FjM2Q4MWMwM2JkNzEwNDExMDNjZGIzMTkwZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTE3Miw3ICsxNzIs
OSBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeShDcml0aWNhbCBj
cml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hybwogICAgICAgICAvLyBGYXN0TWFsbG9jIGhhcyBs
b2NrLWZyZWUgdGhyZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBvbmx5IGJlIGNsZWFyZWQg
ZnJvbSB0aGUgdGhyZWFkIGl0c2VsZi4KICAgICAgICAgV29ya2VyVGhyZWFkOjpyZWxlYXNlRmFz
dE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKSAmJiAhUExBVEZPUk0oSU9TKQotICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
KFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KTsKKyAgICAgICAgU2Nyb2xsaW5nVGhy
ZWFkOjpkaXNwYXRjaChbXSgpIHsKKyAgICAgICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5KCk7CisgICAgICAgIH0pOwogI2VuZGlmCiAgICAgICAgIFdURjo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQppbmRleCAx
MmNiY2JmOGYyNjFhYmUxYWYxMjQyYjA1MjQ0ZDZkZjE2MzMxYzRhLi42MzJkYzM1MTBmNzE0Njhi
Njg0ZjJkODRlMjcwOGIxYjg3ZWZiM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQpAQCAtMzk2
LDEwICszOTYsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOwogCiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewot
ICAgICAgICBhdXRvIHZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KTsKLSAgICAgICAg
YXV0byByb3V0aW5nQ29udHJvbGxlciA9IFdURk1vdmUoX2FpclBsYXlQcmVzZW5jZVJvdXRpbmdD
b250cm9sbGVyKTsKLQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt2b2x1bWVWaWV3LCByb3V0
aW5nQ29udHJvbGxlcl0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Zv
bHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KSwgcm91dGluZ0NvbnRyb2xsZXIgPSBXVEZN
b3ZlKF9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcildICgpIG11dGFibGUgewogICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVhbGxvY10gLSBk
aXBhdGNoZWQgdG8gTWFpblRocmVhZCIpOwogCiAgICAgICAgICAgICB2b2x1bWVWaWV3LmNsZWFy
KCk7CkBAIC00MzUsMTUgKzQzMiwxNCBAQCAtICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXMKIAogICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXNdIik7CiAKLSAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9u
SGVscGVyPiBzdHJvbmdTZWxmID0gc2VsZjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdT
ZWxmXSAoKSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0
cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+KHNlbGYpXSAoKSB7CiAgICAgICAgIExPRyhNZWRpYSwg
Ii1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdIC0g
ZGlwYXRjaGVkIHRvIE1haW5UaHJlYWQiKTsKIAotICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X2Fp
clBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyKQorICAgICAgICBpZiAocHJvdGVjdGVkU2Vs
Zi0+X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIHN0cm9uZ1NlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxl
ciA9IGFkb3B0TlMoW2FsbG9jTVBBVlJvdXRpbmdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0
aE5hbWU6QCJXZWJDb3JlIC0gSFRNTCBtZWRpYSBlbGVtZW50IGNoZWNraW5nIGZvciBBaXJQbGF5
IHJvdXRlIHByZXNlbmNlIl0pOwotICAgICAgICBbc3Ryb25nU2VsZi0+X2FpclBsYXlQcmVzZW5j
ZVJvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1vZGU6TVBSb3V0ZURpc2NvdmVyeU1vZGVQ
cmVzZW5jZV07CisgICAgICAgIHByb3RlY3RlZFNlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5n
Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jTVBBVlJvdXRpbmdDb250cm9sbGVySW5zdGFuY2Uo
KSBpbml0V2l0aE5hbWU6QCJXZWJDb3JlIC0gSFRNTCBtZWRpYSBlbGVtZW50IGNoZWNraW5nIGZv
ciBBaXJQbGF5IHJvdXRlIHByZXNlbmNlIl0pOworICAgICAgICBbcHJvdGVjdGVkU2VsZi0+X2Fp
clBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1vZGU6TVBSb3V0ZURp
c2NvdmVyeU1vZGVQcmVzZW5jZV07CiAgICAgfSk7CiB9CiAKQEAgLTQ1NCwxNSArNDUwLDE0IEBA
IC0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzCiAKICAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdIik7CiAK
LSAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBzdHJvbmdTZWxmID0gc2VsZjsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSAoKSB7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+KHNl
bGYpXSAoKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0
b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc10gLSBkaXBhdGNoZWQgdG8gTWFpblRocmVhZCIpOwog
Ci0gICAgICAgIGlmICghc3Ryb25nU2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9s
bGVyKQorICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5n
Q29udHJvbGxlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBbc3Ryb25nU2VsZi0+
X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1vZGU6TVBSb3V0
ZURpc2NvdmVyeU1vZGVEaXNhYmxlZF07Ci0gICAgICAgIHN0cm9uZ1NlbGYtPl9haXJQbGF5UHJl
c2VuY2VSb3V0aW5nQ29udHJvbGxlciA9IG5pbDsKKyAgICAgICAgW3Byb3RlY3RlZFNlbGYtPl9h
aXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlciBzZXREaXNjb3ZlcnlNb2RlOk1QUm91dGVE
aXNjb3ZlcnlNb2RlRGlzYWJsZWRdOworICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fYWlyUGxheVBy
ZXNlbmNlUm91dGluZ0NvbnRyb2xsZXIgPSBuaWw7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCAzZDkwZGVkZjZj
OTk3NGQ0NGUyMDJiODlmZDE4ZTg0MjQ3ZTA1NmRhLi41MjJhYTM2MmY2ZjIxYTk1Y2FkNDJmZjk3
NzhhYTAxYTYxMmVkNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tCkBAIC0zMjMsOSArMzIzLDggQEAgdm9pZCBBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3Ry
ZWEKICAgICBtZW1zZXQobV9saXN0LmdldCgpLCAwLCBidWZmZXJMaXN0U2l6ZSk7CiAgICAgbV9s
aXN0LT5tTnVtYmVyQnVmZmVycyA9IG51bWJlck9mQ2hhbm5lbHM7CiAKLSAgICBSZWZQdHI8QXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IHN0cm9uZ1RoaXMgPSB0aGlzOwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3N0cm9uZ1RoaXMsIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGVdIHsKLSAg
ICAgICAgc3Ryb25nVGhpcy0+bV9jbGllbnQtPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBz
YW1wbGVSYXRlKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPigqdGhpcyksIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBs
ZVJhdGVdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQtPnNldEZvcm1hdChudW1i
ZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA5ODYy
MTE3NDgzYjY5NTNjYWY2MmE4YTMyMWQzNWE0MDEwZmEzMjU3Li42OTI4NzFhMTBlNmJmNTY2NjMx
YjE5YWQ0ZjgzZmZiYTIyOGVhODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtODA2LDggKzgwNiw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmlj
YXRpb24oTm90aWZpY2F0aW9uCiAgICAgaWYgKGRlbGF5RGlzcGF0Y2ggJiYgIW1fbWFpblRocmVh
ZENhbGxQZW5kaW5nKSB7CiAgICAgICAgIG1fbWFpblRocmVhZENhbGxQZW5kaW5nID0gdHJ1ZTsK
IAotICAgICAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrVGhpc10geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFr
VGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTg0NCw4ICs4NDMsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzcGF0Y2hOb3RpZmljYXRpb24oKQogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoIW1fcXVldWVkTm90aWZpY2F0aW9ucy5pc0VtcHR5KCkg
JiYgIW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7Ci0gICAgICAgICAgICBhdXRvIHdlYWtUaGlz
ID0gY3JlYXRlV2Vha1B0cigpOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1Ro
aXNdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gY3JlYXRlV2Vh
a1B0cigpXSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGEyOGQ5Mjk0ZGM5ZTFmMDlhYzI0MzhmMzY4YTJj
MDJkYzllYjcwOWYuLjVmZmQ1MjE3YTU4Y2NlMTM4Yzc0YWE0MGM2NzYzNGYyMGRlMjkwZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC04NCwxMCArODQsMTAgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
OihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KICAgICBp
ZiAoW2tleVBhdGggaXNFcXVhbFRvOkAib3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4
dGVybmFsUHJvdGVjdGlvbiJdKSB7CiAgICAgICAgIGlmIChbW2NoYW5nZSB2YWx1ZUZvcktleTpO
U0tleVZhbHVlQ2hhbmdlTmV3S2V5XSBpbnRWYWx1ZV0gPT0gMSkgewogICAgICAgICAgICAgUmV0
YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFw
cGxlLldlYktpdCIgY29kZTonSERDUCcgdXNlckluZm86bmlsXTsKLSAgICAgICAgICAgIFJldGFp
blB0cjxXZWJDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ0xpc3RlbmVyPiBzdHJvbmdTZWxmID0g
eyBzZWxmIH07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBlcnJv
cl0gewotICAgICAgICAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5fcGFyZW50KQotICAgICAgICAg
ICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5wbGF5ZXJEaWRSZWNlaXZlRXJyb3IoZXJy
b3IuZ2V0KCkpOworICAgICAgICAgICAgUmV0YWluUHRyPFdlYkNETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDTGlzdGVuZXI+IHByb3RlY3RlZFNlbGYgPSB7IHNlbGYgfTsKKyAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBXVEZNb3ZlKHByb3RlY3RlZFNlbGYpLCBl
cnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFNl
bGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQt
PnBsYXllckRpZFJlY2VpdmVFcnJvcihlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0KaW5kZXggMmM3MDc3NzVmOWIzOTA4ZDhhMTFk
ZmM0Y2E2MTNkZGJjOWMwNGYzYy4uMjJiMDRhNzVjYTM4NzNiNWNjNzcyMmFjN2MwZGY1MTQ0ZjFk
MGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTWFjLm1tCkBAIC0xODUsMTYgKzE4NSwxNiBAQCAtICh2b2lkKW9ic2VydmVW
YWx1ZUZvcktleVBhdGg6KGlkKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbgogICAgIGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOmV4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlS2V5TmFtZV0gJiYgIVtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpleHRl
cm5hbE91dHB1dERldmljZVBpY2tlZEtleU5hbWVdKQogICAgICAgICByZXR1cm47CiAKLSAgICBS
ZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlckhlbHBlcj4gc3Ryb25nU2Vs
ZiA9IHNlbGY7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJvbmdLZXlQYXRoID0ga2V5UGF0
aDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdLZXlQYXRoXSB7Ci0g
ICAgICAgIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMqIGNhbGxiYWNrID0gc3Ryb25nU2Vs
Zi0+bV9jYWxsYmFjazsKKyAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VNZW51Q29udHJv
bGxlckhlbHBlcj4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBwcm90ZWN0ZWRLZXlQYXRoID0ga2V5UGF0aDsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKSwgcHJvdGVjdGVkS2V5UGF0aCA9IFdU
Rk1vdmUocHJvdGVjdGVkS2V5UGF0aCldIHsKKyAgICAgICAgTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYyogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5tX2NhbGxiYWNrOwogICAgICAgICBp
ZiAoIWNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChbc3Ryb25n
S2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVLZXlO
YW1lXSkKKyAgICAgICAgaWYgKFtwcm90ZWN0ZWRLZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZUtleU5hbWVdKQogICAgICAgICAgICAgY2FsbGJhY2st
PmF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKTsKLSAgICAgICAgZWxzZSBpZiAoW3N0cm9uZ0tl
eVBhdGggaXNFcXVhbFRvU3RyaW5nOmV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2VkS2V5TmFtZV0p
CisgICAgICAgIGVsc2UgaWYgKFtwcm90ZWN0ZWRLZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpleHRl
cm5hbE91dHB1dERldmljZVBpY2tlZEtleU5hbWVdKQogICAgICAgICAgICAgY2FsbGJhY2stPmN1
cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IGE4OTE0NDAyODE0NzE1OWEwNjE5ZmFjODNjNWMxMGYyZTJmYjY0MDIuLjQ4NjkxM2E3
OWMzYjE5MGQ2NDEwYTdmMTYyYTkzNjdmN2E5N2U0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtNzAxLDggKzcwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlVmlkZW9MYXllcigpCiAgICAgaWYgKCFtX2F2UGxheWVyIHx8IG1faGF2ZUJl
ZW5Bc2tlZFRvQ3JlYXRlTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd2Vha1Ro
aXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQ
dHIoKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0zNDQxLDE1ICszNDQwLDE1IEBAIC0gKHZvaWQpbGVnaWJsZU91dHB1dDooaWQpb3V0cHV0IGRp
ZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBuCiAgICAgaWYgKCFt
X2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1v
dmllT2JzZXJ2ZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOwotICAgIFJldGFpblB0cjxOU0FycmF5PiBz
dHJvbmdTdHJpbmdzID0gc3RyaW5nczsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gc3Ryb25nU2Ft
cGxlcyA9IG5hdGl2ZVNhbXBsZXM7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwg
c3Ryb25nU3RyaW5ncywgc3Ryb25nU2FtcGxlcywgaXRlbVRpbWVdIHsKLSAgICAgICAgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdTZWxmLT5tX2Nh
bGxiYWNrOworICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTW92aWVPYnNlcnZlcj4gcHJvdGVjdGVk
U2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IHByb3RlY3RlZFN0cmluZ3MgPSBz
dHJpbmdzOworICAgIFJldGFpblB0cjxOU0FycmF5PiBwcm90ZWN0ZWROYXRpdmVTYW1wbGVzID0g
bmF0aXZlU2FtcGxlczsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RG
TW92ZShwcm90ZWN0ZWRTZWxmKSwgcHJvdGVjdGVkU3RyaW5ncyA9IFdURk1vdmUocHJvdGVjdGVk
U3RyaW5ncyksIHByb3RlY3RlZE5hdGl2ZVNhbXBsZXMgPSBXVEZNb3ZlKHByb3RlY3RlZE5hdGl2
ZVNhbXBsZXMpLCBpdGVtVGltZV0geworICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPm1fY2FsbGJhY2s7CiAgICAgICAg
IGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIE1lZGlhVGltZSB0
aW1lID0gc3RkOjptYXgodG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBNZWRpYVRpbWU6Onplcm9UaW1l
KCkpOwotICAgICAgICBjYWxsYmFjay0+cHJvY2Vzc0N1ZShzdHJvbmdTdHJpbmdzLmdldCgpLCBz
dHJvbmdTYW1wbGVzLmdldCgpLCB0aW1lKTsKKyAgICAgICAgY2FsbGJhY2stPnByb2Nlc3NDdWUo
cHJvdGVjdGVkU3RyaW5ncy5nZXQoKSwgcHJvdGVjdGVkTmF0aXZlU2FtcGxlcy5nZXQoKSwgdGlt
ZSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0NjAsOSArMzQ1OSw4IEBAIC0gKHZvaWQpb3V0cHV0U2Vx
dWVuY2VXYXNGbHVzaGVkOihpZClvdXRwdXQKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXI+IHN0
cm9uZ1NlbGYgPSBzZWxmOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGZdIHsKLSAg
ICAgICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIGNhbGxiYWNrID0g
c3Ryb25nU2VsZi0+bV9jYWxsYmFjaykKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyPihzZWxmKV0geworICAgICAg
ICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBwcm90
ZWN0ZWRTZWxmLT5tX2NhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2stPmZsdXNoQ3Vlcygp
OwogICAgIH0pOwogfQpAQCAtMzQ4OCwxNyArMzQ4NiwxNyBAQCAtIChCT09MKXJlc291cmNlTG9h
ZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9y
TG9hZAogICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgUmV0
YWluUHRyPFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZT4gc3Ryb25nU2VsZiA9IHNlbGY7Ci0gICAg
UmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBzdHJvbmdSZXF1ZXN0ID0g
bG9hZGluZ1JlcXVlc3Q7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgc3Ryb25n
UmVxdWVzdF0gewotICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBj
YWxsYmFjayA9IHN0cm9uZ1NlbGYtPm1fY2FsbGJhY2s7CisgICAgUmV0YWluUHRyPFdlYkNvcmVB
VkZMb2FkZXJEZWxlZ2F0ZT4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBwcm90ZWN0ZWRMb2FkaW5nUmVxdWVzdCA9IGxv
YWRpbmdSZXF1ZXN0OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBXVEZN
b3ZlKHByb3RlY3RlZFNlbGYpLCBwcm90ZWN0ZWRMb2FkaW5nUmVxdWVzdCA9IFdURk1vdmUocHJv
dGVjdGVkTG9hZGluZ1JlcXVlc3QpXSB7CisgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+bV9jYWxsYmFjazsKICAgICAg
ICAgaWYgKCFjYWxsYmFjaykgewogICAgICAgICAgICAgW3N0cm9uZ1JlcXVlc3QgZmluaXNoTG9h
ZGluZ1dpdGhFcnJvcjpuaWxdOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFjYWxsYmFjay0+c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKHN0cm9u
Z1JlcXVlc3QuZ2V0KCkpKQotICAgICAgICAgICAgW3N0cm9uZ1JlcXVlc3QgZmluaXNoTG9hZGlu
Z1dpdGhFcnJvcjpuaWxdOworICAgICAgICBpZiAoIWNhbGxiYWNrLT5zaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UocHJvdGVjdGVkTG9hZGluZ1JlcXVlc3QuZ2V0KCkpKQorICAgICAgICAg
ICAgW3Byb3RlY3RlZExvYWRpbmdSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6bmlsXTsK
ICAgICB9KTsKIAogICAgIHJldHVybiBZRVM7CkBAIC0zNTEzLDE3ICszNTExLDE3IEBAIC0gKEJP
T0wpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVy
IHNob3VsZFdhaXRGb3JSZXNwCiAgICAgaWYgKFtbW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2Vd
IGF1dGhlbnRpY2F0aW9uTWV0aG9kXSBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlv
bk1ldGhvZFNlcnZlclRydXN0XSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgUmV0YWluUHRy
PFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZT4gc3Ryb25nU2VsZiA9IHNlbGY7Ci0gICAgUmV0YWlu
UHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHN0cm9uZ0NoYWxsZW5nZSA9IGNoYWxs
ZW5nZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdDaGFsbGVuZ2Vd
IHsKLSAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sg
PSBzdHJvbmdTZWxmLT5tX2NhbGxiYWNrOworICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTG9hZGVy
RGVsZWdhdGU+IHByb3RlY3RlZFNlbGYgPSBzZWxmOworICAgIFJldGFpblB0cjxOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlPiBwcm90ZWN0ZWRDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiks
IHByb3RlY3RlZENoYWxsZW5nZSA9IFdURk1vdmUocHJvdGVjdGVkQ2hhbGxlbmdlKV0geworICAg
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBjYWxsYmFjayA9IHByb3Rl
Y3RlZFNlbGYtPm1fY2FsbGJhY2s7CiAgICAgICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAg
ICAgIFtbc3Ryb25nQ2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6c3Ryb25nQ2hhbGxlbmdlLmdldCgpXTsKKyAgICAgICAgICAgIFtbcHJvdGVjdGVkQ2hhbGxl
bmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6cHJvdGVjdGVkQ2hhbGxl
bmdlLmdldCgpXTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICghY2FsbGJhY2stPnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2Uoc3Ryb25nQ2hhbGxlbmdlLmdldCgpKSkKLSAgICAgICAgICAgIFtbc3Ryb25nQ2hhbGxlbmdl
IHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6c3Ryb25nQ2hhbGxlbmdlLmdl
dCgpXTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShwcm90ZWN0ZWRDaGFsbGVuZ2UuZ2V0KCkpKQorICAgICAgICAg
ICAgW1twcm90ZWN0ZWRDaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpwcm90ZWN0ZWRDaGFsbGVuZ2UuZ2V0KCldOwogICAgIH0pOwogCiAgICAgcmV0dXJuIFlF
UzsKQEAgLTM1MzUsMTIgKzM1MzMsMTIgQEAgLSAodm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3Nl
dFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9hZGluZ1IKICAgICBp
ZiAoIW1fY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxXZWJDb3Jl
QVZGTG9hZGVyRGVsZWdhdGU+IHN0cm9uZ1NlbGYgPSBzZWxmOwotICAgIFJldGFpblB0cjxBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gc3Ryb25nUmVxdWVzdCA9IGxvYWRpbmdSZXF1ZXN0
OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1JlcXVlc3RdIHsKLSAg
ICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJv
bmdTZWxmLT5tX2NhbGxiYWNrOworICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTG9hZGVyRGVsZWdh
dGU+IHByb3RlY3RlZFNlbGYgPSBzZWxmOworICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nUmVxdWVzdD4gcHJvdGVjdGVkTG9hZGluZ1JlcXVlc3QgPSBsb2FkaW5nUmVxdWVzdDsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRT
ZWxmKSwgcHJvdGVjdGVkTG9hZGluZ1JlcXVlc3QgPSBXVEZNb3ZlKHByb3RlY3RlZExvYWRpbmdS
ZXF1ZXN0KV0geworICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBj
YWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPm1fY2FsbGJhY2s7CiAgICAgICAgIGlmIChjYWxsYmFj
aykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5kaWRDYW5jZWxMb2FkaW5nUmVxdWVzdChzdHJvbmdS
ZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5kaWRDYW5jZWxMb2FkaW5nUmVx
dWVzdChwcm90ZWN0ZWRMb2FkaW5nUmVxdWVzdC5nZXQoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyZjU4MmRiZTQ3OWJjYmZlZjg5MzVjZTkxZTNjMjQ3
YmNjNTdiZjJjLi5iMzVlM2RlNDc1ZGUyMDYxZGQzZDZkNDk2MjAwZjAyYjYwY2RlZGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMjksOCArMTI5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RhdGljIHZvaWQgQ01UaW1lYmFzZUVmZmVjdGl2ZVJhdGVDaGFuZ2VkQ2FsbGJh
Y2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQgKmxpc3RlbmVyLCBDRlN0cmlu
Z1JlZiwgY29uc3Qgdm9pZCAqLCBDRlR5cGVSZWYpCiB7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIgPSAoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKilsaXN0ZW5lcjsKLSAgICBhdXRvIHdlYWtUaGlzID0gcGxheWVyLT5jcmVhdGVX
ZWFrUHRyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdeworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3dlYWtUaGlzID0gcGxheWVyLT5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2Vha1RoaXMuZ2V0
KCktPmVmZmVjdGl2ZVJhdGVDaGFuZ2VkKCk7CkBAIC0zMTIsOCArMzExLDcgQEAgUGxhdGZvcm1M
YXllciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwbGF0Zm9ybUxheWVy
KCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBs
YXkoKQogewotICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXNdeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0g
Y3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHdlYWtUaGlzLmdldCgpLT5wbGF5SW50ZXJuYWwoKTsKQEAgLTMzMiw4
ICszMzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGxh
eUludGVybmFsKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnBhdXNlKCkKIHsKLSAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXXsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhp
cyA9IGNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB3ZWFrVGhpcy5nZXQoKS0+cGF1c2VJbnRlcm5hbCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAyY2Y1ODc3MzYyMTIwNzg0NWViMWFhMTNjNTkyNjNl
ZmVlMmJlMDQ1Li5kYWVlMmVmZmViYWZiZmMzOWM2OGY3ZjFkY2ZhMGFhZmY0OWEyYmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1
ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC0xNDIsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRyYWNrcygpOwogICAg
IHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJl
ZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRU
YXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJik7CiAKICAgICBlbnVtIERpc3BsYXlNb2RlIHsKICAg
ICAgICAgTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA1ZGU0NGQwZGZmODY5
NGFkZDRiNWE1MWE4MWJiMzZkZDU4NzViZTNlLi43YTc5NjQyYTFjMDEzYTRiNGI1ODgwMGNhYzIw
ZGQ3MjhhMjFjNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC02MjQsMTEgKzYy
NCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TmV0
d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrUwogICAgIG1fcGxheWVyLT5uZXR3b3JrU3Rh
dGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzY2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24p
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZl
cnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChm
dW5jdGlvbik7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrVGhpcywgZnVuY3Rpb25dIHsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9u
KV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
CmluZGV4IGM1NmYyMWY2NmM4ZDZiZjc1OWYwNDQxMmNkNDNhZjljYjA0MjcwZjEuLjA2N2FiYzNl
YTBmYTMzNDMzZTlhYWNlYmIxMjI4ODk4ZmFjYWIwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0xNzksMTIgKzE3
OSwxMiBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0
cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJlYW1EYQogICAgIFVOVVNFRF9QQVJBTShzdHJlYW1E
YXRhUGFyc2VyKTsKICNlbmRpZgogICAgIEFTU0VSVChzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJz
ZXIpOwotICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gc3Ryb25n
U2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVy
PiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKIAotICAgIFJldGFpblB0cjxBVkFzc2V0Kj4gc3Ryb25n
QXNzZXQgPSBhc3NldDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdB
c3NldF0gewotICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X3BhcmVudCkKLSAgICAgICAgICAgIHN0
cm9uZ1NlbGYtPl9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoc3Ryb25nQXNzZXQu
Z2V0KCkpOworICAgIFJldGFpblB0cjxBVkFzc2V0Kj4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRT
ZWxmKSwgcHJvdGVjdGVkQXNzZXQgPSBXVEZNb3ZlKHByb3RlY3RlZEFzc2V0KV0geworICAgICAg
ICBpZiAocHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKKyAgICAgICAgICAgIHByb3RlY3RlZFNlbGYt
Pl9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0KCkp
OwogICAgIH0pOwogfQogCkBAIC0xOTUsMTIgKzE5NSwxMiBAQCAtICh2b2lkKXN0cmVhbURhdGFQ
YXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUGFyc2VTdHJl
YW1EYQogICAgIFVOVVNFRF9QQVJBTShzdHJlYW1EYXRhUGFyc2VyKTsKICNlbmRpZgogICAgIEFT
U0VSVChzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotICAgIFJldGFpblB0cjxXZWJBVlN0
cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gc3Ryb25nU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRy
PFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKIAot
ICAgIFJldGFpblB0cjxBVkFzc2V0Kj4gc3Ryb25nQXNzZXQgPSBhc3NldDsKLSAgICBjYWxsT25N
YWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdBc3NldF0gewotICAgICAgICBpZiAoc3Ryb25n
U2VsZi0+X3BhcmVudCkKLSAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPmRpZFBhcnNl
U3RyZWFtRGF0YUFzQXNzZXQoc3Ryb25nQXNzZXQuZ2V0KCkpOworICAgIFJldGFpblB0cjxBVkFz
c2V0Kj4gcHJvdGVjdGVkQXNzZXQgPSBhc3NldDsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKSwgcHJvdGVjdGVkQXNzZXQgPSBXVEZN
b3ZlKHByb3RlY3RlZEFzc2V0KV0geworICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X3BhcmVu
dCkKKyAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmRpZFBhcnNlU3RyZWFtRGF0
YUFzQXNzZXQocHJvdGVjdGVkQXNzZXQuZ2V0KCkpOwogICAgIH0pOwogfQogCkBAIC0yMTAsMTIg
KzIxMCwxMiBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAq
KXN0cmVhbURhdGFQYXJzZXIgZGlkRmFpbFRvUGFyc2VTdAogICAgIFVOVVNFRF9QQVJBTShzdHJl
YW1EYXRhUGFyc2VyKTsKICNlbmRpZgogICAgIEFTU0VSVChzdHJlYW1EYXRhUGFyc2VyID09IF9w
YXJzZXIpOwotICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gc3Ry
b25nU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKIAotICAgIFJldGFpblB0cjxOU0Vycm9yPiBzdHJv
bmdFcnJvciA9IGVycm9yOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9u
Z0Vycm9yXSB7Ci0gICAgICAgIGlmIChzdHJvbmdTZWxmLT5fcGFyZW50KQotICAgICAgICAgICAg
c3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKHN0
cm9uZ0Vycm9yLmdldCgpKTsKKyAgICBSZXRhaW5QdHI8TlNFcnJvcj4gcHJvdGVjdGVkRXJyb3Ig
PSBlcnJvcjsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShw
cm90ZWN0ZWRTZWxmKSwgcHJvdGVjdGVkRXJyb3IgPSBXVEZNb3ZlKHByb3RlY3RlZEVycm9yKV0g
eworICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKKyAgICAgICAgICAgIHByb3Rl
Y3RlZFNlbGYtPl9wYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihwcm90
ZWN0ZWRFcnJvci5nZXQoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTIyNSwxMyArMjI1LDEzIEBAIC0g
KHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBh
cnNlciBkaWRQcm92aWRlTWVkaWFECiAgICAgVU5VU0VEX1BBUkFNKHN0cmVhbURhdGFQYXJzZXIp
OwogI2VuZGlmCiAgICAgQVNTRVJUKHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0gICAg
UmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBzdHJvbmdTZWxmID0gc2Vs
ZjsKKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXI+IHByb3RlY3Rl
ZFNlbGYgPSBzZWxmOwogCi0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBzdHJvbmdT
YW1wbGUgPSBzYW1wbGU7CisgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBwcm90ZWN0
ZWRTYW1wbGUgPSBzYW1wbGU7CiAgICAgU3RyaW5nIG1lZGlhVHlwZSA9IG5zTWVkaWFUeXBlOwot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ1NhbXBsZSwgdHJhY2tJRCwg
bWVkaWFUeXBlLCBmbGFnc10gewotICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X3BhcmVudCkKLSAg
ICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKHRyYWNrSUQsIHN0cm9uZ1NhbXBsZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiks
IHByb3RlY3RlZFNhbXBsZSA9IFdURk1vdmUocHJvdGVjdGVkU2FtcGxlKSwgdHJhY2tJRCwgbWVk
aWFUeXBlLCBmbGFnc10geworICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKKyAg
ICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmRpZFByb3ZpZGVNZWRpYURhdGFGb3JU
cmFja0lEKHRyYWNrSUQsIHByb3RlY3RlZFNhbXBsZS5nZXQoKSwgbWVkaWFUeXBlLCBmbGFncyk7
CiAgICAgfSk7CiB9CiAKQEAgLTI0MSwxMiArMjQxLDEyIEBAIC0gKHZvaWQpc3RyZWFtRGF0YVBh
cnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRSZWFjaEVuZE9m
VHJhCiAgICAgVU5VU0VEX1BBUkFNKHN0cmVhbURhdGFQYXJzZXIpOwogI2VuZGlmCiAgICAgQVNT
RVJUKHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0gICAgUmV0YWluUHRyPFdlYkFWU3Ry
ZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBzdHJvbmdTZWxmID0gc2VsZjsKKyAgICBSZXRhaW5QdHI8
V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXI+IHByb3RlY3RlZFNlbGYgPSBzZWxmOwogCiAg
ICAgU3RyaW5nIG1lZGlhVHlwZSA9IG5zTWVkaWFUeXBlOwotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3N0cm9uZ1NlbGYsIHRyYWNrSUQsIG1lZGlhVHlwZV0gewotICAgICAgICBpZiAoc3Ryb25nU2Vs
Zi0+X3BhcmVudCkKLSAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPmRpZFJlYWNoRW5k
T2ZUcmFja1dpdGhUcmFja0lEKHRyYWNrSUQsIG1lZGlhVHlwZSk7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHRyYWNrSUQsIG1l
ZGlhVHlwZV0geworICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKKyAgICAgICAg
ICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lE
KHRyYWNrSUQsIG1lZGlhVHlwZSk7CiAgICAgfSk7CiB9CiAKQEAgLTI3MiwxMyArMjcyLDEzIEBA
IC0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0
YVBhcnNlciBkaWRQcm92aWRlQ29udGVuCiAgICAgVU5VU0VEX1BBUkFNKHN0cmVhbURhdGFQYXJz
ZXIpOwogI2VuZGlmCiAgICAgQVNTRVJUKHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNlcik7Ci0g
ICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBzdHJvbmdTZWxmID0g
c2VsZjsKKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXI+IHByb3Rl
Y3RlZFNlbGYgPSBzZWxmOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gc3Ryb25nRGF0YSA9IGlu
aXREYXRhOworICAgIFJldGFpblB0cjxOU0RhdGE+IHByb3RlY3RlZEluaXREYXRhID0gaW5pdERh
dGE7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfc2VtYXBob3JlX3Q+IGhhc1Nlc3Npb25TZW1h
cGhvcmUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUoMCkpOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ0RhdGEsIHRyYWNrSUQsICBoYXNT
ZXNzaW9uU2VtYXBob3JlXSB7Ci0gICAgICAgIGlmIChzdHJvbmdTZWxmLT5fcGFyZW50KQotICAg
ICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChzdHJvbmdEYXRhLmdldCgpLCB0cmFja0lELCBo
YXNTZXNzaW9uU2VtYXBob3JlKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxm
ID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKSwgcHJvdGVjdGVkSW5pdERhdGEgPSBXVEZNb3ZlKHBy
b3RlY3RlZEluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vzc2lvblNlbWFwaG9yZSA9IFdURk1vdmUo
aGFzU2Vzc2lvblNlbWFwaG9yZSldIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPl9wYXJl
bnQpCisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5kaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHByb3RlY3RlZEluaXREYXRh
LmdldCgpLCB0cmFja0lELCBoYXNTZXNzaW9uU2VtYXBob3JlKTsKICAgICB9KTsKICAgICBkaXNw
YXRjaF9zZW1hcGhvcmVfd2FpdChoYXNTZXNzaW9uU2VtYXBob3JlLmdldCgpLCBESVNQQVRDSF9U
SU1FX0ZPUkVWRVIpOwogfQpAQCAtMzgyLDIxICszODIsMjEgQEAgLSAodm9pZClvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFu
Z2U6KE4KICAgICBVTlVTRURfUEFSQU0oa2V5UGF0aCk7CiAgICAgQVNTRVJUKF9wYXJlbnQpOwog
Ci0gICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lcj4gc3Ryb25nU2Vs
ZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lcj4g
cHJvdGVjdGVkU2VsZiA9IHNlbGY7CiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpnZXRB
VlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCldKSB7CiAgICAgICAgIFJldGFpblB0cjxB
VlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbGF5ZXIgPSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgKilvYmplY3Q7CiAgICAgICAgIEFTU0VSVChfbGF5ZXJzLmNvbnRhaW5zKGxheWVyLmdl
dCgpKSk7CiAKICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUbzpAImVycm9yIl0pIHsKICAg
ICAgICAgICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6
TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtz
dHJvbmdTZWxmLCBsYXllciwgZXJyb3JdIHsKLSAgICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5f
cGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQoKSwgZXJyb3IuZ2V0KCkpOwor
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJv
dGVjdGVkU2VsZiksIGxheWVyID0gV1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJv
cildIHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllckRpZFJl
Y2VpdmVFcnJvcihsYXllci5nZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAib3V0cHV0T2JzY3VyZWREdWVU
b0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbiJdKSB7CiAgICAgICAgICAgICBpZiAoW1tj
aGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV0gYm9vbFZhbHVlXSkgewog
ICAgICAgICAgICAgICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IFtOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQiIGNvZGU6J0hEQ1AnIHVzZXJJbmZvOm5pbF07
Ci0gICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVy
cm9yXSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPmxheWVyRGlk
UmVjZWl2ZUVycm9yKGxheWVyLmdldCgpLCBlcnJvci5nZXQoKSk7CisgICAgICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiks
IGxheWVyID0gV1RGTW92ZShsYXllciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+bGF5ZXJEaWRSZWNlaXZlRXJy
b3IobGF5ZXIuZ2V0KCksIGVycm9yLmdldCgpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlCkBAIC00MDksOCArNDA5LDggQEAgLSAodm9pZClvYnNl
cnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVj
dCBjaGFuZ2U6KE4KICAgICAgICAgQVNTRVJUKF9yZW5kZXJlcnMuY29udGFpbnMocmVuZGVyZXIu
Z2V0KCkpKTsKICAgICAgICAgQVNTRVJUKFtrZXlQYXRoIGlzRXF1YWxUbzpAImVycm9yIl0pOwog
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHJlbmRlcmVyLCBlcnJvcl0g
ewotICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+cmVuZGVyZXJEaWRSZWNlaXZlRXJy
b3IocmVuZGVyZXIuZ2V0KCksIGVycm9yLmdldCgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHJlbmRlcmVyID0gV1RG
TW92ZShyZW5kZXJlciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKKyAgICAgICAgICAgIHBy
b3RlY3RlZFNlbGYtPl9wYXJlbnQtPnJlbmRlcmVyRGlkUmVjZWl2ZUVycm9yKHJlbmRlcmVyLmdl
dCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIH0pOwogICAgIH0gZWxzZQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQyMSwxMSArNDIxLDExIEBAIC0gKHZvaWQpbGF5ZXJGYWls
ZWRUb0RlY29kZTooTlNOb3RpZmljYXRpb24qKW5vdGUKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGxheWVyID0gKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICop
W25vdGUgb2JqZWN0XTsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBbW25vdGUgdXNl
ckluZm9dIHZhbHVlRm9yS2V5OkFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNv
ZGVOb3RpZmljYXRpb25FcnJvcktleV07CiAKLSAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZm
ZXJFcnJvckxpc3RlbmVyPiBzdHJvbmdTZWxmID0gc2VsZjsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtzdHJvbmdTZWxmLCBsYXllciwgZXJyb3JdIHsKLSAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5f
cGFyZW50IHx8ICFzdHJvbmdTZWxmLT5fbGF5ZXJzLmNvbnRhaW5zKGxheWVyLmdldCgpKSkKKyAg
ICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyPiBwcm90ZWN0ZWRTZWxm
ID0gc2VsZjsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShw
cm90ZWN0ZWRTZWxmKSwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVy
cm9yKV0geworICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQgfHwgIXByb3RlY3Rl
ZFNlbGYtPl9sYXllcnMuY29udGFpbnMobGF5ZXIuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXll
ci5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5s
YXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgIH0pOwog
fQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDllY2VjNTIxYTk4OTc0ZWU3MDNlM2Q0ZDky
MzM2ZDBlYTRkYTZjYjYuLjIxZjUzMzhiMjZmNTNjMTUyYmRiYmVjNDYwMWFmYjk4NzYyNWFkZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI5NSw4ICsyOTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogCiBzdGF0
aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiB7Ci0gICAgYXV0byBp
bWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW2ltYWdlXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxD
R0ltYWdlUmVmPihpbmZvKV0gewogICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcAppbmRleCBiMzAzM2ZlMDUxMGY3OWQyNTEyYTQwNmJiMWJkZGYyOTVhZmE1YTM0Li5i
NDI4ZDUwZDk0YmY5MjQyODAzMjg3ZDJlZWMxNmJkNjljNTI4ZDkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTU2LDkgKzU2
LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJl
ZiBjb250ZXh0KQogCiBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGlu
Zm8pCiB7Ci0gICAgYXV0byBpbWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pOwot
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2VdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtp
bWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pXSB7CiAgICAgICAgIENHSW1hZ2VS
ZWxlYXNlKGltYWdlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggOGU1NzdmZmE0YTgwNDhkMTY0ZTI5ZjA2ZDc0YzQ0
Yjg5ZWM4Mzc3Zi4uZWQzMmQxOWY3NDE0MTdkNTk2YTk2MjhiY2M1NzJjNGZiNWNmODhhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTQ4
Niw4ICs0ODYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5k
Q3JlYXRlZE1lZGlhU291cmNlKElNRkFzeW5jUmVzdWx0KiBhcwogICAgIGhyID0gYXN5bmNSZXN1
bHQtPkdldFN0YXR1cygpOwogICAgIG1fbG9hZGluZ1Byb2dyZXNzID0gU1VDQ0VFREVEKGhyKTsK
IAotICAgIGF1dG8gd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOwot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3
ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgaWYg
KCF3ZWFrUHRyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3ZWFrUHRyLT5vbkNyZWF0
ZWRNZWRpYVNvdXJjZSgpOwpAQCAtNTE2LDggKzUxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRHZXRFdmVudChJTUZBc3luY1Jlc3VsdCogYXN5bmNSZXN1
bHQpCiAKICAgICBzd2l0Y2ggKG1lZGlhRXZlbnRUeXBlKSB7CiAgICAgY2FzZSBNRVNlc3Npb25U
b3BvbG9neVNldDogewotICAgICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNy
ZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0cl0geworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVX
ZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1B0cikKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5vblRvcG9sb2d5U2V0KCk7CkBAIC01MjYsOCAr
NTI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmVuZEdldEV2
ZW50KElNRkFzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCkKICAgICB9CiAKICAgICBjYXNlIE1FQnVm
ZmVyaW5nU3RhcnRlZDogewotICAgICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0cl0gewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVh
dGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1B0cikKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5vbkJ1ZmZlcmluZ1N0YXJ0ZWQoKTsKQEAg
LTUzNiw4ICs1MzMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
ZW5kR2V0RXZlbnQoSU1GQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0KQogICAgIH0KIAogICAgIGNh
c2UgTUVCdWZmZXJpbmdTdG9wcGVkOiB7Ci0gICAgICAgIGF1dG8gd2Vha1B0ciA9IG1fd2Vha1B0
ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFr
UHRyXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtX3dlYWtQdHJGYWN0
b3J5LmNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHdlYWtQdHItPm9uQnVmZmVyaW5nU3RvcHBl
ZCgpOwpAQCAtNTQ2LDggKzU0Miw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjplbmRHZXRFdmVudChJTUZBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQpCiAgICAgfQog
CiAgICAgY2FzZSBNRVNlc3Npb25FbmRlZDogewotICAgICAgICBhdXRvIHdlYWtQdHIgPSBtX3dl
YWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1B0cl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRy
RmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vha1B0cikKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5vblNlc3Npb25FbmRl
ZCgpOwpAQCAtMTY3NSw4ICsxNjcwLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpwcm9jZXNzSW5wdXROb3QKICAgICAK
ICAgICAvLyBJbnZhbGlkYXRlIHRoZSB2aWRlbyBhcmVhCiAgICAgaWYgKG1fbWVkaWFQbGF5ZXIp
IHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV9tZWRpYVBsYXllci0+bV93ZWFrUHRyRmFjdG9y
eS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1fbWVkaWFQbGF5ZXItPm1fd2Vh
a1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICBpZiAod2Vha1B0cikK
ICAgICAgICAgICAgICAgICB3ZWFrUHRyLT5pbnZhbGlkYXRlRnJhbWVWaWV3KCk7CiAgICAgICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKaW5kZXggZGY2NjA3MDI1NDVkOWU3YmQ5MjhjNjVmZTYw
M2Y5OTU1N2ZmZGYzZi4uNDJkMjQ2NmMyYmY2MzFmMGVmZmFjY2Y5NGY0MDAyODEwYTdkMDI2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Qcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVByaXZhdGUuY3BwCkBAIC0yOTksMTEgKzI5OSwxMCBAQCB2b2lkIE1lZGlhU3Ry
ZWFtUHJpdmF0ZTo6dHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCiAgICAgfSk7
CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzY2hlZHVsZURlZmVycmVkVGFzayhzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c2No
ZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAg
IEFTU0VSVChmdW5jdGlvbik7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgZnVuY3Rpb25dIHsKKyAgICBjYWxsT25N
YWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKSwgZnVuY3Rpb24gPSBXVEZNb3Zl
KGZ1bmN0aW9uKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUHJpdmF0ZS5oCmluZGV4IDZiYWU3M2NlOTJiMWE2MDU5ZjJmYzdhZWQxZDdiMmI5
OTg5YmY4OWIuLjhjZjYwNGM5MDY1NmMwZmUwYWJiMDdiOTE1NGFkMTFhMWQ5YzYyZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtUHJpdmF0ZS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhcmFj
dGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVmlkZW9UcmFjaygpOwog
Ci0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwor
ICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbiYmKTsKIAog
ICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV93ZWFrUHRyRmFjdG9yeTsK
ICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291
cmNlLmgKaW5kZXggZmJhNTI4MzgxOTUyYTI1MmViYjU4NDM3MDQyODQxMGY0NmJkNTUyYi4uMjFh
Y2FmMDJkNjY0OTUwNGE3MzUxMWIyMWM4OTc3Y2M2NDk5ZjQxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0
dXJlU291cmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVl
LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtODUsNyArODYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVy
ZVZpZGVvRGF0YU91dHB1dCopOwogICAgIHZvaWQgc2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0
ZShBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQqKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJl
ZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVk
VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBT
ZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KaW5kZXggYzA2MTJjNTIzOThm
MmZkNTcwNTIzOTEzNjA0Y2IxZGM5OTdjYzMxNC4uNzkxNWE4NDJlYTgzZGQzNTdkMmI0Mjg4YTU3
OWJmYzEzODBiNzZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjQwLDEy
ICsyNDAsMTAgQEAgdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0QXVkaW9TYW1wbGVCdWZm
ZXJEZWxlZ2F0ZShBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQKICAgICBbYXVkaW9PdXRwdXQgc2V0
U2FtcGxlQnVmZmVyRGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6Z2xvYmFBdWRp
b0NhcHR1cmVTZXJpYWxRdWV1ZSgpXTsKIH0KIAotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6
c2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3Zv
aWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxl
RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotCi0gICAgYXV0
byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFr
VGhpcywgZnVuY3Rpb25dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0
ZVdlYWtQdHIoKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKaW5kZXggMjQ5OWNmM2MzZmMzOGNjMmYyNDkwNzFjMWM4
NmM0MjRlNjVkMzA4MC4uZGVhN2E3YzI5NzRlM2Q4YTllMGRiODE3N2Q5NmI5ZTRlMmYxOGMwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMTYz
LDEwICsxNjMsOSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqCiBib29sIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQpCiB7CiAgICAgUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9
IHBycENsaWVudDsKLQogICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBzb3VyY2VzID0gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8ocmVxdWVzdENsaWVu
dC0+cmVxdWVzdE9yaWdpbigpKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVl
c3RDbGllbnQsIHNvdXJjZXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCByZXF1ZXN0
Q2xpZW50ID0gV1RGTW92ZShyZXF1ZXN0Q2xpZW50KSwgc291cmNlcyA9IFdURk1vdmUoc291cmNl
cyldIHsKICAgICAgICAgcmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVUcmFja1NvdXJjZUluZm9S
ZXF1ZXN0KHNvdXJjZXMpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakMubW0KaW5kZXggN2I4ZDYxY2FlMDkyOWZkYWY0NjA3MGU1YTc3NzBmMmUz
ZWU4ODE1ZC4uZWQ5MTdlODkxZWJiMjM0NWY4YzcyYzQ0ODVkOWU3ZTg5ODA0MDZmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtMjE0LDEwICsy
MTQsMTAgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGYKICAgICBtZW1zZXQobV9saXN0LmdldCgp
LCAwLCBtX2xpc3RCdWZmZXJTaXplKTsKICAgICBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzID0gbnVt
YmVyT2ZDaGFubmVsczsKIAotICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qz4gc3Ryb25nVGhpcyA9IHRoaXM7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nVGhpcywg
bnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0gewotICAgICAgICBpZiAoc3Ryb25nVGhpcy0+
bV9jbGllbnQpCi0gICAgICAgICAgICBzdHJvbmdUaGlzLT5tX2NsaWVudC0+c2V0Rm9ybWF0KG51
bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQz4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIG51bWJlck9mQ2hhbm5l
bHMsIHNhbXBsZVJhdGVdIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fY2xpZW50KQor
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQtPnNldEZvcm1hdChudW1iZXJPZkNo
YW5uZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcAppbmRleCA5MDkzNTc5NDhkNThhMTVlMDdjYTM3OTZjMzgwZTEzOGZlOGY1MzJiLi5hYWU4
MDgzOTExNWZmOWJhZmI5NDhjODI1NmYzODM0YjQ4Yjg2ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTCiAg
ICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291cmNlV2l0
aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElE
KCksIG51bGxwdHIpKTsKICAgICBzb3VyY2VzLmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dHJhY2tTb3VyY2VXaXRoVUlEKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9T
b3VyY2VQZXJzaXN0ZW50SUQoKSwgbnVsbHB0cikpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgcmVxdWVzdENsaWVudCwgc291cmNlc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHJlcXVlc3RDbGllbnQgPSBXVEZNb3ZlKHJlcXVlc3RDbGllbnQpLCBzb3VyY2VzID0gV1RG
TW92ZShzb3VyY2VzKV0gewogICAgICAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVRyYWNr
U291cmNlSW5mb1JlcXVlc3Qoc291cmNlcyk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCA1
M2ViMjVhMDRkMTE0YmIwY2M1OGRhN2ZlYjE1YmJhMWY3Yzc0NTkzLi40ODRlOTIxZWM3NTQ4YmI2
YzMzYTI2NDQ4ZTZkNzc2NzRhNTczZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xODcsMTAgKzE4Nyw4
IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotCiAgICAgLy8gRmluaXNoIHRoaXMgYXN5bmMgY2FsbCBxdWlja2x5IGFuZCByZXR1cm4uCi0g
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8QmxvYlJlc291cmNlSGFuZGxlPigqdGhpcyldKCkgbXV0
YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRvU3RhcnQoKTsKICAgICB9KTsKIH0KQEAg
LTY2NSw5ICs2NjMsOCBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5RmluaXNoKCkK
IAogICAgIC8vIFNjaGVkdWxlIHRvIG5vdGlmeSB0aGUgY2xpZW50IGZyb20gYSBzdGFuZGFsb25l
IGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNsaWVudCBtaWdodCBkaXNwb3NlIHRoZSBoYW5kbGUgaW1t
ZWRpYXRlbHkgZnJvbSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KICAgICAvLyB3aGlsZSB3ZSBzdGls
bCBoYXZlIEJsb2JSZXNvdXJjZUhhbmRsZSBjYWxscyBpbiB0aGUgc3RhY2suCi0gICAgUmVmUHRy
PEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIGRvTm90aWZ5RmluaXNoKCpwcm90ZWN0
ZWRUaGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEJsb2JS
ZXNvdXJjZUhhbmRsZT4oKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBkb05vdGlmeUZpbmlz
aChwcm90ZWN0ZWRUaGlzKTsKICAgICB9KTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCBlNDBlZDNmOGEwMDVmNmMw
MmFlMmQwMzQ2YThkMzZlNGQ4ZWIyMmQxLi43Nzk4ZjkxOWU5NGZlYmUwOWJjMGMxODRkNjdkODlj
ODdkZDc0MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmNwcApAQCAtMTY4LDI1ICsxNjgsMjEgQEAgc3RhdGljIHZvaWQgZGVjb2Rl
RXNjYXBlZChEZWNvZGVUYXNrJiB0YXNrKQogICAgIHRhc2sucmVzdWx0LmRhdGEgPSBTaGFyZWRC
dWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7CiB9CiAKLXZvaWQgZGVjb2RlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxl
dGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIGRlY29kZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2Nv
bElzRGF0YSgpKTsKIAogICAgIGF1dG8gZGVjb2RlVGFzayA9IGNyZWF0ZURlY29kZVRhc2sodXJs
LCBzY2hlZHVsZUNvbnRleHQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBhdXRv
KiBkZWNvZGVUYXNrUHRyID0gZGVjb2RlVGFzay5yZWxlYXNlKCk7Ci0gICAgZGVjb2RlUXVldWUo
KS5kaXNwYXRjaChbZGVjb2RlVGFza1B0cl0gewotICAgICAgICBhdXRvJiBkZWNvZGVUYXNrID0g
KmRlY29kZVRhc2tQdHI7Ci0KLSAgICAgICAgaWYgKGRlY29kZVRhc2suaXNCYXNlNjQpCi0gICAg
ICAgICAgICBkZWNvZGVCYXNlNjQoZGVjb2RlVGFzayk7CisgICAgZGVjb2RlUXVldWUoKS5kaXNw
YXRjaChbZGVjb2RlVGFzayA9IFdURk1vdmUoZGVjb2RlVGFzayldKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChkZWNvZGVUYXNrLT5pc0Jhc2U2NCkKKyAgICAgICAgICAgIGRlY29kZUJhc2U2NCgq
ZGVjb2RlVGFzayk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlY29kZUVzY2FwZWQoZGVj
b2RlVGFzayk7CisgICAgICAgICAgICBkZWNvZGVFc2NhcGVkKCpkZWNvZGVUYXNrKTsKIAogI2lm
IEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICAgICAgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyOjpk
aXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4oZGVjb2RlVGFza1B0cikpOworICAg
ICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OmRpc3BhdGNoKFdURk1vdmUoZGVjb2RlVGFz
aykpOwogI2Vsc2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjb2RlVGFza1B0cl0gewot
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGRlY29kZVRhc2soZGVjb2Rl
VGFza1B0cik7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY29kZVRhc2sgPSBXVEZNb3Zl
KGRlY29kZVRhc2spXSB7CiAgICAgICAgICAgICBpZiAoIWRlY29kZVRhc2stPnJlc3VsdC5kYXRh
KSB7CiAgICAgICAgICAgICAgICAgZGVjb2RlVGFzay0+Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNjQzMzM3Njc0MGRkZDU2MDAwN2VjZTQyZmNk
NzM4M2M5NmZhZmU5NC4uNGMwMTEyMTA4MTg1NDg1NzYxNTkzYTQzOTY1NmNjYWM4NzZjNWE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
aApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgU2NoZWR1bGVDb250ZXh0IHsKICNlbmRpZgogfTsK
IAotdm9pZCBkZWNvZGUoY29uc3QgVVJMJiwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiwgRGVjb2Rl
Q29tcGxldGlvbkhhbmRsZXIpOwordm9pZCBkZWNvZGUoY29uc3QgVVJMJiwgY29uc3QgU2NoZWR1
bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tCmluZGV4IGE3MzY3NWEyODcxMGQ1YTI5YWNkMzU5NThlZDBiYTFjMTEyY2Y0
ZGQuLjYxZmRmZTFhMmExNTJmNmRhMDI0ZDQ1ODhkYWI0ZTg0ODM2OTc0YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KQEAgLTkyLDEwICs5Miw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIGZv
ciAoYXV0byYgdGFzayA6IF9kYXRhVGFza3MpCiAgICAgICAgIHRhc2suZ2V0KCkuc2Vzc2lvbiA9
IG5pbDsKIAotICAgIC8vIEZJWE1FKEMrKzE0KTogV2hlbiB3ZSBjYW4gbW92ZSBSZWZQdHJzIGRp
cmVjdGx5IGludG8gYmxvY2tzLCByZXBsYWNlIHRoaXMgd2l0aCBhIFJlZlB0ciYmOgotICAgIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gX2xvYWRlci5sZWFr
UmVmKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbbG9hZGVyXSB7Ci0gICAgICAgIGxvYWRlci0+
ZGVyZWYoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtsb2FkZXIgPSBXVEZNb3ZlKF9sb2FkZXIp
XSB7CiAgICAgfSk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNDY2LDM0ICs0NjMsMzEg
QEAgLSAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCiAtICh2b2lkKWNhbmNlbAogewogICAgIHNl
bGYuc3RhdGUgPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVDYW5jZWxpbmc7Ci0gICAgUmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKLSAgICBj
YWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSB7Ci0gICAgICAgIFtzdHJvbmdTZWxmIF9jYW5j
ZWxdOwotICAgICAgICBbc3Ryb25nU2VsZiBfZmluaXNoXTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4o
c2VsZildIHsKKyAgICAgICAgW3Byb3RlY3RlZFNlbGYgX2NhbmNlbF07CisgICAgICAgIFtwcm90
ZWN0ZWRTZWxmIF9maW5pc2hdOwogICAgIH0pOwogfQogCiAtICh2b2lkKXN1c3BlbmQKIHsKLSAg
ICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBzdHJvbmdTZWxmIHsgc2Vs
ZiB9OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGZdIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzaz4oc2VsZildIHsKICAgICAgICAgLy8gTlNVUkxTZXNzaW9uRGF0YVRhc2tzIG11c3Qgc3Rh
cnQgb3ZlciBhZnRlciBzdXNwZW5kaW5nLCBzbyB3aGlsZQogICAgICAgICAvLyB3ZSBjb3VsZCBk
ZWZlciBsb2FkaW5nIGF0IHRoaXMgcG9pbnQsIGluc3RlYWQgY2FuY2VsIGFuZCByZXN0YXJ0CiAg
ICAgICAgIC8vIHVwb24gcmVzdW1lIHNvIGFzIHRvIGFkaGVyZSB0byBOU1VSTFNlc3Npb25EYXRh
VGFzayBzZW1hbnRpY3MuCi0gICAgICAgIFtzdHJvbmdTZWxmIF9jYW5jZWxdOwotICAgICAgICBz
dHJvbmdTZWxmLmdldCgpLnN0YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0YXRlU3VzcGVuZGVkOwor
ICAgICAgICBbcHJvdGVjdGVkU2VsZiBfY2FuY2VsXTsKKyAgICAgICAgcHJvdGVjdGVkU2VsZi5n
ZXQoKS5zdGF0ZSA9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVN1c3BlbmRlZDsKICAgICB9KTsKIH0K
IAogLSAodm9pZClyZXN1bWUKIHsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrPiBzdHJvbmdTZWxmIHsgc2VsZiB9OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9u
Z1NlbGZdIHsKLSAgICAgICAgaWYgKHN0cm9uZ1NlbGYuZ2V0KCkuc3RhdGUgIT0gTlNVUkxTZXNz
aW9uVGFza1N0YXRlU3VzcGVuZGVkKQorICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNl
bGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPihzZWxmKV0geworICAg
ICAgICBpZiAocHJvdGVjdGVkU2VsZi5nZXQoKS5zdGF0ZSAhPSBOU1VSTFNlc3Npb25UYXNrU3Rh
dGVTdXNwZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgW3N0cm9uZ1NlbGYg
X3Jlc3RhcnRdOwotICAgICAgICBzdHJvbmdTZWxmLmdldCgpLnN0YXRlID0gTlNVUkxTZXNzaW9u
VGFza1N0YXRlUnVubmluZzsKKyAgICAgICAgW3Byb3RlY3RlZFNlbGYgX3Jlc3RhcnRdOworICAg
ICAgICBwcm90ZWN0ZWRTZWxmLmdldCgpLnN0YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVu
bmluZzsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBjNmM4Nzk3YmJjYTAyYzk1OWJkNTMz
ZTY0OGVjZTRkNzFmNGE0NzgwLi4yZmVmMDA1MWQ3Njg5OTViYzYwMjZmZTBmMzE0MzM4YmVjNWFm
ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmNwcApAQCAtNDAyLDExICs0MDIsOSBAQCB2b2lkIEN1cmxEb3dubG9hZDo6
ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKICAgICAgICAgQ1VSTGNvZGUg
ZXJyID0gY3VybF9lYXN5X2dldGluZm8obV9jdXJsSGFuZGxlLCBDVVJMSU5GT19SRVNQT05TRV9D
T0RFLCAmaHR0cENvZGUpOwogCiAgICAgICAgIGlmIChodHRwQ29kZSA+PSAyMDAgJiYgaHR0cENv
ZGUgPCAzMDApIHsKLSAgICAgICAgICAgIFVSTENhcHR1cmUgY2FwdHVyZWRVcmwoZ2V0Q3VybEVm
ZmVjdGl2ZVVSTChtX2N1cmxIYW5kbGUpKTsKLSAgICAgICAgICAgIFJlZlB0cjxDdXJsRG93bmxv
YWQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIGNhcHR1cmVkVXJsLCBwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgICAgICAgICAgbV9y
ZXNwb25zZS5zZXRVUkwoY2FwdHVyZWRVcmwudXJsKCkpOworICAgICAgICAgICAgVVJMIHVybCA9
IGdldEN1cmxFZmZlY3RpdmVVUkwobV9jdXJsSGFuZGxlKTsKKyAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcHJvdGVjdGVkVGhpcyA9
IFJlZjxDdXJsRG93bmxvYWQ+KCp0aGlzKV0geworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uu
c2V0VVJMKHVybCk7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRy
YWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNl
dFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpKTsKIApAQCAtNDE0
LDE0ICs0MTIsMTAgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3Qg
U3RyaW5nJiBoZWFkZXIpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
Ci0gICAgICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRIZWFkZXIoaGVhZGVyKTsKLQotICAgICAg
ICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCi0gICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhcHR1cmVkSGVhZGVyLCBwcm90ZWN0ZWRUaGlzXSB7Ci0g
ICAgICAgICAgICBpbnQgc3BsaXRQb3MgPSBjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5maW5kKCI6
Iik7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGhlYWRlciA9IGhlYWRlci5pc29s
YXRlZENvcHkoKSwgcHJvdGVjdGVkVGhpcyA9IFJlZjxDdXJsRG93bmxvYWQ+KCp0aGlzKV0gewor
ICAgICAgICAgICAgaW50IHNwbGl0UG9zID0gaGVhZGVyLnN0cmluZygpLmZpbmQoIjoiKTsKICAg
ICAgICAgICAgIGlmIChzcGxpdFBvcyAhPSAtMSkKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBIZWFkZXJGaWVsZChjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5sZWZ0KHNwbGl0UG9z
KSwgY2FwdHVyZWRIZWFkZXIuc3RyaW5nKCkuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3RyaXBX
aGl0ZVNwYWNlKCkpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZp
ZWxkKGhlYWRlci5zdHJpbmcoKS5sZWZ0KHNwbGl0UG9zKSwgaGVhZGVyLnN0cmluZygpLnN1YnN0
cmluZyhzcGxpdFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAgfSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBiNWNj
ZjViYTM5OGQzM2IzMzk1NGU1NDI1MWU0NGEwYTliMzU4MDJlLi41MjRmYTI2ZGZkMzc1MzhlZTFl
OGU0N2UwMjA2ZjI0ZWMyNThkMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcApAQCAtNTE0LDEwICs1MTQsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6ZGVs
ZXRlRW1wdHlEYXRhYmFzZSgpCiAgICAgICAgIHF1ZXJ5LmZpbmFsaXplKCk7CiAgICAgICAgIG1f
ZGF0YWJhc2UuY2xvc2UoKTsKICAgICAgICAgaWYgKFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCku
aXNBY3RpdmUoKSkgewotICAgICAgICAgICAgU3RyaW5nSW1wbCogZGF0YWJhc2VJZGVudGlmaWVy
Q29weSA9ICZtX2RhdGFiYXNlSWRlbnRpZmllci5pbXBsKCktPmlzb2xhdGVkQ29weSgpLmxlYWtS
ZWYoKTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RhdGFiYXNlSWRlbnRpZmllckNv
cHldIHsKLSAgICAgICAgICAgICAgICBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9y
aWdpbldpdGhJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllckNvcHkpOwotICAgICAgICAgICAg
ICAgIGRhdGFiYXNlSWRlbnRpZmllckNvcHktPmRlcmVmKCk7CisgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtkYXRhYmFzZUlkZW50aWZpZXIgPSBtX2RhdGFiYXNlSWRlbnRpZmllci5pc29s
YXRlZENvcHkoKV0geworICAgICAgICAgICAgICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCku
ZGVsZXRlT3JpZ2luV2l0aElkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGRhdGFiYXNlRmls
ZW5hbWUgPSBtX3N5bmNNYW5hZ2VyLT5mdWxsRGF0YWJhc2VGaWxlbmFtZShtX2RhdGFiYXNlSWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3Bw
CmluZGV4IDAzNmQ2YmE2OTZmMDA4OGNjZjc0ZDZhYWE1OWYzY2ExNjI5OGQzYzAuLjNlMWYxYzQw
MmFkYmJlMmZlYmE4ODU1OGNiNWYwNGNlNDgxYjUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgU3RyaW5nIFN0
b3JhZ2VTeW5jTWFuYWdlcjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZUlkZW50aWZpZXIKICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0
aCwgZGF0YWJhc2VJZGVudGlmaWVyICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAotdm9pZCBTdG9y
YWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1
bmN0aW9uKQordm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVu
Y3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFT
U0VSVChtX3RocmVhZCk7CiAKICAgICBpZiAobV90aHJlYWQpCi0gICAgICAgIG1fdGhyZWFkLT5k
aXNwYXRjaChmdW5jdGlvbik7CisgICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChXVEZNb3ZlKGZ1
bmN0aW9uKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpjbG9zZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKaW5kZXggMDI4NzcyMTA1ZjIyZGEz
Mjk1MDMwNTNkOWRiYjU0MWI5M2Y3OTM5OC4uZWRkNzE3ZGU1YmY3MjcwZDI3NzliYTBlOTI1ZGZj
NTRjNWZmOGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIu
aApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDIsNyArNDMsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxTdG9yYWdlU3luY01hbmFnZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dGgpOwogICAgIH5TdG9yYWdlU3luY01hbmFnZXIoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2goY29u
c3Qgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYpOworICAgIHZvaWQgZGlzcGF0Y2goTm9uY29weWFi
bGVGdW5jdGlvbiYmKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggOGNhOGJjZWQ4MDk4MjJmZjY2N2UzZDMx
ZWI3Mjk0NjBkZGVkZmQxNC4uNjI4NDBkMmU3NzUyNzE0MDQyZTIwNTg5OWYyZGY2OGFhY2Q2Y2Nk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNzQsMTEgKzc0
LDExIEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludCgpCiAgICAgfQogfQog
Ci12b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4mIGZ1bmN0aW9uKQordm9pZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1
bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PihmdW5jdGlvbikpOwor
ICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlvbj4o
V1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUo
KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAg
aWYgKCFtX3RocmVhZElEKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CisgICAgbV9x
dWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPihbdGhpc10g
ewogICAgICAgICBwZXJmb3JtVGVybWluYXRlKCk7CiAgICAgfSkpOwogICAgIHdhaXRGb3JUaHJl
YWRDb21wbGV0aW9uKG1fdGhyZWFkSUQpOwpAQCAtMTA4LDggKzEwOCwxMSBAQCB2b2lkIFN0b3Jh
Z2VUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpCiB7CiAg
ICAgSGFzaFNldDxTdG9yYWdlVGhyZWFkKj4mIHRocmVhZHMgPSBhY3RpdmVTdG9yYWdlVGhyZWFk
cygpOwogCi0gICAgZm9yIChIYXNoU2V0PFN0b3JhZ2VUaHJlYWQqPjo6aXRlcmF0b3IgaXQgPSB0
aHJlYWRzLmJlZ2luKCksIGVuZCA9IHRocmVhZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgKCppdCktPmRpc3BhdGNoKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KTsK
KyAgICBmb3IgKEhhc2hTZXQ8U3RvcmFnZVRocmVhZCo+OjppdGVyYXRvciBpdCA9IHRocmVhZHMu
YmVnaW4oKSwgZW5kID0gdGhyZWFkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
ICgqaXQpLT5kaXNwYXRjaChbXSgpIHsKKyAgICAgICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxs
b2NGcmVlTWVtb3J5KCk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9TdG9yYWdlVGhyZWFkLmgKaW5kZXggZGY1MmFjNjEyMWM4NDY2ZDQ4NmU0YTRkYzllZjNh
NGUyODg3M2ZlNS4uZGNlNWNjZmNkM2NhNjJiMWMwODc2ZmMzNGQ5MmRmNmYwMjBkZmY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9NZXNzYWdlUXVldWUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29s
IHN0YXJ0KCk7CiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2goY29u
c3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+Jik7CisgICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJs
ZUZ1bmN0aW9uJiYpOwogCiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5SW5BbGxUaHJlYWRzKCk7CiAKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBlcmZvcm1UZXJtaW5hdGUoKTsKIAogICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsK
LSAgICBNZXNzYWdlUXVldWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX3F1ZXVlOworICAgIE1l
c3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VU
cmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5k
ZXggOGQ4MGQ0ZGQwNjY0OWUzYzBkYjMzYzQ4MGY3Mjk1YWYyMDFjNmYzZi4uOWIzNmE3M2VmODc2
NzQwZDNkYjQzZTFhOTM4ZjlmYTliYjVmMmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
dG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwCkBAIC0yOTMsOSArMjkzLDggQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6
c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgICAgICBpZiAoZm91bmRPcmln
aW5zLmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXJDb3B5ID0gb3JpZ2luSWRlbnRpZmllci5p
c29sYXRlZENvcHkoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgb3JpZ2luSWRl
bnRpZmllckNvcHldIHsKLSAgICAgICAgICAgIGRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKG9y
aWdpbklkZW50aWZpZXJDb3B5KTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgb3Jp
Z2luSWRlbnRpZmllciA9IG9yaWdpbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAg
ICAgICAgIGRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwogICAg
ICAgICB9KTsKICAgICB9CiB9CkBAIC0zMTQsMTkgKzMxMywxNyBAQCB2b2lkIFN0b3JhZ2VUcmFj
a2VyOjpzZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29u
c3QgU3RyaQogICAgICAgICBtX29yaWdpblNldC5hZGQob3JpZ2luSWRlbnRpZmllcik7CiAgICAg
fQogCi0gICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXJDb3B5ID0gb3JpZ2luSWRlbnRpZmllci5p
c29sYXRlZENvcHkoKTsKLSAgICBTdHJpbmcgZGF0YWJhc2VGaWxlQ29weSA9IGRhdGFiYXNlRmls
ZS5pc29sYXRlZENvcHkoKTsKLSAgICBhdXRvIGZ1bmN0aW9uID0gW3RoaXMsIG9yaWdpbklkZW50
aWZpZXJDb3B5LCBkYXRhYmFzZUZpbGVDb3B5XSB7Ci0gICAgICAgIHN5bmNTZXRPcmlnaW5EZXRh
aWxzKG9yaWdpbklkZW50aWZpZXJDb3B5LCBkYXRhYmFzZUZpbGVDb3B5KTsKKyAgICBhdXRvIGZ1
bmN0aW9uID0gW3RoaXMsIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW5JZGVudGlmaWVyLmlzb2xh
dGVkQ29weSgpLCBkYXRhYmFzZUZpbGUgPSBkYXRhYmFzZUZpbGUuaXNvbGF0ZWRDb3B5KCldIHsK
KyAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VG
aWxlKTsKICAgICB9OwogCiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIEFTU0VS
VChtX3RocmVhZCk7Ci0gICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChmdW5jdGlvbik7CisgICAg
ICAgIG1fdGhyZWFkLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgd2VpcmQgcGluZy1wb25naW5nIHdhcyBkb25lIHRvIGZp
eCBhIGRlYWRsb2NrLiBXZSBzaG91bGQgZmlndXJlIG91dCBhIGNsZWFuZXIgd2F5IHRvIGF2b2lk
IGl0IGluc3RlYWQuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGZ1bmN0aW9uXSB7
Ci0gICAgICAgICAgICBtX3RocmVhZC0+ZGlzcGF0Y2goZnVuY3Rpb24pOworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgbV90aHJlYWQtPmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsK
ICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQppbmRleCBkZWI0ZTQxMmYyYzg3NzVmMjNk
MWY2ZTJjNzNlYmZlODY0MmMyMWFhLi5hM2VjOTljZTAxZGRlOGNhZDllMDMzMTM1YTUyNTI0YjAy
ODUxNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNl
TWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5tbQpAQCAtMTAzLDIwICsxMDMsMTkgQEAgY2xhc3MgRGlkTW9kaWZ5
T3JpZ2luRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJl
YWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiAgICAgewotICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERp
ZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVkQ29weSgpKTsKLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0geworICAgICAgICBhdXRvIGNvbnRleHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luLT5pc29s
YXRlZENvcHkoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3Zl
KGNvbnRleHQpXSB7CiAgICAgICAgICAgICBjb250ZXh0LT5jbGllbnQtPmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdpbi5nZXQoKSk7Ci0gICAgICAgICAgICBkZWxldGUgY29u
dGV4dDsKICAgICAgICAgfSk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIERpZE1vZGlmeU9yaWdp
bkRhdGEoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbikKICAgICAgICAgOiBjbGllbnQoY2xpZW50KQogICAgICAgICAsIG9y
aWdpbihvcmlnaW4pCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICBXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQqIGNsaWVudDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFj
a2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tl
ckNsaWVudC5tbQppbmRleCA3ZTVkOTkxODE5MzcwMzNmNThkNDkyMzY4ZTRkOWRlNmExZTYyMTc1
Li5kNjgwYmM0NTdkMWJjOWE4NjM0M2U0NTc1OWM3M2Q4MzgyYmY5YWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0KQEAg
LTU4LDE1ICs1OCwxNSBAQCB2b2lkIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERp
ZE1vZGlmeU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPgogCiB2b2lkIFdlYlN0b3Jh
Z2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlm
aWVyKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJh
c2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwogCiAgICAgaWYgKGlzTWFpblRocmVhZCgp
KSB7Ci0gICAgICAgIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbik7CisgICAgICAgIGRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdURk1vdmUob3JpZ2luKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtvcmlnaW5dIHsKLSAgICAgICAgV2ViU3Rv
cmFnZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50KCktPmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
b3JpZ2luID0gV1RGTW92ZShvcmlnaW4pXSgpIG11dGFibGUgeworICAgICAgICBXZWJTdG9yYWdl
VHJhY2tlckNsaWVudDo6c2hhcmVkV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQoKS0+ZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW4oV1RGTW92ZShvcmlnaW4pKTsKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280021</attachid>
            <date>2016-05-27 22:12:10 -0700</date>
            <delta_ts>2016-05-27 22:50:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158166-20160527221321.patch</filename>
            <type>text/plain</type>
            <size>110651</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhNzE1ZTQ5MjgxOTc0M2E1ZDRlMTQ3
NzBiOTI4MTRjNTc1YjJmMDYuLjUwOWEzZWEyYzk3MjJjMmI3NThhYmI1YmEwNGE1NWE1YTI5MDlm
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5
IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVp
ZHNvbi4KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1
cmVkIGxhbWJkYSB2YXJpYWJsZXMuIFRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXMgdXN1YWxseSBj
YWxsZWQgY3Jvc3MtdGhyZWFkIHdpdGggYSBsYW1iZGEgYW5kIGNvcHlpbmcKKyAgICAgICAgdGhl
IGxhbWJkYSAoYW5kIGl0cyBjYXB0dXJlZCB2YXJpYWJsZXMpIGNhbiBsZWFkIHRvIHRocmVhZC1z
YWZldHkKKyAgICAgICAgaXNzdWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBjYWxs
T25NYWluVGhyZWFkKCkgdG8gdGFrZSBhIE5vbmNvcHlhYmxlRnVuY3Rpb24mJgorICAgICAgICBp
biBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHN0ZDo6ZnVuY3Rpb24uIFRoZSBjYWxsIHNpdGVzIG9m
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvIHVz
ZSBDKysxNCdzIGxhbWJkYQorICAgICAgICBjYXB0dXJlIHdpdGggaW5pdGlhbGl6ZXIuCisKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaDoKKyAgICAgICAgKiB3dGYvTm9uY29weWFibGVGdW5jdGlvbi5o
OgorICAgICAgICAtIE1vdmVkIE5vbmNvcHlhYmxlRnVuY3Rpb24gZnJvbSBGdW5jdGlvbkRpc3Bh
dGNoZXIuaCB0bworICAgICAgICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24uaC4KKyAgICAgICAgLSBB
ZGQgYSBuZXcgb3BlcmF0b3I9KG51bGxwdHJfdCkgb3BlcmF0b3IgdG8gTm9uY29weWFibGVGdW5j
dGlvbiB0bworICAgICAgICAgIG1hdGNoIHN0ZDo6ZnVuY3Rpb24sIGFzIG9uZSBvZiB0aGUgY2Fs
bCBzaXRlcyBuZWVkZWQgaXQuCisKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAg
ICAgIChXVEY6OmZ1bmN0aW9uUXVldWUpOgorICAgICAgICAoV1RGOjpkaXNwYXRjaEZ1bmN0aW9u
c0Zyb21NYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6Y2FsbE9uTWFpblRocmVhZCk6CisgICAg
ICAgICogd3RmL01haW5UaHJlYWQuaDoKKwogMjAxNi0wNS0yNyAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggZm9y
IEpTQ09ubHkgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MTM3OTJmODE4YzhiM2EzZjk5NGU3YTllMTQw
YTM4YzA2Zjk1ZTcxLi42Y2JiMTIxMjQyOTA4ZTVkNjVkZDE0OTg2N2FiZWE1MzQ2YmVmYjZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQzIEBACisyMDE2LTA1LTI3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIHNob3VsZCBub3Qg
Y29weSBjYXB0dXJlZCBsYW1iZGEgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFk
eSBFaWRzb24uCisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIHNob3VsZCBub3QgY29weSBj
YXB0dXJlZCBsYW1iZGEgdmFyaWFibGVzLiBUaGlzIAorICAgICAgICBmdW5jdGlvbiBpcyB1c3Vh
bGx5IGNhbGxlZCBjcm9zcy10aHJlYWQgd2l0aCBhIGxhbWJkYSBhbmQgY29weWluZworICAgICAg
ICB0aGUgbGFtYmRhIChhbmQgaXRzIGNhcHR1cmVkIHZhcmlhYmxlcykgY2FuIGxlYWQgdG8gdGhy
ZWFkLXNhZmV0eQorICAgICAgICBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVz
IGNhbGxPbk1haW5UaHJlYWQoKSB0byB0YWtlIGEgTm9uY29weWFibGVGdW5jdGlvbiYmCisgICAg
ICAgIGluIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgc3RkOjpmdW5jdGlvbi4gVGhlIGNhbGwgc2l0
ZXMgb2YKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgpIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQg
dG8gdXNlIEMrKzE0J3MgbGFtYmRhCisgICAgICAgIGNhcHR1cmUgd2l0aCBpbml0aWFsaXplci4K
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVQZXJtaXNzaW9uQ2hlY2sp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVUcmFj
a1NvdXJjZUluZm9SZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OnJ1blRhc2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3Q6OmNvbnN0cmFpbnRzVmFsaWRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3Q6OnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4
dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwb3N0VGFzayk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6
cmVxdWVzdFNjcmlwdCk6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FsbE9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY0ZpbGVTdHJlYW06On5Bc3luY0ZpbGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNGaWxlU3RyZWFtOjpwZXJmb3JtKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpibG9iU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okljb25EYXRhYmFzZTo6ZGlzcGF0Y2hEaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTE9uTWFpblRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRpc3BhdGNoRGlkSW1wb3J0
SWNvbkRhdGFGb3JQYWdlVVJMT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL1Jlc291cmNl
VXNhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVhZDo6
bm90aWZ5T2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6
OnRocmVhZEJvZHkpOgorICAgICAgICAqIHBhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RocmVhZDo6ZGlzcGF0Y2hCYXJyaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RocmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFkKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlSU9TOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJ
T1M6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWM6OnJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxlckltcHNPblRoZU1haW5U
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc10pOgorICAg
ICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
ICgtW1dlYkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDTGlzdGVuZXIgb2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1t
OgorICAgICAgICAoLVtXZWJBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVySGVscGVyIG9ic2Vy
dmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIpOgorICAgICAgICAoLVtXZWJDb3JlQVZG
TW92aWVPYnNlcnZlciBsZWdpYmxlT3V0cHV0OmRpZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdzOm5h
dGl2ZVNhbXBsZUJ1ZmZlcnM6Zm9ySXRlbVRpbWU6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZN
b3ZpZU9ic2VydmVyIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAgICAgICAgKC1bV2Vi
Q29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVyOnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXF1ZXN0ZWRSZXNvdXJjZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVn
YXRlIHJlc291cmNlTG9hZGVyOnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSByZXNvdXJj
ZUxvYWRlcjpkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDTVRpbWViYXNlRWZmZWN0aXZlUmF0ZUNoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpwYXVzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzY2hlZHVsZURlZmVycmVkVGFzayk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldDpdKToKKyAgICAg
ICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQ
YXJzZVN0cmVhbURhdGFBc0Fzc2V0OndpdGhEaXNjb250aW51aXR5Ol0pOgorICAgICAgICAoLVtX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZEZhaWxUb1Bh
cnNlU3RyZWFtRGF0YVdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFy
c2VyTGlzdGVuZXIgc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlTWVkaWFEYXRhOmZvclRyYWNr
SUQ6bWVkaWFUeXBlOmZsYWdzOl0pOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJM
aXN0ZW5lciBzdHJlYW1EYXRhUGFyc2VyOmRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEOm1l
ZGlhVHlwZTpdKToKKyAgICAgICAgKC1bV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgc3Ry
ZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRh
dGE6Zm9yVHJhY2tJRDpdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3Rl
bmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6Cisg
ICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciBsYXllckZhaWxlZFRvRGVj
b2RlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5SZWxlYXNlQ2FsbGJhY2spOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5kQ3JlYXRlZE1lZGlhU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6ZW5kR2V0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6cHJvY2Vzc0lucHV0Tm90aWZ5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpzY2hlZHVsZURlZmVycmVkVGFz
ayk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291
cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnNjaGVkdWxl
RGVmZXJyZWRUYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjOjpnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnBy
ZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3Vy
Y2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6
bm90aWZ5RmluaXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNv
cmVOU1VSTFNlc3Npb24gZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgY2FuY2VsXSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
ayBzdXNwZW5kXSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXN1
bWVdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKTogRGVsZXRlZC4KKwog
MjAxNi0wNS0yNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChyMTkwNTc0KTogU3dpcGUgc25hcHNob3RzIGFyZSBhbHdheXMgYmxh
Y2sgb24gaVBob25lIDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDYzMzYyNGVhZmNlMWI1ZjYxNDk1MjQzYTk0ZGMz
OTY1ZDlhNjQzYS4uODMwZGY3ZDkyNWY1ZjZlMTY1YjQ4OTI2ZGE1MDE0NzU3NTdjOWM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxNi0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkg
Y2FwdHVyZWQgbGFtYmRhIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlk
c29uLgorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNvcHkgY2FwdHVy
ZWQgbGFtYmRhIHZhcmlhYmxlcy4gVGhpcyAKKyAgICAgICAgZnVuY3Rpb24gaXMgdXN1YWxseSBj
YWxsZWQgY3Jvc3MtdGhyZWFkIHdpdGggYSBsYW1iZGEgYW5kIGNvcHlpbmcKKyAgICAgICAgdGhl
IGxhbWJkYSAoYW5kIGl0cyBjYXB0dXJlZCB2YXJpYWJsZXMpIGNhbiBsZWFkIHRvIHRocmVhZC1z
YWZldHkKKyAgICAgICAgaXNzdWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBjYWxs
T25NYWluVGhyZWFkKCkgdG8gdGFrZSBhIE5vbmNvcHlhYmxlRnVuY3Rpb24mJgorICAgICAgICBp
biBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHN0ZDo6ZnVuY3Rpb24uIFRoZSBjYWxsIHNpdGVzIG9m
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvIHVz
ZSBDKysxNCdzIGxhbWJkYQorICAgICAgICBjYXB0dXJlIHdpdGggaW5pdGlhbGl6ZXIuCisKKyAg
ICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UpOgorICAgICAgICAqIFN0b3JhZ2Uv
U3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFu
YWdlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmg6
CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJl
YWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpyZWxlYXNl
RmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMpOgorICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5EZXRh
aWxzKToKKwogMjAxNi0wNS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBj
ZDE4OTM1YWY0NzcyOGY1OWM1YWVjOWU1ZGE0ZmM4MTE0YzFjNjkyLi43NWVhYzkxYTU2MTVhMjg4
ZGFjMjNiYTJlMDg2MjY4ZDA5MTQxYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTYtMDUtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJkYSB2YXJp
YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
ODE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJsZXMu
IFRoaXMgCisgICAgICAgIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2FsbGVkIGNyb3NzLXRocmVhZCB3
aXRoIGEgbGFtYmRhIGFuZCBjb3B5aW5nCisgICAgICAgIHRoZSBsYW1iZGEgKGFuZCBpdHMgY2Fw
dHVyZWQgdmFyaWFibGVzKSBjYW4gbGVhZCB0byB0aHJlYWQtc2FmZXR5CisgICAgICAgIGlzc3Vl
cy4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FsbE9uTWFpblRocmVhZCgpIHRvIHRh
a2UgYSBOb25jb3B5YWJsZUZ1bmN0aW9uJiYKKyAgICAgICAgaW4gcGFyYW1ldGVyIGluc3RlYWQg
b2YgYSBzdGQ6OmZ1bmN0aW9uLiBUaGUgY2FsbCBzaXRlcyBvZgorICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKCkgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0byB1c2UgQysrMTQncyBsYW1iZGEKKyAg
ICAgICAgY2FwdHVyZSB3aXRoIGluaXRpYWxpemVyLgorCisgICAgICAgICogU3RvcmFnZS9XZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQubW06CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpk
aXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpEaWRN
b2RpZnlPcmlnaW5EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VU
cmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKToKKwogMjAxNi0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgcXVlcmllcyBhbmQgcGxhdGZvcm0gc2NyZWVuIG1v
ZGVybml6YXRpb24gYW5kIHN0cmVhbWxpbmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOGRkYmRhM2Q2NzJlZjc0YWQyZTk2MTEzYjRjZGRmOWRkMDBmOWI5
ZS4uYjFmYmExN2Q4MDNkOGRjMDVkZDlmNWQ0YmE5Yzk5MDYxZDczMTA3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTQsNiArMTE0LDcgQEAKIAkJN0Uy
OUMzM0UxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1RkZENzlCMDA1MTZE
NjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgxNUIwOTJGRDAwMUZG
MEI4IC8qIEJhc2U2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLzsgfTsKIAkJ
ODEzNDAxMzkxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5oICovOyB9OworCQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogTm9uY29weWFibGVG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCAqLzsgfTsK
IAkJODNGQkE5MzIxOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQkE5MzExOURGNDU5NzAwRjMwQURC
IC8qIFR5cGVDYXN0cy5oICovOyB9OwogCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVm
Q291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgfTsKIAkJOTM5MzRC
RDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8q
IFN0cmluZ1ZpZXdPYmpDLm1tICovOyB9OwpAQCAtNDM3LDYgKzQzOCw3IEBACiAJCTdFMjlDMzNE
MTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPYmpjUnVudGltZUV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgxMzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZTY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBOb25jb3B5YWJsZUZ1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmNvcHlhYmxlRnVuY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGQkE5MzExOURGNDU5NzAwRjMw
QURCIC8qIFR5cGVDYXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBl
Q2FzdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZGNDZGNUYxQTI4NDBFRTAw
Q0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVmQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJEMjE4QTFF
OEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBTdHJpbmdWaWV3T2JqQy5tbTsgcGF0aCA9IG1hYy9TdHJpbmdWaWV3
T2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2OSw2ICs4NzEsNyBAQAog
CQkJCTFBM0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAogCQkJ
CTBGMEQ4NUIzMTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLywKIAkJCQlBOEE0NzJEMDE1
MUE4MjVCMDA0MTIzRkYgLyogTm9uY29weWFibGUuaCAqLywKKwkJCQk4M0YyQkFERTFDRjk1MjRF
MDAzRTk5QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oICovLAogCQkJCUE4QTQ3MkQ1MTUxQTgy
NUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCAqLywKIAkJCQlBOEE0NzJENjE1MUE4MjVC
MDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5oICovLAogCQkJCTdFMjlDMzNEMTVGRkQ3OUIwMDUx
NkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovLApAQCAtMTIzMSw2ICsxMjM0LDcgQEAKIAkJ
CQlBOEE0NzNEOTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODNGMkJBREYxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODRENDM2MUMwMDBENDAwMDgxRDY2MyAvKiBJbmRl
eFNwYXJzZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczREMxNTFBODI1QjAwNDEyM0ZG
IC8qIElubGluZUFTTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwREEwODQxNzk5RjA0RDAwNTI5
QTlCIC8qIEluc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oCmluZGV4IGFjMGUwMWZhZDI5MjkzZGUzMmJlYzUwOGQxZDNhZWQzNTE4YzRiYjQuLmMz
YTYwZjA4YzUwNTI4ZmRlZDY1NjEyMjcxNjc4ZmY3NDQzNzJkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uRGlzcGF0Y2hlci5oCkBAIC0yNyw2NiArMjcsMTEgQEAKICNkZWZpbmUgRnVuY3Rpb25EaXNw
YXRjaGVyX2gKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKLS8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gaXRzIG93biBoZWFkZXIg
KGUuZy4gRnVuY3Rpb25hbC5oKS4KLS8vIEZJWE1FOiBXZSBjb3VsZCBtYWtlIHRoaXMgdGVtcGxh
dGVkIHRvIHN1cHBvcnQgb3RoZXIgbGFtYmRhcyB0aGFuIHZvaWQoKSBhbmQgbWFrZSB0aGlzIG1v
cmUgcmV1c2FibGUuCi1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBO
b25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZh
bHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KLSAgICBOb25jb3B5
YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICA6IG1fY2FsbGFi
bGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+
KFdURk1vdmUoY2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigp
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxhYmxlV3JhcHBlcikKLSAgICAgICAg
ICAgIG1fY2FsbGFibGVXcmFwcGVyLT5jYWxsKCk7Ci0gICAgfQotCi0gICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46
OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlwZSYm
IGNhbGxhYmxlKQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3ZlKGNhbGxhYmxlKSk7
Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgQ2Fs
bGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAg
IHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQotCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKCkgPSAwOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDYWxsYWJsZVR5cGU+Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIGZpbmFsIDog
cHVibGljIENhbGxhYmxlV3JhcHBlckJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGlj
aXQgQ2FsbGFibGVXcmFwcGVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICAgICAg
OiBtX2NhbGxhYmxlKFdURk1vdmUoY2FsbGFibGUpKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICBDYWxsYWJsZVdyYXBwZXIoY29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7
Ci0gICAgICAgIENhbGxhYmxlV3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3JhcHBl
ciYpID0gZGVsZXRlOwotCi0gICAgICAgIHZvaWQgY2FsbCgpIGZpbmFsIHsgbV9jYWxsYWJsZSgp
OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsKLSAg
ICB9OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2FsbGFi
bGVXcmFwcGVyOwotfTsKLQogLy8gRnVuY3Rpb25EaXNwYXRjaGVyIGlzIGFuIGFic3RyYWN0IHJl
cHJlc2VudGF0aW9uIG9mIHNvbWV0aGluZyB0aGF0IGZ1bmN0aW9ucyBjYW4gYmUKIC8vIGRpc3Bh
dGNoZWQgdG8uIFRoaXMgY2FuIGZvciBleGFtcGxlIGJlIGEgcnVuIGxvb3Agb3IgYSB3b3JrIHF1
ZXVlLgogCkBAIC0xMDMsNiArNDgsNSBAQCBwcm90ZWN0ZWQ6CiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7Ci11c2luZyBXVEY6Ok5vbmNvcHlhYmxl
RnVuY3Rpb247CiAKICNlbmRpZiAvLyBGdW5jdGlvbkRpc3BhdGNoZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmNwcAppbmRleCA0NjU1NWQ1NWYyYTliMDQ4NmYxYjMyOWZlOWViNDJiZTE5MWY0N2I3Li5kM2Yw
MjVlZjJjYzk2NjE4Njc2MmVjNTYxODNlN2RlMjcxOGE3ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNw
cApAQCAtNDcsOSArNDcsOSBAQCBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRl
bnRpZmllcjsKIAogc3RhdGljIFN0YXRpY0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRl
eDsKIAotc3RhdGljIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVl
KCkKK3N0YXRpYyBEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPiYgZnVuY3Rpb25RdWV1ZSgpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+
PiBmdW5jdGlvblF1ZXVlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEZXF1ZTxOb25jb3B5
YWJsZUZ1bmN0aW9uPj4gZnVuY3Rpb25RdWV1ZTsKICAgICByZXR1cm4gZnVuY3Rpb25RdWV1ZTsK
IH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRo
cmVhZCgpCiAKICAgICBhdXRvIHN0YXJ0VGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6
Om5vdygpOwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uIGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAg
ewpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVh
ZCgpCiAgICAgfQogfQogCi12b2lkIGNhbGxPbk1haW5UaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBmdW5jdGlvbikKK3ZvaWQgY2FsbE9uTWFpblRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9u
JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmlu
ZGV4IDIwY2YxY2I4NzBlZDYyYWYzYmVkYjc3OTFkYmIxMWE5ODc0YTAwNzUuLjlmNTg1NmQwY2Fj
NTNiNDUyMDcxYjJmNjhiM2VkZThmMzMxODBhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01haW5UaHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDYg
KzMyLDcgQEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
QEAgLTQwLDcgKzQxLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBUaHJlYWRJZGVudGlmaWVyOwogLy8g
TXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
YWxsT25NYWluVGhyZWFkKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgY2FsbE9uTWFpblRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRP
ckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQodm9pZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL05v
bmNvcHlhYmxlRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTE4NjBmYTNlNjgzYWYzMzMwYmUzNGE2
YmQ5YzEwZWEzZmJiZmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIEZJWE1FOiBX
ZSBjb3VsZCBtYWtlIHRoaXMgdGVtcGxhdGVkIHRvIHN1cHBvcnQgb3RoZXIgbGFtYmRhcyB0aGFu
IHZvaWQoKSBhbmQgbWFrZSB0aGlzIG1vcmUgcmV1c2FibGUuCitjbGFzcyBOb25jb3B5YWJsZUZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0Owor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZh
bHVlPjo6dHlwZT4KKyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxh
YmxlKQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFi
bGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2Nh
bGxhYmxlV3JhcHBlcikKKyAgICAgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyLT5jYWxsKCk7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9j
YWxsYWJsZVdyYXBwZXI7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwg
Y2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8
Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgTm9uY29weWFibGVGdW5jdGlvbiYg
b3BlcmF0b3I9KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQorICAgIHsKKyAgICAgICAgbV9jYWxs
YWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5
cGU+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisK
KyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpCisgICAg
eworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyQmFzZSB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAg
dmlydHVhbCB+Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYWxsKCkgPSAwOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5
cGU+CisgICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIGZpbmFsIDogcHVibGljIENhbGxhYmxlV3Jh
cHBlckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FsbGFibGVXcmFwcGVy
KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICAgICAgOiBtX2NhbGxhYmxlKFdURk1v
dmUoY2FsbGFibGUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDYWxsYWJsZVdy
YXBwZXIoY29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisgICAgICAgIENhbGxhYmxl
V3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOworCisg
ICAgICAgIHZvaWQgY2FsbCgpIGZpbmFsIHsgbV9jYWxsYWJsZSgpOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsKKyAgICB9OworCisgICAgc3RkOjp1
bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2FsbGFibGVXcmFwcGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Tm9uY29weWFibGVGdW5jdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cAppbmRleCA0ODUyN2I5YjhlNTc3NmU3MTdlYzQ4YzEyY2U1OGMxM2ZhM2I4NzBjLi5jZDRkMzcy
NjU0MGQ0NjdjMzJkYjFlNjkwMmYxZGUwMGI1NzIzYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05NzksNyArOTc5
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICAgICAgLy8gSWYgdGhlIElEQlZhbHVl
IGRvZXNuJ3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21ldGhpbmcgd2VudCB3cm9uZyB3cml0aW5n
IHRoZSBibG9icyB0byBkaXNrLgogICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIGNhbm5vdCBz
dWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdlIGNhbGxiYWNrIHdpdGggYW4gZXJy
b3IuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVk
T3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUg
c3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgcHJvdGVjdGVkT3Bl
cmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRpb24pLCByZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCldKCkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkT3BlcmF0aW9uID0gV1RGTW92ZShwcm90ZWN0
ZWRPcGVyYXRpb24pLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgewogICAgICAgICAgICAg
cHJvdGVjdGVkT3BlcmF0aW9uLT5jb21wbGV0ZWQocmVzdWx0KTsKICAgICAgICAgfSk7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlc1JlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXNSZXF1ZXN0LmNwcAppbmRleCAxODAyY2M1YjllNzQ1NWY0YWZiZDg0ODIxOWEz
ZGEyMjk4Y2IwNzI4Li4yMjg1NzBiMGRkOWMyODdiNTk0Yjg3M2Y5MzVkNmJmMjNjNDNjNTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
c1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzUmVxdWVzdC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBNZWRpYURldmljZXNS
ZXF1ZXN0OjpkaWRDb21wbGV0ZVBlcm1pc3Npb25DaGVjayhjb25zdCBTdHJpbmcmIHNhbHQsIGJv
b2wgY2EKICAgICBtX2lkSGFzaFNhbHQgPSBzYWx0OwogICAgIG1faGF2ZVBlcnNpc3RlbnRQZXJt
aXNzaW9uID0gY2FuQWNjZXNzOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGVybWlz
c2lvbkNoZWNrUHJvdGVjdG9yXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGVybWlz
c2lvbkNoZWNrUHJvdGVjdG9yID0gV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tQcm90ZWN0b3IpXSB7
CiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzKHRoaXMpOwogICAgIH0pOwogfQpAQCAtMTYwLDggKzE2MCw3IEBA
IHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVUcmFja1NvdXJjZUluZm9SZXF1
ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mCiAgICAgICAgIGRldmljZXMuYXBwZW5kKE1lZGlhRGV2
aWNlSW5mbzo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbGFiZWwsIGlkLCBncm91
cElkLCBkZXZpY2VUeXBlKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVl
c3Q+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcywgZGV2aWNlc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBS
ZWY8TWVkaWFEZXZpY2VzUmVxdWVzdD4oKnRoaXMpLCBkZXZpY2VzID0gV1RGTW92ZShkZXZpY2Vz
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wcm9taXNlLnJlc29sdmUo
ZGV2aWNlcyk7CiAgICAgfSk7CiAgICAgbV9wcm90ZWN0b3IgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDU5NTUyNjBjOTNhNjI1ODkzMDQ0ZDc4ZDY2
MDVmZTdmMzAzMWRjMjkuLjM4NWMxNGYzNmFjMjRjMmI4MWI5MjAyMTJjOGEyNjM4YTFiMjI2ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTk1LDE0ICs5NSwxNCBA
QCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bihQZWVyQ29ubmVjdGlvbkJhY2tlbmRDbAogICAgIG1fbWVkaWFFbmRwb2ludC0+Z2VuZXJhdGVE
dGxzSW5mbygpOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFz
ayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gdGFzaykKK3ZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uOjpydW5UYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiB0YXNrKQogewogICAgIGlmICht
X2R0bHNGaW5nZXJwcmludC5pc051bGwoKSkgewogICAgICAgICAvLyBPbmx5IG9uZSB0YXNrIG5l
ZWRzIHRvIGJlIGRlZmVycmVkIHNpbmNlIGl0IHdpbGwgaG9sZCBvZmYgYW55IG90aGVycyB1bnRp
bCBjb21wbGV0ZWQuCiAgICAgICAgIEFTU0VSVCghbV9pbml0aWFsRGVmZXJyZWRUYXNrKTsKLSAg
ICAgICAgbV9pbml0aWFsRGVmZXJyZWRUYXNrID0gdGFzazsKKyAgICAgICAgbV9pbml0aWFsRGVm
ZXJyZWRUYXNrID0gV1RGTW92ZSh0YXNrKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2FsbE9uTWFp
blRocmVhZCh0YXNrKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHRhc2spKTsK
IH0KIAogdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnN0YXJ0UnVubmluZ1Rhc2tz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFF
bmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCmluZGV4IGRkM2VjMWE3YjEyNDIwODZm
MDFiM2E0ZWJiZGQxZjYzZDAzYTIwYjYuLjg2YjI0NzczMGEzZDE3MmMwNDUxNmViOGZjZmVkNjM5
NjI1ZWFkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJOZWdvdGlhdGlvbk5lZWRlZFN0YXRlKCkgb3ZlcnJpZGUgeyBub3RJbXBsZW1lbnRlZCgp
OyB9OwogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4p
OworICAgIHZvaWQgcnVuVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogICAgIHZvaWQgc3Rh
cnRSdW5uaW5nVGFza3MoKTsKIAogICAgIHZvaWQgY3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0
aW9ucyYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJik7CkBAIC05
MSw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgUGVlckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50KiBt
X2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFFbmRwb2ludD4gbV9tZWRpYUVuZHBv
aW50OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1faW5pdGlhbERlZmVycmVkVGFzazsK
KyAgICBOb25jb3B5YWJsZUZ1bmN0aW9uIG1faW5pdGlhbERlZmVycmVkVGFzazsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTRFBQcm9jZXNzb3I+IG1fc2RwUHJvY2Vzc29yOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNw
cAppbmRleCAwMDRlNGZiMTQwNWE5NjdmYWVlNTk1MDUyYTIxNmZlNTEyZWI3YzIwLi45ZTVhOWMy
NDRlZjYzYTE3YmZhOGQ5YzdjY2U1YzYxM2FlYTM5YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTEz
NSwxMSArMTM1LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0
ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291CiAgICAgZm9yIChhdXRvJiB2
aWRlb1RyYWNrIDogdmlkZW9UcmFja3MpCiAgICAgICAgIG1fdmlkZW9EZXZpY2VVSURzLmFwcGVu
ZCh2aWRlb1RyYWNrLT5wZXJzaXN0ZW50SUQoKSk7CiAKLSAgICBSZWZQdHI8VXNlck1lZGlhUmVx
dWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZjxVc2Vy
TWVkaWFSZXF1ZXN0PigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDIgLSBUaGUgY29u
c3RyYWludHMgYXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9yIGFjY2VzcyB0byBtZWRpYS4KICAg
ICAgICAgaWYgKFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwcm90ZWN0ZWRUaGlz
LT5tX2NvbnRyb2xsZXIpCi0gICAgICAgICAgICBjb250cm9sbGVyLT5yZXF1ZXN0VXNlck1lZGlh
QWNjZXNzKCpwcm90ZWN0ZWRUaGlzLmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnJl
cXVlc3RVc2VyTWVkaWFBY2Nlc3MocHJvdGVjdGVkVGhpcy5nZXQoKSk7CiAgICAgfSk7CiB9CiAK
QEAgLTE0OCwxMCArMTQ3LDkgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojp1c2VyTWVkaWFBY2Nl
c3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnMKICAgICBtX2FsbG93
ZWRWaWRlb0RldmljZVVJRCA9IHZpZGVvRGV2aWNlVUlEOwogICAgIG1fYXVkaW9EZXZpY2VVSURB
bGxvd2VkID0gYXVkaW9EZXZpY2VVSUQ7CiAKLSAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
LCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzID0gUmVmPFVzZXJNZWRpYVJlcXVlc3Q+KCp0aGlzKSwgYXVkaW9EZXZp
Y2VVSUQsIHZpZGVvRGV2aWNlVUlEXSgpIG11dGFibGUgewogICAgICAgICAvLyAzIC0gdGhlIHVz
ZXIgZ3JhbnRlZCBhY2Nlc3MsIGFzayBwbGF0Zm9ybSB0byBjcmVhdGUgdGhlIG1lZGlhIHN0cmVh
bSBkZXNjcmlwdG9ycy4KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQoKSwgYXVkaW9EZXZpY2VV
SUQsIHZpZGVvRGV2aWNlVUlEKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5wdHIoKSwgYXVkaW9E
ZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDlkY2VlMTlmMzI2
MzkxOWRjNTRjZjg5MzgwNGVjMWYwMTk2NTRiY2EuLjg4MTgwODUwYjc0NGJlNmE0MDc2NmI5YzU2
ZGYzNTE1NmE4Mjg2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5Nyw4ICs3OTcsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6
c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9
IHRydWU7CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1ZGlvQ29udGV4dD4oKnRoaXMp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9k
ZXMoKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTAwMiw4ICsxMDAxLDcgQEAgdm9pZCBBdWRp
b0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKIHsKICAgICAvLyBNYWtlIHN1cmUg
dG8gY2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBvbiB0aGUgbWFpbiB0aHJl
YWQsIHNpbmNlCiAgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlvIEkvTyB0aHJlYWQgaGVy
ZSBhbmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgotICAgIFJlZlB0cjxBdWRp
b0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8
QXVkaW9Db250ZXh0PigqdGhpcyldIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3Vt
ZW50KCkpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1Bs
YXlpbmdNZWRpYSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWJmNmVj
M2E4ODdhMWMzOTVjYzkzNzRiMjM1OGYyODBjZmI5ZTVjNC4uNmM2YjMxYzUwN2JmNTBkNmU2NDk5
YmU4ZTY2YmVmNjNhNTdlMGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01Mzg2LDEy
ICs1Mzg2LDggQEAgU2VjdXJpdHlPcmlnaW4qIERvY3VtZW50Ojp0b3BPcmlnaW4oKSBjb25zdAog
CiB2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiB7Ci0gICAgVGFzayogdGFza1B0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSkucmVsZWFzZSgpOwotICAg
IFdlYWtQdHI8RG9jdW1lbnQ+IGRvY3VtZW50UmVmZXJlbmNlKG1fd2Vha0ZhY3RvcnkuY3JlYXRl
V2Vha1B0cigpKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoWz1dIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigp
LCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRhc2s+IHRhc2sodGFza1B0cik7
CiAKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7
CiAgICAgICAgIGlmICghZG9jdW1lbnQpCkBAIC01Mzk5LDkgKzUzOTUsOSBAQCB2b2lkIERvY3Vt
ZW50Ojpwb3N0VGFzayhUYXNrIHRhc2spCiAKICAgICAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50
LT5wYWdlKCk7CiAgICAgICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZlcnNMb2FkaW5nKCkgJiYg
ZG9jdW1lbnQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkgfHwgIWRvY3VtZW50LT5t
X3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5n
VGFza3MuYXBwZW5kKFdURk1vdmUoKnRhc2sucmVsZWFzZSgpKSk7CisgICAgICAgICAgICBkb2N1
bWVudC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygqZG9jdW1lbnQpOworICAgICAgICAgICAg
dGFzay5wZXJmb3JtVGFzaygqZG9jdW1lbnQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMjcxMzM5MjM5ZTgwYzNkNDZmYjYyODVlZjUyYjVhOTY2
OTgyMWQwYS4uNmNiMjVkOTY4MWMxOTY4YjIzMDk0NGRjYjQ3ZDJjOTM1ZGM3NGU5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMjgwLDggKzI4MCw3IEBAIGJvb2wgU2Ny
aXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkKICAgICBp
ZiAobV9jYWNoZWRTY3JpcHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnQgPSAmbV9lbGVtZW50OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IGVsZW1lbnRdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBlbGVtZW50ID0gUmVmPEVs
ZW1lbnQ+KG1fZWxlbWVudCldIHsKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uY3BwCmluZGV4IDBmYjkxMjRlMWY2Mzg0OTY5N2NlYWMwM2ZkYWE2MTJmYTZlMWUyNWYu
LmY0YjcwY2YwNTFkYThjZmMwZjVjY2ViMDZiNGEyYzNiNjQ3M2IyOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVG
dW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDEyICs2NCwxMiBAQCBp
bmxpbmUgQXN5bmNGaWxlU3RyZWFtOjpJbnRlcm5hbHM6OkludGVybmFscyhGaWxlU3RyZWFtQ2xp
ZW50JiBjbGllbnQpCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbkZpbGVU
aHJlYWQoTm9uY29weWFibGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIAotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxNZXNzYWdlUXVldWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+Pj4gcXVldWU7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPj4g
cXVldWU7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgY3JlYXRlRmlsZVRocmVhZE9uY2U7
CiAgICAgc3RkOjpjYWxsX29uY2UoY3JlYXRlRmlsZVRocmVhZE9uY2UsIFtdIHsKQEAgLTg5LDcg
KzkwLDcgQEAgc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBxdWV1ZS5nZXQoKS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVu
Y3Rpb24pKSk7CisgICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Tm9uY29w
eWFibGVGdW5jdGlvbj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFt
OjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQpAQCAtMTAyLDMzICsx
MDMsMjggQEAgQXN5bmNGaWxlU3RyZWFtOjp+QXN5bmNGaWxlU3RyZWFtKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gUmVsZWFzZSBzbyB0aGF0IHdlIGNhbiBjb250
cm9sIHRoZSB0aW1pbmcgb2YgZGVsZXRpb24gYmVsb3cuCi0gICAgYXV0byYgaW50ZXJuYWxzID0g
Km1faW50ZXJuYWxzLnJlbGVhc2UoKTsKLQogICAgIC8vIFNldCBmbGFnIHRvIHByZXZlbnQgY2xp
ZW50IGNhbGxiYWNrcyBhbmQgYWxzbyBwcmV2ZW50IHF1ZXVlZCBvcGVyYXRpb25zIGZyb20gc3Rh
cnRpbmcuCi0gICAgaW50ZXJuYWxzLmRlc3Ryb3llZCA9IHRydWU7CisgICAgbV9pbnRlcm5hbHMt
PmRlc3Ryb3llZCA9IHRydWU7CiAKICAgICAvLyBDYWxsIHRocm91Z2ggZmlsZSB0aHJlYWQgYW5k
IGJhY2sgdG8gbWFpbiB0aHJlYWQgdG8gbWFrZSBzdXJlIGRlbGV0aW9uIGhhcHBlbnMKICAgICAv
LyBhZnRlciBhbGwgZmlsZSB0aHJlYWQgZnVuY3Rpb25zIGFuZCBhbGwgbWFpbiB0aHJlYWQgZnVu
Y3Rpb25zIGNhbGxlZCBmcm9tIHRoZW0uCi0gICAgY2FsbE9uRmlsZVRocmVhZChbJmludGVybmFs
c10gewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFsmaW50ZXJuYWxzXSB7Ci0gICAgICAgICAg
ICBkZWxldGUgJmludGVybmFsczsKKyAgICBjYWxsT25GaWxlVGhyZWFkKFtpbnRlcm5hbHMgPSBX
VEZNb3ZlKG1faW50ZXJuYWxzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbaW50ZXJuYWxzID0gV1RGTW92ZShpbnRlcm5hbHMpXSB7CiAgICAgICAgIH0pOwogICAgIH0p
OwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHN0ZDo6
ZnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4gb3BlcmF0aW9u
KQordm9pZCBBc3luY0ZpbGVTdHJlYW06OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjxzdGQ6OmZ1bmN0
aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYgb3BlcmF0aW9uKQog
ewogICAgIGF1dG8mIGludGVybmFscyA9ICptX2ludGVybmFsczsKLSAgICBjYWxsT25GaWxlVGhy
ZWFkKFsmaW50ZXJuYWxzLCBvcGVyYXRpb25dIHsKKyAgICBjYWxsT25GaWxlVGhyZWFkKFsmaW50
ZXJuYWxzLCBvcGVyYXRpb24gPSBXVEZNb3ZlKG9wZXJhdGlvbildIHsKICAgICAgICAgLy8gRG9u
J3QgZG8gdGhlIG9wZXJhdGlvbiBpZiBzdG9wIHdhcyBhbHJlYWR5IGNhbGxlZCBvbiB0aGUgbWFp
biB0aHJlYWQuIE5vdGUgdGhhdCB0aGVyZSBpcwogICAgICAgICAvLyBhIHJhY2UgaGVyZSwgYnV0
IHNpbmNlIHNraXBwaW5nIHRoZSBvcGVyYXRpb24gaXMgYW4gb3B0aW1pemF0aW9uIGl0J3MgT0sg
dGhhdCB3ZSBjYW4ndAogICAgICAgICAvLyBndWFyYW50ZWUgZXhhY3RseSB3aGljaCBvcGVyYXRp
b25zIGFyZSBza2lwcGVkLiBOb3RlIHRoYXQgdGhpcyBpcyBhbHNvIHRoZSBvbmx5IHJlYXNvbgog
ICAgICAgICAvLyB3ZSB1c2UgYW4gYXRvbWljX2Jvb2wgcmF0aGVyIHRoYW4ganVzdCBhIGJvb2wg
Zm9yIGRlc3Ryb3llZC4KICAgICAgICAgaWYgKGludGVybmFscy5kZXN0cm95ZWQpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZFdvcmsgPSBvcGVyYXRpb24oaW50
ZXJuYWxzLnN0cmVhbSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoWyZpbnRlcm5hbHMsIG1h
aW5UaHJlYWRXb3JrXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoWyZpbnRlcm5hbHMsIG1h
aW5UaHJlYWRXb3JrID0gb3BlcmF0aW9uKGludGVybmFscy5zdHJlYW0pXSB7CiAgICAgICAgICAg
ICBpZiAoaW50ZXJuYWxzLmRlc3Ryb3llZCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICBtYWluVGhyZWFkV29yayhpbnRlcm5hbHMuY2xpZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmluZGV4IDQyOGY3MzBlZTQ3NmNlYmJiNDc5MWRiN2Y5
ZTU5NWVlMjk3MGJlYzcuLmZmNDgxYTQ1ZmI4MjhjYjFiMzYyYmY3NjkwMGNhMDFlOGEwNWVkNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgcGVy
Zm9ybShzdGQ6OmZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+
KEZpbGVTdHJlYW0mKT4pOworICAgIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHN0ZDo6ZnVu
Y3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJik7CiAKICAgICBz
dHJ1Y3QgSW50ZXJuYWxzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbHM+IG1faW50ZXJu
YWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5jcHAKaW5kZXggMTAwMDEzNTRmNjgyNjMyYTBkNWM4YTQwMDA4Y2I2NzJiN2YwZGY1Zi4uYzU5
OGFjMzRmZDI3MDdhOWRkNzgxNzgxZGUxMjE2ZjUwNjg1NmYxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC0xMTcsMTAgKzEx
Nyw4IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRo
KSwgY29udGVudFR5cGUpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCbG9iUmVnaXN0cnlDb250
ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lz
dHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgcGF0aCwg
Y29udGVudFR5cGUpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0XSB7Ci0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lzdHJ5
Q29udGV4dChjb250ZXh0KTsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmls
ZUJsb2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmNyZWF0ZShibG9iUmVnaXN0cnlDb250ZXh0LT5wYXRoKSwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+
Y29udGVudFR5cGUpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0Pih1cmwsIHBhdGgsIGNvbnRlbnRUeXBlKV0g
eworICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTChjb250ZXh0
LT51cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGNvbnRleHQtPnBhdGgpLCBjb250
ZXh0LT5jb250ZW50VHlwZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTEzMSwxMCArMTI5
LDggQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmwKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIEJsb2JSZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0
ZWQgY29weSBvZiBkYXRhLgotICAgICAgICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0g
bmV3IEJsb2JSZWdpc3RyeUNvbnRleHQodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRU
eXBlKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0gewotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQo
Y29udGV4dCk7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoYmxv
YlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBXVEZNb3ZlKGJsb2JSZWdpc3RyeUNvbnRleHQtPmJsb2JQ
YXJ0cyksIGJsb2JSZWdpc3RyeUNvbnRleHQtPmNvbnRlbnRUeXBlKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29udGV4
dD4odXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKV0geworICAgICAgICAgICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQtPnVybCwgV1RGTW92ZShjb250
ZXh0LT5ibG9iUGFydHMpLCBjb250ZXh0LT5jb250ZW50VHlwZSk7CiAgICAgICAgIH0pOwogICAg
IH0KIH0KQEAgLTE0OSwxMCArMTQ1LDggQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJgogICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwogICAgIGVsc2Ug
ewogICAgICAgICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNv
cHkgb2YgZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBC
bG9iUmVnaXN0cnlDb250ZXh0KHVybCwgc3JjVVJMKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY29udGV4dF0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNv
bnRleHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAgICBibG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBibG9iUmVn
aXN0cnlDb250ZXh0LT5zcmNVUkwpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iUmVnaXN0cnlDb250ZXh0Pih1cmwsIHNyY1VSTCldIHsK
KyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LT51cmws
IGNvbnRleHQtPnNyY1VSTCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTE3OCwxMCArMTcy
LDggQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVIKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogICAgIGVs
c2UgewogICAgICAgICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVk
IGNvcHkgb2YgZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5l
dyBCbG9iUmVnaXN0cnlDb250ZXh0KG5ld1VSTCwgc3JjVVJMKTsKLSAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbY29udGV4dCwgc3RhcnQsIGVuZF0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0g
ICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShibG9iUmVn
aXN0cnlDb250ZXh0LT51cmwsIGJsb2JSZWdpc3RyeUNvbnRleHQtPnNyY1VSTCwgc3RhcnQsIGVu
ZCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJsb2JSZWdpc3RyeUNvbnRleHQ+KG5ld1VSTCwgc3JjVVJMKSwgc3RhcnQsIGVuZF0geworICAg
ICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29udGV4dC0+
dXJsLCBjb250ZXh0LT5zcmNVUkwsIHN0YXJ0LCBlbmQpOwogICAgICAgICB9KTsKICAgICB9CiB9
CkBAIC0xOTMsMTEgKzE4NSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmVzdWx0U2l6ZSA9IGJs
b2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJsb2JS
ZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRhLgotICAgICAg
ICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQo
dXJsKTsKICAgICAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbY29udGV4dCwgJnNlbWFwaG9yZSwgJnJlc3VsdFNpemVdIHsKLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250
ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgpLmJs
b2JTaXplKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JSZWdpc3RyeUNvbnRleHQ+KHVybCks
ICZzZW1hcGhvcmUsICZyZXN1bHRTaXplXSB7CisgICAgICAgICAgICByZXN1bHRTaXplID0gYmxv
YlJlZ2lzdHJ5KCkuYmxvYlNpemUoY29udGV4dC0+dXJsKTsKICAgICAgICAgICAgIHNlbWFwaG9y
ZS5zaWduYWwoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHNlbWFwaG9yZS53YWl0KHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwpAQCAtMjE0LDEwICsyMDQsOCBAQCB2b2lkIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQog
ICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgIGVsc2Ug
ewogICAgICAgICAvLyBCbG9iUmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNv
cHkgb2YgZGF0YS4KLSAgICAgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBC
bG9iUmVnaXN0cnlDb250ZXh0KHVybCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRl
eHRdIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBi
bG9iUmVnaXN0cnlDb250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCku
dW5yZWdpc3RlckJsb2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsKTsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYlJlZ2lzdHJ5Q29u
dGV4dD4odXJsKV0geworICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JV
UkwoY29udGV4dC0+dXJsKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggNmRhMjQ0ZTVkM2ExZTY0YWIzYTE4
MGQ5MTM4MDI1MGI2NDkwYTM4Yy4uZTFlZGE1Y2FhMWQwMDVjMGNkZWExMTNjNjViMDU5ODM5NTM0
ZjA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBA
IC0yMDkwLDEwICsyMDkwLDkgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmRpc3BhdGNoRGlkSW1wb3J0
SWNvblVSTEZvclBhZ2VVUkxPbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJgogICAgIEFTU0VSVF9J
Q09OX1NZTkNfVEhSRUFEKCk7CiAgICAgKyttX21haW5UaHJlYWRDYWxsYmFja0NvdW50OwogCi0g
ICAgU3RyaW5nIHBhZ2VVUkxDb3B5ID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKTsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBwYWdlVVJMQ29weV0geworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGlmICht
X2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVS
TChwYWdlVVJMQ29weSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkSW1wb3J0SWNvblVSTEZv
clBhZ2VVUkwocGFnZVVSTCk7CiAgICAgICAgIGNoZWNrQ2xvc2VkQWZ0ZXJNYWluVGhyZWFkQ2Fs
bGJhY2soKTsKICAgICB9KTsKIH0KQEAgLTIxMDMsMTAgKzIxMDIsOSBAQCB2b2lkIEljb25EYXRh
YmFzZTo6ZGlzcGF0Y2hEaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkxPbk1haW5UaHJlYWQoY29u
c3QgU3RyaW5nJgogICAgIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFEKCk7CiAgICAgKyttX21haW5U
aHJlYWRDYWxsYmFja0NvdW50OwogCi0gICAgU3RyaW5nIHBhZ2VVUkxDb3B5ID0gcGFnZVVSTC5p
c29sYXRlZENvcHkoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwYWdlVVJMQ29weV0g
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVk
Q29weSgpXSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwocGFnZVVSTENvcHkpOworICAgICAgICAgICAgbV9j
bGllbnQtPmRpZEltcG9ydEljb25EYXRhRm9yUGFnZVVSTChwYWdlVVJMKTsKICAgICAgICAgY2hl
Y2tDbG9zZWRBZnRlck1haW5UaHJlYWRDYWxsYmFjaygpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKaW5kZXggMjM1MDBiZTJhYzViMGYw
OGMwNjI3N2Q2M2ExMGQ4OGJhM2UzZjhjNy4uZWYyYTUyNTJmZmFhYjQ5NmJkNGM1MzBmMWM1MDUx
NDM4NWY0NjIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdl
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQu
Y3BwCkBAIC03Nyw5ICs3Nyw5IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6d2FpdFVudGls
T2JzZXJ2ZXJzKCkKICAgICAgICAgbV9jb25kaXRpb24ud2FpdChtX2xvY2spOwogfQogCi12b2lk
IFJlc291cmNlVXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVycyhSZXNvdXJjZVVzYWdlRGF0YSYg
ZGF0YSkKK3ZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6bm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNl
VXNhZ2VEYXRhJiYgZGF0YSkKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtkYXRhXSgpIG11dGFi
bGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW2RhdGEgPSBXVEZNb3ZlKGRhdGEpXSgpIG11dGFi
bGUgewogICAgICAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJjZVVz
YWdlRGF0YSYpPj4gZnVuY3Rpb25zOwogICAgICAgICAKICAgICAgICAgewpAQCAtMTE3LDcgKzEx
Nyw3IEBAIE5PX1JFVFVSTiB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnRocmVhZEJvZHkoKQog
CiAgICAgICAgIFJlc291cmNlVXNhZ2VEYXRhIGRhdGE7CiAgICAgICAgIHBsYXRmb3JtVGhyZWFk
Qm9keShtX3ZtLCBkYXRhKTsKLSAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKGRhdGEpOworICAgICAg
ICBub3RpZnlPYnNlcnZlcnMoV1RGTW92ZShkYXRhKSk7CiAKICAgICAgICAgYXV0byBkdXJhdGlv
biA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpIC0gc3RhcnQpOwogICAgICAgICBhdXRv
IGRpZmZlcmVuY2UgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDUwMCkgLSBkdXJhdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKaW5kZXggZmQyNTgxYWZj
NWE1ZDZjOWNmNDVmZDdiYmYzZjM1YzNmMmE0Y2FiYy4uMjVlNGMzZDVhYTZhYjNiNGFiMWQ2ZGU1
ODU2MmQwZmRmY2UxNmQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJj
ZVVzYWdlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhy
ZWFkLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUmVzb3VyY2VVc2Fn
ZVRocmVhZCYgc2luZ2xldG9uKCk7CiAKICAgICB2b2lkIHdhaXRVbnRpbE9ic2VydmVycygpOwot
ICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VEYXRhJik7CisgICAgdm9pZCBu
b3RpZnlPYnNlcnZlcnMoUmVzb3VyY2VVc2FnZURhdGEmJik7CiAKICAgICB2b2lkIGNyZWF0ZVRo
cmVhZElmTmVlZGVkKCk7CiAgICAgc3RhdGljIHZvaWQgdGhyZWFkQ2FsbGJhY2sodm9pZCogc2Ny
b2xsaW5nVGhyZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUaHJlYWQuY3BwCmluZGV4IDQ2NjlhMTk5Mjg3YTZjYWYwYWViYzZiYmJhNWE3ZWVlNWM1
ZWJkNmIuLjM1YTE3YjhlNzgzMjkwZGZhYTZjNmQ4M2YzZGI3ODEyMjQzNzRkN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcApAQCAt
NDUsMjIgKzQ1LDIyIEBAIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKQog
ICAgIHJldHVybiB0aHJlYWRJZGVudGlmaWVyICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJ
ZGVudGlmaWVyOwogfQogCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChO
b25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgYXV0byYgc2Nyb2xsaW5nVGhy
ZWFkID0gU2Nyb2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKTsKICAgICBzY3JvbGxpbmdUaHJlYWQu
Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKIAogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soc2Nyb2xsaW5nVGhyZWFkLm1fZnVuY3Rpb25zTXV0ZXgpOwotICAgICAgICBz
Y3JvbGxpbmdUaHJlYWQubV9mdW5jdGlvbnMuYXBwZW5kKGZ1bmN0aW9uKTsKKyAgICAgICAgc2Ny
b2xsaW5nVGhyZWFkLm1fZnVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAg
fQogCiAgICAgc2Nyb2xsaW5nVGhyZWFkLndha2VVcFJ1bkxvb3AoKTsKIH0KIAotdm9pZCBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0
aW9uKQordm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1
bmN0aW9uJiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0Y2goW2Z1bmN0aW9uXSgpIG11dGFibGUg
eworICAgIGRpc3BhdGNoKFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSgpIG11dGFibGUg
ewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9KTsK
IH0KQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hGdW5j
dGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoaXNDdXJyZW50VGhyZWFk
KCkpOwogCi0gICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IGZ1bmN0aW9uczsKKyAg
ICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlvbj4gZnVuY3Rpb25zOwogICAgIAogICAgIHsKICAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9mdW5jdGlvbnNNdXRleCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCmluZGV4IGE3
MDljY2Q4ZTc4NjM2MjlkZThhMjgzYzQ2M2NhOWM3NzA1MWM3MTUuLmFhZjU3N2JkZDk4ODNkNDMw
MjA0NzIyNmI1ZTgyMTBiZjg2YjU1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDcsMTEgKzQ4
LDExIEBAIGNsYXNzIFNjcm9sbGluZ1RocmVhZCB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpc0N1cnJlbnRUaHJlYWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNw
YXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAgICAgLy8gV2lsbCBkaXNw
YXRjaCB0aGUgZ2l2ZW4gZnVuY3Rpb24gb24gdGhlIG1haW4gdGhyZWFkIG9uY2UgYWxsIHBlbmRp
bmcgZnVuY3Rpb25zCiAgICAgLy8gb24gdGhlIHNjcm9sbGluZyB0aHJlYWQgaGF2ZSBmaW5pc2hl
ZCBleGVjdXRpbmcuIFVzZWQgZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaEJhcnJpZXIoc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hCYXJyaWVyKE5v
bmNvcHlhYmxlRnVuY3Rpb24mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJv
eWVkPFNjcm9sbGluZ1RocmVhZD47CkBAIC03OSw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgTG9j
ayBtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXg7CiAKICAgICBMb2NrIG1fZnVuY3Rpb25zTXV0ZXg7
Ci0gICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25zOworICAgIFZl
Y3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9uPiBtX2Z1bmN0aW9uczsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFdlYkNvcmU6OlJ1bkxvb3AgaGVyZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlSU9TLmNwcAppbmRleCAwODJiZDczY2RiYmYyZDk2ZDhjOGQ0YTkxMjhhOWVjOTcwNDdmYWU4
Li42NjI2ZWNjYzhlMWE3ZDZmMGEwOWU2ZjYxNGNmMWM3MDNhYjYwYjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3Bw
CkBAIC02Nyw5ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6aW52YWxpZGF0ZSgpCiAg
ICAgLy8gU2luY2UgdGhpcyBjYW4gcG90ZW50aWFsbHkgYmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRv
IHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IsCiAgICAgLy8gd2UgbmVlZCB0byByZWxlYXNlIGl0
IG9uIHRoZSBtYWluIHRocmVhZCBzaW5jZSBpdCBoYXMgbWVtYmVyIHZhcmlhYmxlcyAoc3VjaCBh
cyB0aW1lcnMpCiAgICAgLy8gdGhhdCBleHBlY3QgdG8gYmUgZGVzdHJveWVkIGZyb20gdGhlIG1h
aW4gdGhyZWFkLgotICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRv
ciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IucmVsZWFzZSgpLmxlYWtSZWYoKTsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29yZGluYXRvcl0gewotICAgICAgICBzY3JvbGxpbmdD
b29yZGluYXRvci0+ZGVyZWYoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzY3JvbGxpbmdDb29y
ZGluYXRvciA9IFdURk1vdmUobV9zY3JvbGxpbmdDb29yZGluYXRvcildIHsKICAgICB9KTsKIH0K
IApAQCAtODYsMTAgKzg0LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlSU9TOjpzY3JvbGxpbmdUcmVl
Tm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdAogICAgIGlmIChub2Rl
SUQgPT0gcm9vdE5vZGUoKS0+c2Nyb2xsaW5nTm9kZUlEKCkpCiAgICAgICAgIHNldE1haW5GcmFt
ZVNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKIAotICAgIFJlZlB0cjxBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yPiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRp
bmF0b3I7Ci0gICAgYm9vbCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwgPSBpc0hh
bmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsKCk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtzY3Jv
bGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbG9jYWxJc0hhbmRsaW5n
UHJvZ3JhbW1hdGljU2Nyb2xsLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uXSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLCBub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0
aWNTY3JvbGwgPSBpc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsKCksIHNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb25dIHsKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjaGVkdWxl
VXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9zaXRp
b24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbik7CiAgICAgfSk7CiB9CkBAIC0xMjMsOCArMTE4LDcgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlSU9TOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3Jv
bGxpbmdOb2RlSUQKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2Fs
XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsXSB7CiAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhub2RlSUQs
IGhvcml6b250YWwsIHZlcnRpY2FsKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWMubW0KaW5kZXggYmQ4MTg1NDhiNTMwZTBlMjQ5YWE0YjY4ZTQ3
YTEyNWJmZDE0MjEyZS4uOGIzZjFjYzcwOWYyNGE3Mjk3OGI0NTIyZTkxYTk4YTMxOGVhZDAwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KQEAgLTc1LDEx
ICs3NSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6cmVsZWFz
ZVJlZmVyZW5jZXNUb1Njcm9sbGVySW1wc09uVGhlTWFpCiAgICAgaWYgKG1fdmVydGljYWxTY3Jv
bGxlckltcCB8fCBtX2hvcml6b250YWxTY3JvbGxlckltcCkgewogICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBhIHdvcmthcm91bmQgaW4gcGxhY2UgZm9yIHRoZSB0aW1lIGJlaW5nIHNpbmNlIE5T
U2Nyb2xsZXJJbXBzIGNhbm5vdCBiZSBkZWFsbG9jYXRlZAogICAgICAgICAvLyBvbiBhIG5vbi1t
YWluIHRocmVhZC4gcmRhcjovL3Byb2JsZW0vMjQ1MzUwNTUKLSAgICAgICAgTlNTY3JvbGxlcklt
cCAqcmV0YWluZWRWZXJ0aWNhbFNjcm9sbGVySW1wID0gbV92ZXJ0aWNhbFNjcm9sbGVySW1wLmxl
YWtSZWYoKTsKLSAgICAgICAgTlNTY3JvbGxlckltcCAqcmV0YWluZWRIb3Jpem9udGFsU2Nyb2xs
ZXJJbXAgPSBtX2hvcml6b250YWxTY3JvbGxlckltcC5sZWFrUmVmKCk7Ci0gICAgICAgIFdURjo6
Y2FsbE9uTWFpblRocmVhZChbcmV0YWluZWRWZXJ0aWNhbFNjcm9sbGVySW1wLCByZXRhaW5lZEhv
cml6b250YWxTY3JvbGxlckltcF0gewotICAgICAgICAgICAgW3JldGFpbmVkVmVydGljYWxTY3Jv
bGxlckltcCByZWxlYXNlXTsKLSAgICAgICAgICAgIFtyZXRhaW5lZEhvcml6b250YWxTY3JvbGxl
ckltcCByZWxlYXNlXTsKKyAgICAgICAgV1RGOjpjYWxsT25NYWluVGhyZWFkKFt2ZXJ0aWNhbFNj
cm9sbGVySW1wID0gV1RGTW92ZShtX3ZlcnRpY2FsU2Nyb2xsZXJJbXApLCBob3Jpem9udGFsU2Ny
b2xsZXJJbXAgPSBXVEZNb3ZlKG1faG9yaXpvbnRhbFNjcm9sbGVySW1wKV0gewogICAgICAgICB9
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcAppbmRleCAzMmVhYzQ1MjRmNzZkYWY5YTdhZDIyNGVjOWI0ZTZlODBkNDMz
MTgwLi40OTVkOGI3ZTg4Y2FjM2Q4MWMwM2JkNzEwNDExMDNjZGIzMTkwZmZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTE3
Miw3ICsxNzIsOSBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeShD
cml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hybwogICAgICAgICAvLyBGYXN0TWFs
bG9jIGhhcyBsb2NrLWZyZWUgdGhyZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBvbmx5IGJl
IGNsZWFyZWQgZnJvbSB0aGUgdGhyZWFkIGl0c2VsZi4KICAgICAgICAgV29ya2VyVGhyZWFkOjpy
ZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKICNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TKQotICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6
OmRpc3BhdGNoKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KTsKKyAgICAgICAgU2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbXSgpIHsKKyAgICAgICAgICAgIFdURjo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCk7CisgICAgICAgIH0pOwogI2VuZGlmCiAgICAgICAgIFdURjo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQppbmRleCAxMmNiY2JmOGYyNjFhYmUxYWYxMjQyYjA1MjQ0ZDZkZjE2MzMxYzRhLi42MzJkYzM1
MTBmNzE0NjhiNjg0ZjJkODRlMjcwOGIxYjg3ZWZiM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQpAQCAtMzk2LDEwICszOTYsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOwogCiAgICAgaWYgKCFpc01haW5UaHJl
YWQoKSkgewotICAgICAgICBhdXRvIHZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KTsK
LSAgICAgICAgYXV0byByb3V0aW5nQ29udHJvbGxlciA9IFdURk1vdmUoX2FpclBsYXlQcmVzZW5j
ZVJvdXRpbmdDb250cm9sbGVyKTsKLQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt2b2x1bWVW
aWV3LCByb3V0aW5nQ29udHJvbGxlcl0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3ZvbHVtZVZpZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KSwgcm91dGluZ0NvbnRyb2xs
ZXIgPSBXVEZNb3ZlKF9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlcildICgpIG11dGFi
bGUgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVh
bGxvY10gLSBkaXBhdGNoZWQgdG8gTWFpblRocmVhZCIpOwogCiAgICAgICAgICAgICB2b2x1bWVW
aWV3LmNsZWFyKCk7CkBAIC00MzUsMTUgKzQzMiwxNCBAQCAtICh2b2lkKXN0YXJ0TW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXMKIAogICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdIik7CiAKLSAgICBSZXRhaW5QdHI8V2ViTWVk
aWFTZXNzaW9uSGVscGVyPiBzdHJvbmdTZWxmID0gc2VsZjsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtzdHJvbmdTZWxmXSAoKSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+KHNlbGYpXSAoKSB7CiAgICAgICAgIExP
RyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXNdIC0gZGlwYXRjaGVkIHRvIE1haW5UaHJlYWQiKTsKIAotICAgICAgICBpZiAoc3Ryb25n
U2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyKQorICAgICAgICBpZiAocHJv
dGVjdGVkU2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHN0cm9uZ1NlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5n
Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jTVBBVlJvdXRpbmdDb250cm9sbGVySW5zdGFuY2Uo
KSBpbml0V2l0aE5hbWU6QCJXZWJDb3JlIC0gSFRNTCBtZWRpYSBlbGVtZW50IGNoZWNraW5nIGZv
ciBBaXJQbGF5IHJvdXRlIHByZXNlbmNlIl0pOwotICAgICAgICBbc3Ryb25nU2VsZi0+X2FpclBs
YXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1vZGU6TVBSb3V0ZURpc2Nv
dmVyeU1vZGVQcmVzZW5jZV07CisgICAgICAgIHByb3RlY3RlZFNlbGYtPl9haXJQbGF5UHJlc2Vu
Y2VSb3V0aW5nQ29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jTVBBVlJvdXRpbmdDb250cm9sbGVy
SW5zdGFuY2UoKSBpbml0V2l0aE5hbWU6QCJXZWJDb3JlIC0gSFRNTCBtZWRpYSBlbGVtZW50IGNo
ZWNraW5nIGZvciBBaXJQbGF5IHJvdXRlIHByZXNlbmNlIl0pOworICAgICAgICBbcHJvdGVjdGVk
U2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1vZGU6
TVBSb3V0ZURpc2NvdmVyeU1vZGVQcmVzZW5jZV07CiAgICAgfSk7CiB9CiAKQEAgLTQ1NCwxNSAr
NDUwLDE0IEBAIC0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzCiAKICAgICBMT0co
TWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0
ZXNdIik7CiAKLSAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBzdHJvbmdTZWxm
ID0gc2VsZjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSAoKSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25I
ZWxwZXI+KHNlbGYpXSAoKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9u
SGVscGVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc10gLSBkaXBhdGNoZWQgdG8gTWFpblRo
cmVhZCIpOwogCi0gICAgICAgIGlmICghc3Ryb25nU2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRp
bmdDb250cm9sbGVyKQorICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9haXJQbGF5UHJlc2Vu
Y2VSb3V0aW5nQ29udHJvbGxlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBbc3Ry
b25nU2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1v
ZGU6TVBSb3V0ZURpc2NvdmVyeU1vZGVEaXNhYmxlZF07Ci0gICAgICAgIHN0cm9uZ1NlbGYtPl9h
aXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlciA9IG5pbDsKKyAgICAgICAgW3Byb3RlY3Rl
ZFNlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlciBzZXREaXNjb3ZlcnlNb2Rl
Ok1QUm91dGVEaXNjb3ZlcnlNb2RlRGlzYWJsZWRdOworICAgICAgICBwcm90ZWN0ZWRTZWxmLT5f
YWlyUGxheVByZXNlbmNlUm91dGluZ0NvbnRyb2xsZXIgPSBuaWw7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCAz
ZDkwZGVkZjZjOTk3NGQ0NGUyMDJiODlmZDE4ZTg0MjQ3ZTA1NmRhLi41MjJhYTM2MmY2ZjIxYTk1
Y2FkNDJmZjk3NzhhYTAxYTYxMmVkNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC0zMjMsOSArMzIzLDggQEAgdm9pZCBBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0
IEF1ZGlvU3RyZWEKICAgICBtZW1zZXQobV9saXN0LmdldCgpLCAwLCBidWZmZXJMaXN0U2l6ZSk7
CiAgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9IG51bWJlck9mQ2hhbm5lbHM7CiAKLSAgICBS
ZWZQdHI8QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IHN0cm9uZ1RoaXMgPSB0aGlzOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXMsIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJh
dGVdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+bV9jbGllbnQtPnNldEZvcm1hdChudW1iZXJPZkNo
YW5uZWxzLCBzYW1wbGVSYXRlKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmPEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPigqdGhpcyksIG51bWJlck9mQ2hhbm5l
bHMsIHNhbXBsZVJhdGVdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQtPnNldEZv
cm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApp
bmRleCA5ODYyMTE3NDgzYjY5NTNjYWY2MmE4YTMyMWQzNWE0MDEwZmEzMjU3Li42OTI4NzFhMTBl
NmJmNTY2NjMxYjE5YWQ0ZjgzZmZiYTIyOGVhODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtODA2LDggKzgwNiw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJl
YWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uCiAgICAgaWYgKGRlbGF5RGlzcGF0Y2ggJiYgIW1f
bWFpblRocmVhZENhbGxQZW5kaW5nKSB7CiAgICAgICAgIG1fbWFpblRocmVhZENhbGxQZW5kaW5n
ID0gdHJ1ZTsKIAotICAgICAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10geworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTg0NCw4ICs4NDMsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzcGF0Y2hOb3RpZmljYXRpb24oKQog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIW1fcXVldWVkTm90aWZpY2F0aW9ucy5p
c0VtcHR5KCkgJiYgIW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7Ci0gICAgICAgICAgICBhdXRv
IHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXNdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0g
Y3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGEyOGQ5Mjk0ZGM5ZTFmMDlhYzI0
MzhmMzY4YTJjMDJkYzllYjcwOWYuLjVmZmQ1MjE3YTU4Y2NlMTM4Yzc0YWE0MGM2NzYzNGYyMGRl
MjkwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC04NCwxMCArODQsMTAgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6
KE4KICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAib3V0cHV0T2JzY3VyZWREdWVUb0luc3Vm
ZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbiJdKSB7CiAgICAgICAgIGlmIChbW2NoYW5nZSB2YWx1
ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XSBpbnRWYWx1ZV0gPT0gMSkgewogICAgICAg
ICAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
OkAiY29tLmFwcGxlLldlYktpdCIgY29kZTonSERDUCcgdXNlckluZm86bmlsXTsKLSAgICAgICAg
ICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ0xpc3RlbmVyPiBzdHJv
bmdTZWxmID0geyBzZWxmIH07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdT
ZWxmLCBlcnJvcl0gewotICAgICAgICAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5fcGFyZW50KQot
ICAgICAgICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5wbGF5ZXJEaWRSZWNlaXZl
RXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgUmV0YWluUHRyPFdlYkNETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDTGlzdGVuZXI+IHByb3RlY3RlZFNlbGYgPSB7IHNlbGYgfTsKKyAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFNlbGYpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7CisgICAgICAgICAgICAgICAgaWYgKHBy
b3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYt
Pl9wYXJlbnQtPnBsYXllckRpZFJlY2VpdmVFcnJvcihlcnJvci5nZXQoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0KaW5kZXggMmM3MDc3NzVmOWIz
OTA4ZDhhMTFkZmM0Y2E2MTNkZGJjOWMwNGYzYy4uMjJiMDRhNzVjYTM4NzNiNWNjNzcyMmFjN2Mw
ZGY1MTQ0ZjFkMGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCkBAIC0xODUsMTYgKzE4NSwxNiBAQCAtICh2b2lk
KW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KGlkKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBj
aGFuZ2U6KE5TRGljdGlvbgogICAgIGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOmV4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlS2V5TmFtZV0gJiYgIVtrZXlQYXRoIGlzRXF1YWxUb1N0
cmluZzpleHRlcm5hbE91dHB1dERldmljZVBpY2tlZEtleU5hbWVdKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlckhlbHBlcj4g
c3Ryb25nU2VsZiA9IHNlbGY7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJvbmdLZXlQYXRo
ID0ga2V5UGF0aDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJvbmdLZXlQ
YXRoXSB7Ci0gICAgICAgIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMqIGNhbGxiYWNrID0g
c3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKKyAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VN
ZW51Q29udHJvbGxlckhlbHBlcj4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBwcm90ZWN0ZWRLZXlQYXRoID0ga2V5UGF0aDsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKSwgcHJvdGVjdGVkS2V5
UGF0aCA9IFdURk1vdmUocHJvdGVjdGVkS2V5UGF0aCldIHsKKyAgICAgICAgTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1hYyogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5tX2NhbGxiYWNrOwog
ICAgICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
IChbc3Ryb25nS2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVLZXlOYW1lXSkKKyAgICAgICAgaWYgKFtwcm90ZWN0ZWRLZXlQYXRoIGlzRXF1YWxUb1N0
cmluZzpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZUtleU5hbWVdKQogICAgICAgICAgICAg
Y2FsbGJhY2stPmF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKTsKLSAgICAgICAgZWxzZSBpZiAo
W3N0cm9uZ0tleVBhdGggaXNFcXVhbFRvU3RyaW5nOmV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2Vk
S2V5TmFtZV0pCisgICAgICAgIGVsc2UgaWYgKFtwcm90ZWN0ZWRLZXlQYXRoIGlzRXF1YWxUb1N0
cmluZzpleHRlcm5hbE91dHB1dERldmljZVBpY2tlZEtleU5hbWVdKQogICAgICAgICAgICAgY2Fs
bGJhY2stPmN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IGE4OTE0NDAyODE0NzE1OWEwNjE5ZmFjODNjNWMxMGYyZTJmYjY0MDIu
LjdkODljOTM3MzJkNWI1MDM2MzUzYzc3NmQ4OWNjNzE0YTM5OGQxNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtNzAxLDggKzcwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcigpCiAgICAgaWYgKCFtX2F2UGxheWVyIHx8
IG1faGF2ZUJlZW5Bc2tlZFRvQ3JlYXRlTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgd2Vha1RoaXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IGNy
ZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC0zNDQxLDE1ICszNDQwLDE1IEBAIC0gKHZvaWQpbGVnaWJsZU91dHB1dDooaWQp
b3V0cHV0IGRpZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBuCiAg
ICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8V2Vi
Q29yZUFWRk1vdmllT2JzZXJ2ZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOwotICAgIFJldGFpblB0cjxO
U0FycmF5PiBzdHJvbmdTdHJpbmdzID0gc3RyaW5nczsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4g
c3Ryb25nU2FtcGxlcyA9IG5hdGl2ZVNhbXBsZXM7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ry
b25nU2VsZiwgc3Ryb25nU3RyaW5ncywgc3Ryb25nU2FtcGxlcywgaXRlbVRpbWVdIHsKLSAgICAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBzdHJvbmdT
ZWxmLT5tX2NhbGxiYWNrOworICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTW92aWVPYnNlcnZlcj4g
cHJvdGVjdGVkU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IHByb3RlY3RlZFN0
cmluZ3MgPSBzdHJpbmdzOworICAgIFJldGFpblB0cjxOU0FycmF5PiBwcm90ZWN0ZWROYXRpdmVT
YW1wbGVzID0gbmF0aXZlU2FtcGxlczsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKSwgcHJvdGVjdGVkU3RyaW5ncyA9IFdURk1vdmUo
cHJvdGVjdGVkU3RyaW5ncyksIHByb3RlY3RlZE5hdGl2ZVNhbXBsZXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZE5hdGl2ZVNhbXBsZXMpLCBpdGVtVGltZV0geworICAgICAgICBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPm1fY2FsbGJhY2s7
CiAgICAgICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIE1l
ZGlhVGltZSB0aW1lID0gc3RkOjptYXgodG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBNZWRpYVRpbWU6
Onplcm9UaW1lKCkpOwotICAgICAgICBjYWxsYmFjay0+cHJvY2Vzc0N1ZShzdHJvbmdTdHJpbmdz
LmdldCgpLCBzdHJvbmdTYW1wbGVzLmdldCgpLCB0aW1lKTsKKyAgICAgICAgY2FsbGJhY2stPnBy
b2Nlc3NDdWUocHJvdGVjdGVkU3RyaW5ncy5nZXQoKSwgcHJvdGVjdGVkTmF0aXZlU2FtcGxlcy5n
ZXQoKSwgdGltZSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0NjAsOSArMzQ1OSw4IEBAIC0gKHZvaWQp
b3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihpZClvdXRwdXQKICAgICBpZiAoIW1fY2FsbGJhY2sp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2Jz
ZXJ2ZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1Nl
bGZdIHsKLSAgICAgICAgaWYgKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIGNh
bGxiYWNrID0gc3Ryb25nU2VsZi0+bV9jYWxsYmFjaykKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyPihzZWxmKV0g
eworICAgICAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogY2FsbGJh
Y2sgPSBwcm90ZWN0ZWRTZWxmLT5tX2NhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2stPmZs
dXNoQ3VlcygpOwogICAgIH0pOwogfQpAQCAtMzQ4OCwxNyArMzQ4NiwxNyBAQCAtIChCT09MKXJl
c291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91
bGRXYWl0Rm9yTG9hZAogICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuIE5POwog
Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZT4gc3Ryb25nU2VsZiA9IHNl
bGY7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBzdHJvbmdS
ZXF1ZXN0ID0gbG9hZGluZ1JlcXVlc3Q7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2Vs
Ziwgc3Ryb25nUmVxdWVzdF0gewotICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDKiBjYWxsYmFjayA9IHN0cm9uZ1NlbGYtPm1fY2FsbGJhY2s7CisgICAgUmV0YWluUHRy
PFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZT4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7CisgICAgUmV0
YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBwcm90ZWN0ZWRMb2FkaW5nUmVx
dWVzdCA9IGxvYWRpbmdSZXF1ZXN0OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNl
bGYgPSBXVEZNb3ZlKHByb3RlY3RlZFNlbGYpLCBwcm90ZWN0ZWRMb2FkaW5nUmVxdWVzdCA9IFdU
Rk1vdmUocHJvdGVjdGVkTG9hZGluZ1JlcXVlc3QpXSB7CisgICAgICAgIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMqIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+bV9jYWxsYmFj
azsKICAgICAgICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAgICAgW3N0cm9uZ1JlcXVlc3Qg
ZmluaXNoTG9hZGluZ1dpdGhFcnJvcjpuaWxdOworICAgICAgICAgICAgW3Byb3RlY3RlZExvYWRp
bmdSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6bmlsXTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghY2FsbGJhY2stPnNob3VsZFdhaXRGb3JMb2Fk
aW5nT2ZSZXNvdXJjZShzdHJvbmdSZXF1ZXN0LmdldCgpKSkKLSAgICAgICAgICAgIFtzdHJvbmdS
ZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6bmlsXTsKKyAgICAgICAgaWYgKCFjYWxsYmFj
ay0+c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKHByb3RlY3RlZExvYWRpbmdSZXF1ZXN0
LmdldCgpKSkKKyAgICAgICAgICAgIFtwcm90ZWN0ZWRMb2FkaW5nUmVxdWVzdCBmaW5pc2hMb2Fk
aW5nV2l0aEVycm9yOm5pbF07CiAgICAgfSk7CiAKICAgICByZXR1cm4gWUVTOwpAQCAtMzUxMywx
NyArMzUxMSwxNyBAQCAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2Fk
ZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yUmVzcAogICAgIGlmIChbW1tjaGFsbGVu
Z2UgcHJvdGVjdGlvblNwYWNlXSBhdXRoZW50aWNhdGlvbk1ldGhvZF0gaXNFcXVhbFRvU3RyaW5n
Ok5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdF0pCiAgICAgICAgIHJldHVybiBO
TzsKIAotICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGU+IHN0cm9uZ1NlbGYg
PSBzZWxmOwotICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBzdHJv
bmdDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2Vs
Ziwgc3Ryb25nQ2hhbGxlbmdlXSB7Ci0gICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqIGNhbGxiYWNrID0gc3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKKyAgICBSZXRhaW5Q
dHI8V2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKKyAgICBS
ZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gcHJvdGVjdGVkQ2hhbGxlbmdl
ID0gY2hhbGxlbmdlOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBXVEZN
b3ZlKHByb3RlY3RlZFNlbGYpLCBwcm90ZWN0ZWRDaGFsbGVuZ2UgPSBXVEZNb3ZlKHByb3RlY3Rl
ZENoYWxsZW5nZSldIHsKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5tX2NhbGxiYWNrOwogICAgICAgICBpZiAoIWNh
bGxiYWNrKSB7Ci0gICAgICAgICAgICBbW3N0cm9uZ0NoYWxsZW5nZSBzZW5kZXJdIGNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOnN0cm9uZ0NoYWxsZW5nZS5nZXQoKV07CisgICAgICAgICAg
ICBbW3Byb3RlY3RlZENoYWxsZW5nZSBzZW5kZXJdIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOnByb3RlY3RlZENoYWxsZW5nZS5nZXQoKV07CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoIWNhbGxiYWNrLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHN0cm9uZ0NoYWxsZW5nZS5nZXQoKSkpCi0gICAgICAgICAg
ICBbW3N0cm9uZ0NoYWxsZW5nZSBzZW5kZXJdIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OnN0cm9uZ0NoYWxsZW5nZS5nZXQoKV07CisgICAgICAgIGlmICghY2FsbGJhY2stPnNob3VsZFdh
aXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocHJvdGVjdGVkQ2hhbGxlbmdl
LmdldCgpKSkKKyAgICAgICAgICAgIFtbcHJvdGVjdGVkQ2hhbGxlbmdlIHNlbmRlcl0gY2FuY2Vs
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6cHJvdGVjdGVkQ2hhbGxlbmdlLmdldCgpXTsKICAgICB9
KTsKIAogICAgIHJldHVybiBZRVM7CkBAIC0zNTM1LDEyICszNTMzLDEyIEBAIC0gKHZvaWQpcmVz
b3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIGRpZENh
bmNlbExvYWRpbmdSCiAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZXRhaW5QdHI8V2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlPiBzdHJvbmdTZWxmID0gc2VsZjsK
LSAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IHN0cm9uZ1JlcXVl
c3QgPSBsb2FkaW5nUmVxdWVzdDsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBz
dHJvbmdSZXF1ZXN0XSB7Ci0gICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqIGNhbGxiYWNrID0gc3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKKyAgICBSZXRhaW5QdHI8V2Vi
Q29yZUFWRkxvYWRlckRlbGVnYXRlPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKKyAgICBSZXRhaW5Q
dHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IHByb3RlY3RlZExvYWRpbmdSZXF1ZXN0
ID0gbG9hZGluZ1JlcXVlc3Q7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHByb3RlY3RlZExvYWRpbmdSZXF1ZXN0ID0gV1RGTW92
ZShwcm90ZWN0ZWRMb2FkaW5nUmVxdWVzdCldIHsKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQyogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5tX2NhbGxiYWNrOwog
ICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+ZGlkQ2FuY2VsTG9h
ZGluZ1JlcXVlc3Qoc3Ryb25nUmVxdWVzdC5nZXQoKSk7CisgICAgICAgICAgICBjYWxsYmFjay0+
ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3QocHJvdGVjdGVkTG9hZGluZ1JlcXVlc3QuZ2V0KCkpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMmY1ODJkYmU0Nzli
Y2JmZWY4OTM1Y2U5MWUzYzI0N2JjYzU3YmYyYy4uYjM1ZTNkZTQ3NWRlMjA2MWRkM2Q2ZDQ5NjIw
MGYwMmI2MGNkZWRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTI5LDggKzEy
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyB2b2lkIENNVGltZWJhc2VFZmZlY3Rp
dmVSYXRlQ2hhbmdlZENhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lk
ICpsaXN0ZW5lciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQgKiwgQ0ZUeXBlUmVmKQogewogICAg
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGxheWVyID0gKE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyopbGlzdGVuZXI7Ci0gICAgYXV0byB3ZWFrVGhp
cyA9IHBsYXllci0+Y3JlYXRlV2Vha1B0cigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtU
aGlzXXsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IHBsYXllci0+Y3JlYXRlV2Vh
a1B0cigpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHdlYWtUaGlzLmdldCgpLT5lZmZlY3RpdmVSYXRlQ2hhbmdlZCgpOwpAQCAtMzEyLDgg
KzMxMSw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpwbGF5KCkKIHsKLSAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vh
a1B0cigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXXsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3ZWFrVGhpcy5nZXQoKS0+cGxheUlu
dGVybmFsKCk7CkBAIC0zMzIsOCArMzMwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnBsYXlJbnRlcm5hbCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpwYXVzZSgpCiB7Ci0gICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0
ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc117CisgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2Vha1RoaXMuZ2V0KCktPnBh
dXNlSW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggMmNmNTg3NzM2MjEy
MDc4NDVlYjFhYTEzYzU5MjYzZWZlZTJiZTA0NS4uZGFlZTJlZmZlYmFmYmZjMzljNjhmN2YxZGNm
YTBhYWZmNDlhMmJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIApAQCAtMTQyLDcgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVUcmFja3MoKTsKICAgICB2b2lkIHJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAKLSAgICB2
b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisgICAgdm9p
ZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAgICAgZW51
bSBEaXNwbGF5TW9kZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0K
aW5kZXggNWRlNDRkMGRmZjg2OTRhZGQ0YjVhNTFhODFiYjM2ZGQ1ODc1YmUzZS4uN2E3OTY0MmEx
YzAxM2E0YjRiNTg4MDBjYWMyMGRkNzI4YTIxYzRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQpAQCAtNjI0LDExICs2MjQsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1MKICAgICBt
X3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGZ1bmN0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlv
bikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwotICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVX
ZWFrUHRyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGZ1bmN0aW9uXSB7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBjNTZmMjFmNjZjOGQ2YmY3NTlmMDQ0MTJjZDQzYWY5
Y2IwNDI3MGYxLi4yZjVkOGM5ZDBkMTE5MGIzNmJhNDA1ZDZmODNhMDAwYmZkNmUxZGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbQpAQCAtMTc5LDEyICsxNzksMTIgQEAgLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0
cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGEKICAgICBV
TlVTRURfUEFSQU0oc3RyZWFtRGF0YVBhcnNlcik7CiAjZW5kaWYKICAgICBBU1NFUlQoc3RyZWFt
RGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLSAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFy
c2VyTGlzdGVuZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOworICAgIFJldGFpblB0cjxXZWJBVlN0cmVh
bURhdGFQYXJzZXJMaXN0ZW5lcj4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7CiAKLSAgICBSZXRhaW5Q
dHI8QVZBc3NldCo+IHN0cm9uZ0Fzc2V0ID0gYXNzZXQ7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
c3Ryb25nU2VsZiwgc3Ryb25nQXNzZXRdIHsKLSAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJl
bnQpCi0gICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFB
c0Fzc2V0KHN0cm9uZ0Fzc2V0LmdldCgpKTsKKyAgICBSZXRhaW5QdHI8QVZBc3NldCo+IHByb3Rl
Y3RlZEFzc2V0ID0gYXNzZXQ7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0
ZWRBc3NldCldIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAg
ICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHBy
b3RlY3RlZEFzc2V0LmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMTk1LDEyICsxOTUsMTIgQEAg
LSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRh
UGFyc2VyIGRpZFBhcnNlU3RyZWFtRGEKICAgICBVTlVTRURfUEFSQU0oc3RyZWFtRGF0YVBhcnNl
cik7CiAjZW5kaWYKICAgICBBU1NFUlQoc3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLSAg
ICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXI+IHN0cm9uZ1NlbGYgPSBz
ZWxmOworICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gcHJvdGVj
dGVkU2VsZiA9IHNlbGY7CiAKLSAgICBSZXRhaW5QdHI8QVZBc3NldCo+IHN0cm9uZ0Fzc2V0ID0g
YXNzZXQ7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgc3Ryb25nQXNzZXRdIHsK
LSAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICBzdHJvbmdTZWxm
LT5fcGFyZW50LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHN0cm9uZ0Fzc2V0LmdldCgpKTsK
KyAgICBSZXRhaW5QdHI8QVZBc3NldCo+IHByb3RlY3RlZEFzc2V0ID0gYXNzZXQ7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHBy
b3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKKyAgICAgICAgaWYgKHBy
b3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50
LT5kaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KHByb3RlY3RlZEFzc2V0LmdldCgpKTsKICAgICB9
KTsKIH0KIApAQCAtMjEwLDEyICsyMTAsMTIgQEAgLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihB
VlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZEZhaWxUb1BhcnNlU3QKICAg
ICBVTlVTRURfUEFSQU0oc3RyZWFtRGF0YVBhcnNlcik7CiAjZW5kaWYKICAgICBBU1NFUlQoc3Ry
ZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKLSAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRh
UGFyc2VyTGlzdGVuZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOworICAgIFJldGFpblB0cjxXZWJBVlN0
cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7CiAKLSAgICBSZXRh
aW5QdHI8TlNFcnJvcj4gc3Ryb25nRXJyb3IgPSBlcnJvcjsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtzdHJvbmdTZWxmLCBzdHJvbmdFcnJvcl0gewotICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X3Bh
cmVudCkKLSAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPmRpZEZhaWxUb1BhcnNlU3Ry
ZWFtRGF0YVdpdGhFcnJvcihzdHJvbmdFcnJvci5nZXQoKSk7CisgICAgUmV0YWluUHRyPE5TRXJy
b3I+IHByb3RlY3RlZEVycm9yID0gZXJyb3I7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHByb3RlY3RlZEVycm9yID0gV1RGTW92
ZShwcm90ZWN0ZWRFcnJvcildIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPl9wYXJlbnQp
CisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5kaWRGYWlsVG9QYXJzZVN0cmVh
bURhdGFXaXRoRXJyb3IocHJvdGVjdGVkRXJyb3IuZ2V0KCkpOwogICAgIH0pOwogfQogCkBAIC0y
MjUsMTMgKzIyNSwxMyBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZU1lZGlhRAogICAgIFVOVVNFRF9QQVJB
TShzdHJlYW1EYXRhUGFyc2VyKTsKICNlbmRpZgogICAgIEFTU0VSVChzdHJlYW1EYXRhUGFyc2Vy
ID09IF9wYXJzZXIpOwotICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
cj4gc3Ryb25nU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNl
ckxpc3RlbmVyPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKIAotICAgIFJldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4gc3Ryb25nU2FtcGxlID0gc2FtcGxlOworICAgIFJldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4gcHJvdGVjdGVkU2FtcGxlID0gc2FtcGxlOwogICAgIFN0cmluZyBtZWRpYVR5
cGUgPSBuc01lZGlhVHlwZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBzdHJv
bmdTYW1wbGUsIHRyYWNrSUQsIG1lZGlhVHlwZSwgZmxhZ3NdIHsKLSAgICAgICAgaWYgKHN0cm9u
Z1NlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5kaWRQcm92
aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBzdHJvbmdTYW1wbGUuZ2V0KCksIG1lZGlh
VHlwZSwgZmxhZ3MpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBXVEZN
b3ZlKHByb3RlY3RlZFNlbGYpLCBwcm90ZWN0ZWRTYW1wbGUgPSBXVEZNb3ZlKHByb3RlY3RlZFNh
bXBsZSksIHRyYWNrSUQsIG1lZGlhVHlwZSwgZmxhZ3NdIHsKKyAgICAgICAgaWYgKHByb3RlY3Rl
ZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5kaWRQ
cm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCh0cmFja0lELCBwcm90ZWN0ZWRTYW1wbGUuZ2V0KCks
IG1lZGlhVHlwZSwgZmxhZ3MpOwogICAgIH0pOwogfQogCkBAIC0yNDEsMTIgKzI0MSwxMiBAQCAt
ICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQ
YXJzZXIgZGlkUmVhY2hFbmRPZlRyYQogICAgIFVOVVNFRF9QQVJBTShzdHJlYW1EYXRhUGFyc2Vy
KTsKICNlbmRpZgogICAgIEFTU0VSVChzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwotICAg
IFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gc3Ryb25nU2VsZiA9IHNl
bGY7CisgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBwcm90ZWN0
ZWRTZWxmID0gc2VsZjsKIAogICAgIFN0cmluZyBtZWRpYVR5cGUgPSBuc01lZGlhVHlwZTsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCB0cmFja0lELCBtZWRpYVR5cGVdIHsKLSAg
ICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICBzdHJvbmdTZWxmLT5f
cGFyZW50LT5kaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUp
OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFNlbGYpLCB0cmFja0lELCBtZWRpYVR5cGVdIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYt
Pl9wYXJlbnQpCisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5kaWRSZWFjaEVu
ZE9mVHJhY2tXaXRoVHJhY2tJRCh0cmFja0lELCBtZWRpYVR5cGUpOwogICAgIH0pOwogfQogCkBA
IC0yNzIsMTMgKzI3MiwxMiBAQCAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0
YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbgogICAgIFVOVVNFRF9Q
QVJBTShzdHJlYW1EYXRhUGFyc2VyKTsKICNlbmRpZgogICAgIEFTU0VSVChzdHJlYW1EYXRhUGFy
c2VyID09IF9wYXJzZXIpOwotICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0
ZW5lcj4gc3Ryb25nU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBh
cnNlckxpc3RlbmVyPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKIAotICAgIFJldGFpblB0cjxOU0Rh
dGE+IHN0cm9uZ0RhdGEgPSBpbml0RGF0YTsKICAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9zZW1h
cGhvcmVfdD4gaGFzU2Vzc2lvblNlbWFwaG9yZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfc2Vt
YXBob3JlX2NyZWF0ZSgwKSk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZiwgc3Ry
b25nRGF0YSwgdHJhY2tJRCwgIGhhc1Nlc3Npb25TZW1hcGhvcmVdIHsKLSAgICAgICAgaWYgKHN0
cm9uZ1NlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5kaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHN0cm9u
Z0RhdGEuZ2V0KCksIHRyYWNrSUQsIGhhc1Nlc3Npb25TZW1hcGhvcmUpOworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBXVEZNb3ZlKHByb3RlY3RlZFNlbGYpLCBwcm90ZWN0
ZWRJbml0RGF0YSA9IFJldGFpblB0cjxOU0RhdGE+KGluaXREYXRhKSwgdHJhY2tJRCwgaGFzU2Vz
c2lvblNlbWFwaG9yZSA9IFdURk1vdmUoaGFzU2Vzc2lvblNlbWFwaG9yZSldIHsKKyAgICAgICAg
aWYgKHByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5f
cGFyZW50LT5kaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEKHByb3RlY3RlZEluaXREYXRhLmdldCgpLCB0cmFja0lELCBoYXNTZXNzaW9uU2VtYXBo
b3JlKTsKICAgICB9KTsKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChoYXNTZXNzaW9uU2Vt
YXBob3JlLmdldCgpLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwogfQpAQCAtMzgyLDIxICszODEs
MjEgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGgg
b2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KICAgICBVTlVTRURfUEFSQU0oa2V5UGF0aCk7
CiAgICAgQVNTRVJUKF9wYXJlbnQpOwogCi0gICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVy
RXJyb3JMaXN0ZW5lcj4gc3Ryb25nU2VsZiA9IHNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWU2Ft
cGxlQnVmZmVyRXJyb3JMaXN0ZW5lcj4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7CiAgICAgaWYgKFtv
YmplY3QgaXNLaW5kT2ZDbGFzczpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCld
KSB7CiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbGF5ZXIg
PSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilvYmplY3Q7CiAgICAgICAgIEFTU0VSVChf
bGF5ZXJzLmNvbnRhaW5zKGxheWVyLmdldCgpKSk7CiAKICAgICAgICAgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUbzpAImVycm9yIl0pIHsKICAgICAgICAgICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJv
ciA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBsYXllciwgZXJyb3JdIHsKLSAgICAg
ICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXll
ci5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIGxheWVyID0gV1RGTW92ZShsYXll
ciksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRT
ZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQoKSwgZXJyb3IuZ2V0
KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGggaXNFcXVh
bFRvOkAib3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbiJd
KSB7CiAgICAgICAgICAgICBpZiAoW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5n
ZU5ld0tleV0gYm9vbFZhbHVlXSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxOU0Vycm9y
PiBlcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQiIGNv
ZGU6J0hEQ1AnIHVzZXJJbmZvOm5pbF07Ci0gICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbc3Ryb25nU2VsZiwgbGF5ZXIsIGVycm9yXSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cm9u
Z1NlbGYtPl9wYXJlbnQtPmxheWVyRGlkUmVjZWl2ZUVycm9yKGxheWVyLmdldCgpLCBlcnJvci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIGxheWVyID0gV1RGTW92ZShsYXllciksIGVycm9yID0g
V1RGTW92ZShlcnJvcildIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3Bh
cmVudC0+bGF5ZXJEaWRSZWNlaXZlRXJyb3IobGF5ZXIuZ2V0KCksIGVycm9yLmdldCgpKTsKICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCkBAIC00MDks
OCArNDA4LDggQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtl
eVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KICAgICAgICAgQVNTRVJUKF9yZW5k
ZXJlcnMuY29udGFpbnMocmVuZGVyZXIuZ2V0KCkpKTsKICAgICAgICAgQVNTRVJUKFtrZXlQYXRo
IGlzRXF1YWxUbzpAImVycm9yIl0pOwogCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9u
Z1NlbGYsIHJlbmRlcmVyLCBlcnJvcl0gewotICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVu
dC0+cmVuZGVyZXJEaWRSZWNlaXZlRXJyb3IocmVuZGVyZXIuZ2V0KCksIGVycm9yLmdldCgpKTsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVj
dGVkU2VsZiksIHJlbmRlcmVyID0gV1RGTW92ZShyZW5kZXJlciksIGVycm9yID0gV1RGTW92ZShl
cnJvcildIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPnJlbmRlcmVyRGlk
UmVjZWl2ZUVycm9yKHJlbmRlcmVyLmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIH0pOwog
ICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQyMSwxMSArNDIw
LDExIEBAIC0gKHZvaWQpbGF5ZXJGYWlsZWRUb0RlY29kZTooTlNOb3RpZmljYXRpb24qKW5vdGUK
ICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGxheWVyID0gKEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyICopW25vdGUgb2JqZWN0XTsKICAgICBSZXRhaW5QdHI8TlNF
cnJvcj4gZXJyb3IgPSBbW25vdGUgdXNlckluZm9dIHZhbHVlRm9yS2V5OkFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb25FcnJvcktleV07CiAKLSAgICBS
ZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyPiBzdHJvbmdTZWxmID0gc2Vs
ZjsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCBsYXllciwgZXJyb3JdIHsKLSAg
ICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fcGFyZW50IHx8ICFzdHJvbmdTZWxmLT5fbGF5ZXJzLmNv
bnRhaW5zKGxheWVyLmdldCgpKSkKKyAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJFcnJv
ckxpc3RlbmVyPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKSwgbGF5ZXIgPSBXVEZNb3ZlKGxh
eWVyKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0geworICAgICAgICBpZiAoIXByb3RlY3RlZFNl
bGYtPl9wYXJlbnQgfHwgIXByb3RlY3RlZFNlbGYtPl9sYXllcnMuY29udGFpbnMobGF5ZXIuZ2V0
KCkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT5s
YXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgICAgICBw
cm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllckRpZFJlY2VpdmVFcnJvcihsYXllci5nZXQoKSwg
ZXJyb3IuZ2V0KCkpOwogICAgIH0pOwogfQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDll
Y2VjNTIxYTk4OTc0ZWU3MDNlM2Q0ZDkyMzM2ZDBlYTRkYTZjYjYuLjIxZjUzMzhiMjZmNTNjMTUy
YmRiYmVjNDYwMWFmYjk4NzYyNWFkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI5NSw4ICsy
OTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29u
dGV4dFJlZiBjb250ZXh0KQogCiBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZv
aWQqIGluZm8pCiB7Ci0gICAgYXV0byBpbWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGlu
Zm8pOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlXSB7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKV0gewogICAgICAgICBDR0lt
YWdlUmVsZWFzZShpbWFnZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCBiMzAzM2ZlMDUxMGY3OWQyNTEy
YTQwNmJiMWJkZGYyOTVhZmE1YTM0Li5iNDI4ZDUwZDk0YmY5MjQyODAzMjg3ZDJlZWMxNmJkNjlj
NTI4ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dHRlcm5DRy5jcHAKQEAgLTU2LDkgKzU2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVybkNhbGxiYWNr
KHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogCiBzdGF0aWMgdm9pZCBwYXR0ZXJu
UmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiB7Ci0gICAgYXV0byBpbWFnZSA9IHN0YXRpY19j
YXN0PENHSW1hZ2VSZWY+KGluZm8pOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2VdIHsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGlu
Zm8pXSB7CiAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggOGU1Nzdm
ZmE0YTgwNDhkMTY0ZTI5ZjA2ZDc0YzQ0Yjg5ZWM4Mzc3Zi4uZWQzMmQxOWY3NDE0MTdkNTk2YTk2
MjhiY2M1NzJjNGZiNWNmODhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKQEAgLTQ4Niw4ICs0ODYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5kQ3JlYXRlZE1lZGlhU291cmNlKElNRkFzeW5jUmVzdWx0
KiBhcwogICAgIGhyID0gYXN5bmNSZXN1bHQtPkdldFN0YXR1cygpOwogICAgIG1fbG9hZGluZ1By
b2dyZXNzID0gU1VDQ0VFREVEKGhyKTsKIAotICAgIGF1dG8gd2Vha1B0ciA9IG1fd2Vha1B0ckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHJdIHsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVX
ZWFrUHRyKCldIHsKICAgICAgICAgaWYgKCF3ZWFrUHRyKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB3ZWFrUHRyLT5vbkNyZWF0ZWRNZWRpYVNvdXJjZSgpOwpAQCAtNTE2LDggKzUxNSw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRHZXRFdmVudChJ
TUZBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQpCiAKICAgICBzd2l0Y2ggKG1lZGlhRXZlbnRUeXBl
KSB7CiAgICAgY2FzZSBNRVNlc3Npb25Ub3BvbG9neVNldDogewotICAgICAgICBhdXRvIHdlYWtQ
dHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbd2Vha1B0cl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0g
bV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICghd2Vh
a1B0cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5vblRv
cG9sb2d5U2V0KCk7CkBAIC01MjYsOCArNTI0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OmVuZEdldEV2ZW50KElNRkFzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCkK
ICAgICB9CiAKICAgICBjYXNlIE1FQnVmZmVyaW5nU3RhcnRlZDogewotICAgICAgICBhdXRvIHdl
YWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1B0cl0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRy
ID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1B0cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrUHRyLT5v
bkJ1ZmZlcmluZ1N0YXJ0ZWQoKTsKQEAgLTUzNiw4ICs1MzMsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6ZW5kR2V0RXZlbnQoSU1GQXN5bmNSZXN1bHQqIGFzeW5j
UmVzdWx0KQogICAgIH0KIAogICAgIGNhc2UgTUVCdWZmZXJpbmdTdG9wcGVkOiB7Ci0gICAgICAg
IGF1dG8gd2Vha1B0ciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOwotICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKV0gewogICAgICAgICAg
ICAgaWYgKCF3ZWFrUHRyKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHdl
YWtQdHItPm9uQnVmZmVyaW5nU3RvcHBlZCgpOwpAQCAtNTQ2LDggKzU0Miw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjplbmRHZXRFdmVudChJTUZBc3luY1Jlc3Vs
dCogYXN5bmNSZXN1bHQpCiAgICAgfQogCiAgICAgY2FzZSBNRVNlc3Npb25FbmRlZDogewotICAg
ICAgICBhdXRvIHdlYWtQdHIgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0cl0geworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt3ZWFrUHRyID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAg
ICAgICAgIGlmICghd2Vha1B0cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB3ZWFrUHRyLT5vblNlc3Npb25FbmRlZCgpOwpAQCAtMTY3NSw4ICsxNjcwLDcgQEAgSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
Ojpwcm9jZXNzSW5wdXROb3QKICAgICAKICAgICAvLyBJbnZhbGlkYXRlIHRoZSB2aWRlbyBhcmVh
CiAgICAgaWYgKG1fbWVkaWFQbGF5ZXIpIHsKLSAgICAgICAgYXV0byB3ZWFrUHRyID0gbV9tZWRp
YVBsYXllci0+bV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dlYWtQdHJdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0
ciA9IG1fbWVkaWFQbGF5ZXItPm1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAg
ICAgICAgICAgICBpZiAod2Vha1B0cikKICAgICAgICAgICAgICAgICB3ZWFrUHRyLT5pbnZhbGlk
YXRlRnJhbWVWaWV3KCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKaW5kZXggZGY2
NjA3MDI1NDVkOWU3YmQ5MjhjNjVmZTYwM2Y5OTU1N2ZmZGYzZi4uNDJkMjQ2NmMyYmY2MzFmMGVm
ZmFjY2Y5NGY0MDAyODEwYTdkMDI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCkBAIC0yOTksMTEg
KzI5OSwxMCBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tFbmRlZChNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpz
Y2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit2b2lk
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5j
dGlvbiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7Ci0gICAgYXV0byB3ZWFr
VGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywg
ZnVuY3Rpb25dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQ
dHIoKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCmluZGV4IDZiYWU3M2Nl
OTJiMWE2MDU5ZjJmYzdhZWQxZDdiMmI5OTg5YmY4OWIuLjhjZjYwNGM5MDY1NmMwZmUwYWJiMDdi
OTE1NGFkMTFhMWQ5YzYyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTExMSw3ICsxMTIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBk
YXRlQWN0aXZlVmlkZW9UcmFjaygpOwogCi0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soTm9u
Y29weWFibGVGdW5jdGlvbiYmKTsKIAogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhU3RyZWFtUHJp
dmF0ZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVy
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
Vk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKaW5kZXggZmJhNTI4MzgxOTUyYTI1MmViYjU4
NDM3MDQyODQxMGY0NmJkNTUyYi4uMjFhY2FmMDJkNjY0OTUwNGE3MzUxMWIyMWM4OTc3Y2M2NDk5
ZjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWTWVkaWFDYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIApAQCAtODUsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRWaWRlb1NhbXBs
ZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCopOwogICAgIHZvaWQgc2V0
QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQqKTsKIAot
ICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7Cisg
ICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgc2V0dXBTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UubW0KaW5kZXggYzA2MTJjNTIzOThmMmZkNTcwNTIzOTEzNjA0Y2IxZGM5OTdjYzMxNC4uNzkx
NWE4NDJlYTgzZGQzNTdkMmI0Mjg4YTU3OWJmYzEzODBiNzZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5tbQpAQCAtMjQwLDEyICsyNDAsMTAgQEAgdm9pZCBBVk1lZGlhQ2FwdHVyZVNv
dXJjZTo6c2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVBdWRpb0RhdGFPdXRw
dXQKICAgICBbYXVkaW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVyRGVsZWdhdGU6bV9vYmpjT2JzZXJ2
ZXIuZ2V0KCkgcXVldWU6Z2xvYmFBdWRpb0NhcHR1cmVTZXJpYWxRdWV1ZSgpXTsKIH0KIAotdm9p
ZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpmdW5jdGlv
bjx2b2lkICgpPiBmdW5jdGlvbikKK3ZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnNjaGVkdWxl
RGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NF
UlQoZnVuY3Rpb24pOwotCi0gICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgZnVuY3Rpb25dIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1
bmN0aW9uKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKaW5kZXggMjQ5
OWNmM2MzZmMzOGNjMmYyNDkwNzFjMWM4NmM0MjRlNjVkMzA4MC4uZGVhN2E3YzI5NzRlM2Q4YTll
MGRiODE3N2Q5NmI5ZTRlMmYxOGMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjLmNwcApAQCAtMTYzLDEwICsxNjMsOSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGll
bnQqCiBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50
PiBwcnBDbGllbnQpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsKLQogICAgIFRyYWNrU291cmNlSW5m
b1ZlY3RvciBzb3VyY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0
U291cmNlc0luZm8ocmVxdWVzdENsaWVudC0+cmVxdWVzdE9yaWdpbigpKTsKIAotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQsIHNvdXJjZXNdIHsKKyAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCByZXF1ZXN0Q2xpZW50ID0gV1RGTW92ZShyZXF1ZXN0Q2xpZW50KSwg
c291cmNlcyA9IFdURk1vdmUoc291cmNlcyldIHsKICAgICAgICAgcmVxdWVzdENsaWVudC0+ZGlk
Q29tcGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KHNvdXJjZXMpOwogICAgIH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggN2I4ZDYxY2Fl
MDkyOWZkYWY0NjA3MGU1YTc3NzBmMmUzZWU4ODE1ZC4uZWQ5MTdlODkxZWJiMjM0NWY4YzcyYzQ0
ODVkOWU3ZTg5ODA0MDZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbQpAQCAtMjE0LDEwICsyMTQsMTAgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQzo6cHJlcGFyZShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGYK
ICAgICBtZW1zZXQobV9saXN0LmdldCgpLCAwLCBtX2xpc3RCdWZmZXJTaXplKTsKICAgICBtX2xp
c3QtPm1OdW1iZXJCdWZmZXJzID0gbnVtYmVyT2ZDaGFubmVsczsKIAotICAgIFJlZlB0cjxXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gc3Ryb25nVGhpcyA9IHRoaXM7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbc3Ryb25nVGhpcywgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0gewot
ICAgICAgICBpZiAoc3Ryb25nVGhpcy0+bV9jbGllbnQpCi0gICAgICAgICAgICBzdHJvbmdUaGlz
LT5tX2NsaWVudC0+c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAg
IFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gcHJvdGVjdGVkVGhpcyA9IHRo
aXM7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGVdIHsKKyAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPm1fY2xpZW50KQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jbGll
bnQtPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA5MDkzNTc5NDhkNThhMTVlMDdjYTM3
OTZjMzgwZTEzOGZlOGY1MzJiLi5hYWU4MDgzOTExNWZmOWJhZmI5NDhjODI1NmYzODM0YjQ4Yjg2
ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIGJv
b2wgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzKFBhc3NSZWZQdHI8TWVkaWFTCiAgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnRyYWNrU291cmNlV2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9j
a0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCksIG51bGxwdHIpKTsKICAgICBzb3VyY2VzLmFwcGVu
ZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgbnVsbHB0cikpOwog
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCwgc291cmNlc10gewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQgPSBXVEZNb3ZlKHJlcXVl
c3RDbGllbnQpLCBzb3VyY2VzID0gV1RGTW92ZShzb3VyY2VzKV0gewogICAgICAgICByZXF1ZXN0
Q2xpZW50LT5kaWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3Qoc291cmNlcyk7CiAgICAg
fSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmNwcAppbmRleCA1M2ViMjVhMDRkMTE0YmIwY2M1OGRhN2ZlYjE1YmJhMWY3
Yzc0NTkzLi40ODRlOTIxZWM3NTQ4YmI2YzMzYTI2NDQ4ZTZkNzc2NzRhNTczZDdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCkBAIC0xODcsMTAgKzE4Nyw4IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpzdGFy
dCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFu
ZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCiAgICAgLy8gRmluaXNoIHRoaXMgYXN5bmMgY2Fs
bCBxdWlja2x5IGFuZCByZXR1cm4uCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
c10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8QmxvYlJlc291
cmNlSGFuZGxlPigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRv
U3RhcnQoKTsKICAgICB9KTsKIH0KQEAgLTY2NSw5ICs2NjMsOCBAQCB2b2lkIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6bm90aWZ5RmluaXNoKCkKIAogICAgIC8vIFNjaGVkdWxlIHRvIG5vdGlmeSB0aGUg
Y2xpZW50IGZyb20gYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNsaWVudCBtaWdo
dCBkaXNwb3NlIHRoZSBoYW5kbGUgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY2FsbGJhY2sgZnVuY3Rp
b24KICAgICAvLyB3aGlsZSB3ZSBzdGlsbCBoYXZlIEJsb2JSZXNvdXJjZUhhbmRsZSBjYWxscyBp
biB0aGUgc3RhY2suCi0gICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAg
IGRvTm90aWZ5RmluaXNoKCpwcm90ZWN0ZWRUaGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4oKnRoaXMpXSgpIG11dGFibGUg
eworICAgICAgICBkb05vdGlmeUZpbmlzaChwcm90ZWN0ZWRUaGlzKTsKICAgICB9KTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAppbmRleCBlNDBlZDNmOGEwMDVmNmMwMmFlMmQwMzQ2YThkMzZlNGQ4ZWIyMmQxLi43Nzk4Zjkx
OWU5NGZlYmUwOWJjMGMxODRkNjdkODljODdkZDc0MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTY4LDI1ICsxNjgs
MjEgQEAgc3RhdGljIHZvaWQgZGVjb2RlRXNjYXBlZChEZWNvZGVUYXNrJiB0YXNrKQogICAgIHRh
c2sucmVzdWx0LmRhdGEgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7CiB9CiAK
LXZvaWQgZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVk
dWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIGRlY29kZShjb25zdCBVUkwmIHVybCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVs
ZUNvbnRleHQsIERlY29kZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIAogICAgIGF1dG8gZGVjb2RlVGFz
ayA9IGNyZWF0ZURlY29kZVRhc2sodXJsLCBzY2hlZHVsZUNvbnRleHQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICBhdXRvKiBkZWNvZGVUYXNrUHRyID0gZGVjb2RlVGFzay5yZWxl
YXNlKCk7Ci0gICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFza1B0cl0gewotICAg
ICAgICBhdXRvJiBkZWNvZGVUYXNrID0gKmRlY29kZVRhc2tQdHI7Ci0KLSAgICAgICAgaWYgKGRl
Y29kZVRhc2suaXNCYXNlNjQpCi0gICAgICAgICAgICBkZWNvZGVCYXNlNjQoZGVjb2RlVGFzayk7
CisgICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFzayA9IFdURk1vdmUoZGVjb2Rl
VGFzayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChkZWNvZGVUYXNrLT5pc0Jhc2U2NCkKKyAg
ICAgICAgICAgIGRlY29kZUJhc2U2NCgqZGVjb2RlVGFzayk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGRlY29kZUVzY2FwZWQoZGVjb2RlVGFzayk7CisgICAgICAgICAgICBkZWNvZGVFc2Nh
cGVkKCpkZWNvZGVUYXNrKTsKIAogI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICAgICAgRGVj
b2RpbmdSZXN1bHREaXNwYXRjaGVyOjpkaXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFz
az4oZGVjb2RlVGFza1B0cikpOworICAgICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OmRp
c3BhdGNoKFdURk1vdmUoZGVjb2RlVGFzaykpOwogI2Vsc2UKLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbZGVjb2RlVGFza1B0cl0gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZVRhc2s+IGRlY29kZVRhc2soZGVjb2RlVGFza1B0cik7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2RlY29kZVRhc2sgPSBXVEZNb3ZlKGRlY29kZVRhc2spXSB7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZVRhc2stPnJlc3VsdC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgZGVjb2RlVGFzay0+
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNjQz
MzM3Njc0MGRkZDU2MDAwN2VjZTQyZmNkNzM4M2M5NmZhZmU5NC4uNGMwMTEyMTA4MTg1NDg1NzYx
NTkzYTQzOTY1NmNjYWM4NzZjNWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgU2NoZWR1
bGVDb250ZXh0IHsKICNlbmRpZgogfTsKIAotdm9pZCBkZWNvZGUoY29uc3QgVVJMJiwgY29uc3Qg
U2NoZWR1bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIpOwordm9pZCBkZWNvZGUo
Y29uc3QgVVJMJiwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiwgRGVjb2RlQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGE3MzY3NWEyODcxMGQ1
YTI5YWNkMzU5NThlZDBiYTFjMTEyY2Y0ZGQuLjYxZmRmZTFhMmExNTJmNmRhMDI0ZDQ1ODhkYWI0
ZTg0ODM2OTc0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkyLDEwICs5Miw3IEBA
IC0gKHZvaWQpZGVhbGxvYwogICAgIGZvciAoYXV0byYgdGFzayA6IF9kYXRhVGFza3MpCiAgICAg
ICAgIHRhc2suZ2V0KCkuc2Vzc2lvbiA9IG5pbDsKIAotICAgIC8vIEZJWE1FKEMrKzE0KTogV2hl
biB3ZSBjYW4gbW92ZSBSZWZQdHJzIGRpcmVjdGx5IGludG8gYmxvY2tzLCByZXBsYWNlIHRoaXMg
d2l0aCBhIFJlZlB0ciYmOgotICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ciogbG9hZGVyID0gX2xvYWRlci5sZWFrUmVmKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbbG9h
ZGVyXSB7Ci0gICAgICAgIGxvYWRlci0+ZGVyZWYoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFts
b2FkZXIgPSBXVEZNb3ZlKF9sb2FkZXIpXSB7CiAgICAgfSk7CiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQpAQCAtNDY2LDM0ICs0NjMsMzEgQEAgLSAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCiAt
ICh2b2lkKWNhbmNlbAogewogICAgIHNlbGYuc3RhdGUgPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVD
YW5jZWxpbmc7Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4gc3Ry
b25nU2VsZiB7IHNlbGYgfTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmXSB7Ci0g
ICAgICAgIFtzdHJvbmdTZWxmIF9jYW5jZWxdOwotICAgICAgICBbc3Ryb25nU2VsZiBfZmluaXNo
XTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKKyAgICAgICAgW3Byb3RlY3RlZFNlbGYg
X2NhbmNlbF07CisgICAgICAgIFtwcm90ZWN0ZWRTZWxmIF9maW5pc2hdOwogICAgIH0pOwogfQog
CiAtICh2b2lkKXN1c3BlbmQKIHsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrPiBzdHJvbmdTZWxmIHsgc2VsZiB9OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9u
Z1NlbGZdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4oc2VsZildIHsKICAgICAgICAgLy8gTlNVUkxT
ZXNzaW9uRGF0YVRhc2tzIG11c3Qgc3RhcnQgb3ZlciBhZnRlciBzdXNwZW5kaW5nLCBzbyB3aGls
ZQogICAgICAgICAvLyB3ZSBjb3VsZCBkZWZlciBsb2FkaW5nIGF0IHRoaXMgcG9pbnQsIGluc3Rl
YWQgY2FuY2VsIGFuZCByZXN0YXJ0CiAgICAgICAgIC8vIHVwb24gcmVzdW1lIHNvIGFzIHRvIGFk
aGVyZSB0byBOU1VSTFNlc3Npb25EYXRhVGFzayBzZW1hbnRpY3MuCi0gICAgICAgIFtzdHJvbmdT
ZWxmIF9jYW5jZWxdOwotICAgICAgICBzdHJvbmdTZWxmLmdldCgpLnN0YXRlID0gTlNVUkxTZXNz
aW9uVGFza1N0YXRlU3VzcGVuZGVkOworICAgICAgICBbcHJvdGVjdGVkU2VsZiBfY2FuY2VsXTsK
KyAgICAgICAgcHJvdGVjdGVkU2VsZi5nZXQoKS5zdGF0ZSA9IE5TVVJMU2Vzc2lvblRhc2tTdGF0
ZVN1c3BlbmRlZDsKICAgICB9KTsKIH0KIAogLSAodm9pZClyZXN1bWUKIHsKLSAgICBSZXRhaW5Q
dHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBzdHJvbmdTZWxmIHsgc2VsZiB9OwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGZdIHsKLSAgICAgICAgaWYgKHN0cm9uZ1NlbGYu
Z2V0KCkuc3RhdGUgIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlU3VzcGVuZGVkKQorICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrPihzZWxmKV0geworICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi5nZXQoKS5zdGF0
ZSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVTdXNwZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgW3N0cm9uZ1NlbGYgX3Jlc3RhcnRdOwotICAgICAgICBzdHJvbmdTZWxmLmdl
dCgpLnN0YXRlID0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZzsKKyAgICAgICAgW3Byb3Rl
Y3RlZFNlbGYgX3Jlc3RhcnRdOworICAgICAgICBwcm90ZWN0ZWRTZWxmLmdldCgpLnN0YXRlID0g
TlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZzsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRl
eCBjNmM4Nzk3YmJjYTAyYzk1OWJkNTMzZTY0OGVjZTRkNzFmNGE0NzgwLi4yZmVmMDA1MWQ3Njg5
OTViYzYwMjZmZTBmMzE0MzM4YmVjNWFmZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtNDAyLDExICs0MDIs
OSBAQCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhl
YWRlcikKICAgICAgICAgQ1VSTGNvZGUgZXJyID0gY3VybF9lYXN5X2dldGluZm8obV9jdXJsSGFu
ZGxlLCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmaHR0cENvZGUpOwogCiAgICAgICAgIGlmICho
dHRwQ29kZSA+PSAyMDAgJiYgaHR0cENvZGUgPCAzMDApIHsKLSAgICAgICAgICAgIFVSTENhcHR1
cmUgY2FwdHVyZWRVcmwoZ2V0Q3VybEVmZmVjdGl2ZVVSTChtX2N1cmxIYW5kbGUpKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KLSAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhcHR1cmVkVXJsLCBwcm90ZWN0ZWRUaGlz
XSB7Ci0gICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRVUkwoY2FwdHVyZWRVcmwudXJsKCkp
OworICAgICAgICAgICAgVVJMIHVybCA9IGdldEN1cmxFZmZlY3RpdmVVUkwobV9jdXJsSGFuZGxl
KTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHVybCA9IHVybC5pc29sYXRl
ZENvcHkoKSwgcHJvdGVjdGVkVGhpcyA9IFJlZjxDdXJsRG93bmxvYWQ+KCp0aGlzKV0geworICAg
ICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKHVybCk7CiAgICAgICAgICAgICAgICAgbV9y
ZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpKTsKICAgICAg
ICAgICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpD
b250ZW50VHlwZSkpKTsKIApAQCAtNDE0LDE0ICs0MTIsMTAgQEAgdm9pZCBDdXJsRG93bmxvYWQ6
OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRI
ZWFkZXIoaGVhZGVyKTsKLQotICAgICAgICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwotCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhcHR1cmVkSGVh
ZGVyLCBwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgICAgICBpbnQgc3BsaXRQb3MgPSBjYXB0dXJl
ZEhlYWRlci5zdHJpbmcoKS5maW5kKCI6Iik7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIGhlYWRlciA9IGhlYWRlci5pc29sYXRlZENvcHkoKSwgcHJvdGVjdGVkVGhpcyA9IFJlZjxD
dXJsRG93bmxvYWQ+KCp0aGlzKV0geworICAgICAgICAgICAgaW50IHNwbGl0UG9zID0gaGVhZGVy
LnN0cmluZygpLmZpbmQoIjoiKTsKICAgICAgICAgICAgIGlmIChzcGxpdFBvcyAhPSAtMSkKLSAg
ICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChjYXB0dXJlZEhlYWRl
ci5zdHJpbmcoKS5sZWZ0KHNwbGl0UG9zKSwgY2FwdHVyZWRIZWFkZXIuc3RyaW5nKCkuc3Vic3Ry
aW5nKHNwbGl0UG9zICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgICAgICAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGhlYWRlci5zdHJpbmcoKS5sZWZ0KHNwbGl0UG9z
KSwgaGVhZGVyLnN0cmluZygpLnN1YnN0cmluZyhzcGxpdFBvcyArIDEpLnN0cmlwV2hpdGVTcGFj
ZSgpKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFTeW5jLmNwcAppbmRleCBiNWNjZjViYTM5OGQzM2IzMzk1NGU1NDI1MWU0NGEwYTliMzU4
MDJlLi41MjRmYTI2ZGZkMzc1MzhlZTFlOGU0N2UwMjA2ZjI0ZWMyNThkMDU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtNTE0LDEwICs1MTQsOCBAQCB2
b2lkIFN0b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCiAgICAgICAgIHF1ZXJ5
LmZpbmFsaXplKCk7CiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKICAgICAgICAgaWYgKFN0
b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuaXNBY3RpdmUoKSkgewotICAgICAgICAgICAgU3RyaW5n
SW1wbCogZGF0YWJhc2VJZGVudGlmaWVyQ29weSA9ICZtX2RhdGFiYXNlSWRlbnRpZmllci5pbXBs
KCktPmlzb2xhdGVkQ29weSgpLmxlYWtSZWYoKTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2RhdGFiYXNlSWRlbnRpZmllckNvcHldIHsKLSAgICAgICAgICAgICAgICBTdG9yYWdlVHJh
Y2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRp
ZmllckNvcHkpOwotICAgICAgICAgICAgICAgIGRhdGFiYXNlSWRlbnRpZmllckNvcHktPmRlcmVm
KCk7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkYXRhYmFzZUlkZW50aWZpZXIgPSBt
X2RhdGFiYXNlSWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgICAgIFN0
b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luV2l0aElkZW50aWZpZXIoZGF0YWJh
c2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgU3RyaW5nIGRhdGFiYXNlRmlsZW5hbWUgPSBtX3N5bmNNYW5hZ2VyLT5mdWxsRGF0YWJh
c2VGaWxlbmFtZShtX2RhdGFiYXNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDAzNmQ2YmE2OTZmMDA4OGNjZjc0ZDZhYWE1
OWYzY2ExNjI5OGQzYzAuLjNlMWYxYzQwMmFkYmJlMmZlYmE4ODU1OGNiNWYwNGNlNDgxYjUwYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC02
MywxMyArNjMsMTMgQEAgU3RyaW5nIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZnVsbERhdGFiYXNlRmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIKICAgICByZXR1cm4gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJhc2VJZGVudGlmaWVyICsgIi5sb2NhbHN0
b3JhZ2UiKTsKIH0KIAotdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKGNvbnN0IHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKQordm9pZCBTdG9yYWdlU3luY01hbmFnZXI6
OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3RocmVhZCk7CiAKICAgICBpZiAobV90aHJl
YWQpCi0gICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChmdW5jdGlvbik7CisgICAgICAgIG1fdGhy
ZWFkLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVN5bmNN
YW5hZ2VyOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2Vy
LmgKaW5kZXggMDI4NzcyMTA1ZjIyZGEzMjk1MDMwNTNkOWRiYjU0MWI5M2Y3OTM5OC4uZWRkNzE3
ZGU1YmY3MjcwZDI3NzliYTBlOTI1ZGZjNTRjNWZmOGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
NDIsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlU3luY01hbmFnZXI+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIH5TdG9yYWdlU3luY01hbmFnZXIoKTsK
IAotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYpOworICAg
IHZvaWQgZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbiYmKTsKICAgICB2b2lkIGNsb3NlKCk7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXgg
OGNhOGJjZWQ4MDk4MjJmZjY2N2UzZDMxZWI3Mjk0NjBkZGVkZmQxNC4uNjI4NDBkMmU3NzUyNzE0
MDQyZTIwNTg5OWYyZGY2OGFhY2Q2Y2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
VGhyZWFkLmNwcApAQCAtNzQsMTEgKzc0LDExIEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGhyZWFk
RW50cnlQb2ludCgpCiAgICAgfQogfQogCi12b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKGNv
bnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKQordm9pZCBTdG9yYWdlVGhyZWFk
OjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJl
YWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+PihmdW5jdGlvbikpOworICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8Tm9uY29weWFibGVGdW5jdGlvbj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogdm9pZCBT
dG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFN0b3JhZ2VU
aHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAgaWYgKCFtX3RocmVhZElEKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4+KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxOb25j
b3B5YWJsZUZ1bmN0aW9uPihbdGhpc10gewogICAgICAgICBwZXJmb3JtVGVybWluYXRlKCk7CiAg
ICAgfSkpOwogICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fdGhyZWFkSUQpOwpAQCAtMTA4
LDggKzEwOCwxMSBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1l
bW9yeUluQWxsVGhyZWFkcygpCiB7CiAgICAgSGFzaFNldDxTdG9yYWdlVGhyZWFkKj4mIHRocmVh
ZHMgPSBhY3RpdmVTdG9yYWdlVGhyZWFkcygpOwogCi0gICAgZm9yIChIYXNoU2V0PFN0b3JhZ2VU
aHJlYWQqPjo6aXRlcmF0b3IgaXQgPSB0aHJlYWRzLmJlZ2luKCksIGVuZCA9IHRocmVhZHMuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPmRpc3BhdGNoKFdURjo6cmVsZWFz
ZUZhc3RNYWxsb2NGcmVlTWVtb3J5KTsKKyAgICBmb3IgKEhhc2hTZXQ8U3RvcmFnZVRocmVhZCo+
OjppdGVyYXRvciBpdCA9IHRocmVhZHMuYmVnaW4oKSwgZW5kID0gdGhyZWFkcy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgICgqaXQpLT5kaXNwYXRjaChbXSgpIHsKKyAgICAgICAg
ICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CisgICAgICAgIH0pOworICAg
IH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgKaW5kZXggZGY1MmFj
NjEyMWM4NDY2ZDQ4NmU0YTRkYzllZjNhNGUyODg3M2ZlNS4uZGNlNWNjZmNkM2NhNjJiMWMwODc2
ZmMzNGQ5MmRmNmYwMjBkZmY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0
b3JhZ2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5o
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0YXJ0KCk7CiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsK
IAotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+Jik7CisgICAg
dm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uJiYpOwogCiAgICAgc3RhdGljIHZvaWQg
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKQEAgLTU5LDcgKzU5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1UZXJtaW5hdGUoKTsKIAogICAgIFRocmVh
ZElkZW50aWZpZXIgbV90aHJlYWRJRDsKLSAgICBNZXNzYWdlUXVldWU8c3RkOjpmdW5jdGlvbjx2
b2lkKCk+PiBtX3F1ZXVlOworICAgIE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPiBt
X3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggOGQ4MGQ0ZGQwNjY0OWUzYzBkYjMzYzQ4MGY3Mjk1
YWYyMDFjNmYzZi4uOWIzNmE3M2VmODc2NzQwZDNkYjQzZTFhOTM4ZjlmYTliYjVmMmE2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yOTMsOSArMjkzLDgg
QEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2Uo
KQogICAgICAgICBpZiAoZm91bmRPcmlnaW5zLmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXJD
b3B5ID0gb3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgb3JpZ2luSWRlbnRpZmllckNvcHldIHsKLSAgICAgICAgICAgIGRlbGV0
ZU9yaWdpbldpdGhJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXJDb3B5KTsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbklkZW50aWZpZXIu
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgIGRlbGV0ZU9yaWdpbldpdGhJZGVudGlmaWVy
KG9yaWdpbklkZW50aWZpZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0zMTQsMTkgKzMx
MywxNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaQogICAgICAgICBtX29yaWdpblNldC5hZGQo
b3JpZ2luSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXJD
b3B5ID0gb3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKTsKLSAgICBTdHJpbmcgZGF0YWJh
c2VGaWxlQ29weSA9IGRhdGFiYXNlRmlsZS5pc29sYXRlZENvcHkoKTsKLSAgICBhdXRvIGZ1bmN0
aW9uID0gW3RoaXMsIG9yaWdpbklkZW50aWZpZXJDb3B5LCBkYXRhYmFzZUZpbGVDb3B5XSB7Ci0g
ICAgICAgIHN5bmNTZXRPcmlnaW5EZXRhaWxzKG9yaWdpbklkZW50aWZpZXJDb3B5LCBkYXRhYmFz
ZUZpbGVDb3B5KTsKKyAgICBhdXRvIGZ1bmN0aW9uID0gW3RoaXMsIG9yaWdpbklkZW50aWZpZXIg
PSBvcmlnaW5JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBkYXRhYmFzZUZpbGUgPSBkYXRhYmFz
ZUZpbGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3Jp
Z2luSWRlbnRpZmllciwgZGF0YWJhc2VGaWxlKTsKICAgICB9OwogCiAgICAgaWYgKGlzTWFpblRo
cmVhZCgpKSB7CiAgICAgICAgIEFTU0VSVChtX3RocmVhZCk7Ci0gICAgICAgIG1fdGhyZWFkLT5k
aXNwYXRjaChmdW5jdGlvbik7CisgICAgICAgIG1fdGhyZWFkLT5kaXNwYXRjaChXVEZNb3ZlKGZ1
bmN0aW9uKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgd2VpcmQgcGlu
Zy1wb25naW5nIHdhcyBkb25lIHRvIGZpeCBhIGRlYWRsb2NrLiBXZSBzaG91bGQgZmlndXJlIG91
dCBhIGNsZWFuZXIgd2F5IHRvIGF2b2lkIGl0IGluc3RlYWQuCi0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIGZ1bmN0aW9uXSB7Ci0gICAgICAgICAgICBtX3RocmVhZC0+ZGlzcGF0Y2go
ZnVuY3Rpb24pOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBmdW5jdGlvbiA9IFdU
Rk1vdmUoZnVuY3Rpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV90aHJlYWQtPmRpc3Bh
dGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpp
bmRleCBkZWI0ZTQxMmYyYzg3NzVmMjNkMWY2ZTJjNzNlYmZlODY0MmMyMWFhLi5hM2VjOTljZTAx
ZGRlOGNhZDllMDMzMTM1YTUyNTI0YjAyODUxNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtMTAzLDIwICsx
MDMsMTkgQEAgY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGll
bnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgewotICAgICAgICBEaWRNb2RpZnlPcmln
aW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4t
Pmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0gewor
ICAgICAgICBhdXRvIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlmeU9yaWdpbkRh
dGE+KGNsaWVudCwgb3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAgICBjb250ZXh0
LT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdpbi5nZXQoKSk7
Ci0gICAgICAgICAgICBkZWxldGUgY29udGV4dDsKICAgICAgICAgfSk7CiAgICAgfQogCi1wcml2
YXRlOgogICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBj
bGllbnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKICAgICAgICAgOiBjbGll
bnQoY2xpZW50KQogICAgICAgICAsIG9yaWdpbihvcmlnaW4pCiAgICAgewogICAgIH0KIAorcHJp
dmF0ZToKICAgICBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudDsKICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tlckNsaWVudC5tbQppbmRleCA3ZTVkOTkxODE5MzcwMzNm
NThkNDkyMzY4ZTRkOWRlNmExZTYyMTc1Li5kNjgwYmM0NTdkMWJjOWE4NjM0M2U0NTc1OWM3M2Q4
MzgyYmY5YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3Jh
Z2VUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU3Rv
cmFnZVRyYWNrZXJDbGllbnQubW0KQEAgLTU4LDE1ICs1OCwxNSBAQCB2b2lkIFdlYlN0b3JhZ2VU
cmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPgogCiB2b2lkIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwog
CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoRGlkTW9kaWZ5T3Jp
Z2luKG9yaWdpbik7CisgICAgICAgIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdURk1vdmUob3Jp
Z2luKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtv
cmlnaW5dIHsKLSAgICAgICAgV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3Jh
Z2VUcmFja2VyQ2xpZW50KCktPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbi5nZXQoKSk7
CisgICAgY2FsbE9uTWFpblRocmVhZChbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4pXSgpIG11dGFi
bGUgeworICAgICAgICBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViU3RvcmFnZVRy
YWNrZXJDbGllbnQoKS0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV1RGTW92ZShvcmlnaW4pKTsK
ICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>