<?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>140881</bug_id>
          
          <creation_ts>2015-01-26 01:13:31 -0800</creation_ts>
          <short_desc>[WK2] Replace AsyncTask with C++ lambdas</short_desc>
          <delta_ts>2017-09-25 01:23:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>jsbell</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064110</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-01-26 01:13:31 -0800</bug_when>
    <thetext>[WK2] Replace AsyncTask with C++ lambdas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064111</commentid>
    <comment_count>1</comment_count>
      <attachid>245332</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-01-26 01:16:33 -0800</bug_when>
    <thetext>Created attachment 245332
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064126</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-26 03:48:55 -0800</bug_when>
    <thetext>Attachment 245332 did not pass style-queue:


ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:352:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:1349:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:1371:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:1388:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:1414:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:122:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:135:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:208:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/WebCore.exp.in:0:  Source/WebCore/WebCore.exp.in should be sorted, use Tools/Scripts/sort-export-file script  [list/order] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:171:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 13 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>1064517</commentid>
    <comment_count>3</comment_count>
      <attachid>245332</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-27 08:13:52 -0800</bug_when>
    <thetext>Comment on attachment 245332
WIP

Is this really wip? what&apos;s missing? EWS is green for all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065186</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-29 01:12:00 -0800</bug_when>
    <thetext>Darin, Anders, what do you think about this? it makes the code simpler and more compatible with the compilers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065314</commentid>
    <comment_count>5</comment_count>
      <attachid>245638</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-01-29 12:43:34 -0800</bug_when>
    <thetext>Created attachment 245638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065315</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-29 12:46:09 -0800</bug_when>
    <thetext>Attachment 245638 did not pass style-queue:


ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:352:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:1349:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:1371:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:1388:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:1414:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:110:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:122:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:135:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:208:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/WebCore.exp.in:0:  Source/WebCore/WebCore.exp.in should be sorted, use Tools/Scripts/sort-export-file script  [list/order] [5]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:171:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 15 in 13 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>1065780</commentid>
    <comment_count>7</comment_count>
      <attachid>245638</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-30 22:28:15 -0800</bug_when>
    <thetext>Comment on attachment 245638
Patch

I prefer this style; proofreading all the call sites to makes sure they are all correct is a bit of a challenge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066388</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-03 01:06:07 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 245638 [details]
&gt; Patch
&gt; 
&gt; I prefer this style; proofreading all the call sites to makes sure they are
&gt; all correct is a bit of a challenge.

I have reviewed them and everything looks correct. Mac EWS would have caught any issue anyway, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067527</commentid>
    <comment_count>9</comment_count>
      <attachid>245638</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-07 08:03:39 -0800</bug_when>
    <thetext>Comment on attachment 245638
Patch

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

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:305
&gt; +    IDBIdentifier capturedIdentifier(transactionIdentifier.isolatedCopy());

This idiom isn’t great. right now, the isolatedCopy function does nothing special. If it did, we still might have a race condition on deref like the one we have in String, so isolatedCopy might be insufficient. I’m not sure it’s all that helpful to write the code this way instead of just using straight construction; it’s not really future proof to have a function need isolatedCopy.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:416
&gt; +    IDBIdentifier capturedIdentifier = transactionIdentifier.isolatedCopy();

Strange that this uses &quot;=&quot; syntax where the other call sites use construction syntax. I don’t have a strong preference, but I do prefer consistency.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:650
&gt; +    IDBObjectStoreMetadata capturedMetadata(m_metadata-&gt;objectStores.get(objectStoreID).isolatedCopy());

This won’t work. We have a race condition where the main thread will deref capturedMetadata.name and the database task thread will also deref it. And String does not have a thread-safe reference count.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:651
&gt; +    IDBKeyData capturedKeyData(keyData.isolatedCopy());

Same problem here with capturedKeyData.stringValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097216</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-25 00:08:15 -0700</bug_when>
    <thetext>This no longer blocks #98932 , since we bumped GCC requirements in the end, but I think it would still be desirable if we manage to fix the thread-safety issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352153</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-25 01:23:40 -0700</bug_when>
    <thetext>AsyncTask doesn&apos;t exist anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245332</attachid>
            <date>2015-01-26 01:16:33 -0800</date>
            <delta_ts>2015-01-29 12:43:27 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-140881-20150126101634.patch</filename>
            <type>text/plain</type>
            <size>77879</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJiMzRkYTczNGZjMGY2
YjI1YWJiYTAyMmQ2NDBhMWZhMDI5ZGMzZS4uZDhhYmE5MDU4ODQ5M2FmNzU4MTMzYWM0NzMxMmJh
ODU1YTJlNWNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAxLTI2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBSZXBsYWNl
IEFzeW5jVGFzayB3aXRoIEMrKyBsYW1iZGFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4TWV0YWRhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlEYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlTWV0YWRhdGEuaDoKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aDoKKwogMjAxNS0wMS0yNSAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTG9uZyBzcGlucyB1bmRlciBGcmFtZTo6cmFuZ2VGb3JQb2ludCB3aGVu
IGRvaW5nIExvb2t1cCBvbiBmZWVkbHkuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhiMmU4MmM0OTgxMDg2
ZDE2YTI0MTUxYjRjMzkyZmYwZGYzOTgxNy4uOWUxZWNiMzBhNmNiOTA2YTRkMmE0Y2EwMzQxYmJj
ODRhNTkxN2Y5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE1LTAxLTI2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBSZXBsYWNl
IEFzeW5jVGFzayB3aXRoIEMrKyBsYW1iZGFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmVuc3VyZUluZGV4ZWREYXRhYmFz
ZVJlbGF0aXZlUGF0aEV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6
cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6cGVy
Zm9ybU5leHREYXRhYmFzZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6
OmdldE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUVu
dHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0
ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNl
UHJvY2Vzczo6ZGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5oOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6
c2h1dGRvd24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25C
YWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0T3JF
c3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURC
RGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6VW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpyb2xsYmFja1RyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24pOgorICAg
ICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJ
REJEYXRhYmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3Vy
c29yQWR2YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JJ
dGVyYXRlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAg
KFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpbkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdEJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6OnJlc2V0QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZTo6cm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb25JbkJhY2tp
bmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmpl
Y3RTdG9yZUluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpV
bmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4SW5CYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXhJbkJhY2tp
bmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJ
bkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRS
ZWNvcmRGcm9tQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6Om9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlE
QkRhdGFiYXNlOjphZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNvdW50SW5CYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2VJbkJhY2tpbmdTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0TWFpblRocmVhZFRh
c2spOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHRNYWlu
VGhyZWFkVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0
YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1O
ZXh0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1Vu
aXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FzeW5jVGFzay5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0w
MS0yNSAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXNwb25zaXZlIFdlYiBwcm9jZXNzZXMgc29tZXRpbWVzIHRocm93IE9iakMgZXhjZXB0
aW9ucyB1bmRlciBkaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3Q6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleE1ldGFkYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleE1ldGFkYXRhLmgKaW5kZXggYjdmYzEw
NDUzMTZjYTA5OTRlNThlZDgwMzI1YWRkM2RlMGRhZWZmNi4uNjM0NjcxOTcwYzIxYmFjNjNjYWE4
ODkyMThmZjliNTIzMGQwZTZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXhNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4TWV0YWRhdGEuaApAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgSURC
SW5kZXhNZXRhZGF0YSB7CiAgICAgYm9vbCB1bmlxdWU7CiAgICAgYm9vbCBtdWx0aUVudHJ5Owog
Ci0gICAgSURCSW5kZXhNZXRhZGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBJREJJbmRleE1ldGFkYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgc3Rh
dGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gLTE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCmluZGV4IGQ3MjY1YmU0OGI3NzBiNDc2OTQz
MDZiODZjMTg0MTUxN2UyNGZhYWYuLmM3NWYxMWI1NGJlM2ZmMjEwNmIyODE5Y2I5OGNmZWExODkz
ZjFhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRh
LmgKQEAgLTYzLDcgKzYzLDcgQEAgc3RydWN0IElEQktleURhdGEgewogCiAgICAgV0VCQ09SRV9F
WFBPUlQgUGFzc1JlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3Q7CiAKLSAg
ICBJREJLZXlEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElE
QktleURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGVuY29kZShLZXllZEVuY29kZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgSURCS2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oCmluZGV4IDExYjJiMTk3NzcxYWRmZDk5
YzUyZjYwZDMwNmFlMTUxOGVjYjhmZGEuLjAwZDAzMjQ2MTA4ZTllY2FjMDkwYjMzYmQxNGVlNmJj
NDg3ZmI0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQ
YXRoLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJLZXlQYXRoJiBvdGhlcikgY29uc3Q7CiAK
LSAgICBJREJLZXlQYXRoIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IElEQktleVBhdGggaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGVuY29kZShLZXllZEVuY29kZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgSURCS2V5UGF0aCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuaAppbmRleCA1NmNm
NDYxNzkyNjIzZTk5NjQ0YmFkNzNmYzEwMjAyMjI0MjQ5NzY4Li5iNjg5OWE5MjZiZDI4Nzg3NGU3
MzBkYjU0MGE0NTE4NTI5YjY0NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgSURC
S2V5UmFuZ2VEYXRhIHsKICAgICAgICAgdXBwZXJPcGVuID0ga2V5UmFuZ2UtPnVwcGVyT3Blbigp
OwogICAgIH0KIAotICAgIElEQktleVJhbmdlRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBJREJLZXlSYW5nZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBtYXliZUNyZWF0ZUlE
QktleVJhbmdlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlTWV0YWRhdGEuaAppbmRleCA1OWFjMGE5MmI3NzQy
ZDE1NWIxZWQwYzQ3ODQyOTAyMTkwYmYyMDYyLi5hYjE5ZTM4ZGJkM2Q1NWI1NmE4NTIxNDFlOTBm
NDRmYmVkOTM2N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVNZXRhZGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHN0cnVj
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwg
SURCSW5kZXhNZXRhZGF0YT4gSW5kZXhNYXA7CiAgICAgSW5kZXhNYXAgaW5kZXhlczsKIAotICAg
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZGRiYTQ4
ZmI1ODZiOWIwY2Y3NGExODU4MGMxNjJhNzUxZDg0MjU2Yy4uZDgzNzhmYjQ0MTY3NTIyYTIyZmJh
ZWE4NzU4YjhhZWE4OTdiZDY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE3MjQsNiArMTcy
NCw3IEBAIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjExZ2V0U29tZURhdGFFUlBLY2oKIF9f
Wk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjE1aGFzUGxhdGZvcm1EYXRhRXYKIF9fWk5LN1dlYkNv
cmUxMlNoYXJlZEJ1ZmZlcjRkYXRhRXYKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRzaXpl
RXYKK19fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRjb3B5RXYKIF9fWk5LN1dlYkNvcmUxMlRl
eHRFbmNvZGluZzZkZWNvZGVFUEtjbWJSYgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9yNG5v
ZGVFdgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9yNXJhbmdlRXYKQEAgLTMyMjMsMTEgKzMy
MjQsMTYgQEAgX19aTjdXZWJDb3JlNklEQktleUQxRXYKIF9fWk5LN1dlYkNvcmUxMElEQktleURh
dGExN21heWJlQ3JlYXRlSURCS2V5RXYKIF9fWk5LN1dlYkNvcmUxMElEQktleURhdGE2ZW5jb2Rl
RVJOU18xMktleWVkRW5jb2RlckUKIF9fWk5LN1dlYkNvcmUxMElEQktleURhdGE3Y29tcGFyZUVS
S1MwXworX19aTks3V2ViQ29yZTEwSURCS2V5RGF0YTEyaXNvbGF0ZWRDb3B5RXYKIF9fWk5LN1dl
YkNvcmUxMElEQktleVBhdGg2ZW5jb2RlRVJOU18xMktleWVkRW5jb2RlckUKK19fWk5LN1dlYkNv
cmUxMElEQktleVBhdGgxMmlzb2xhdGVkQ29weUV2CiBfX1pOSzdXZWJDb3JlMTFJREJLZXlSYW5n
ZTlpc09ubHlLZXlFdgogX19aTks3V2ViQ29yZTE1SURCS2V5UmFuZ2VEYXRhMTVpc0V4YWN0bHlP
bmVLZXlFdgogX19aTks3V2ViQ29yZTE1SURCS2V5UmFuZ2VEYXRhMjJtYXliZUNyZWF0ZUlEQktl
eVJhbmdlRXYKK19fWk5LN1dlYkNvcmUxNUlEQktleVJhbmdlRGF0YTEyaXNvbGF0ZWRDb3B5RXYK
IF9fWk5LN1dlYkNvcmU2SURCS2V5N2lzVmFsaWRFdgorX19aTks3V2ViQ29yZTE2SURCSW5kZXhN
ZXRhZGF0YTEyaXNvbGF0ZWRDb3B5RXYKK19fWk5LN1dlYkNvcmUyMklEQk9iamVjdFN0b3JlTWV0
YWRhdGExMmlzb2xhdGVkQ29weUV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKSAmJiAhZGVmaW5lZChOREVCVUcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCmluZGV4IGUwNmE5OTU1ZjM0NDg5MmFiYWM0YmQ1ZGRjYTc2YjhmMjJjNDA4ZDYuLjM3ZTQw
NmM1NThlZWZkZGI0YThmZDFiODlmYzlmNmE1OWE1ODFjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKENGRGF0YVJlZik7CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNvcHkoKSBjb25zdDsKICAgICAKICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBjb25z
ZWN1dGl2ZSBieXRlcyBhZnRlciAicG9zaXRpb24iLiAiZGF0YSIKICAgICAvLyBwb2ludHMgdG8g
dGhlIGZpcnN0IGJ5dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IDg1YTkwMDA4NzlkNDI4ZjRiNzVlMmYwNzMyYmZmYTcy
Y2RiNTE0ZmQuLjYyY2ZhNzMzNTdkNTVhOWI5MWY3MDQxNmI2OWZlZTk0NjRmYzM3NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIAotI2lu
Y2x1ZGUgIkFzeW5jVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgpAQCAtMTMxLDcgKzEzMCwxMCBAQCB2
b2lkIERhdGFiYXNlUHJvY2Vzczo6aW5pdGlhbGl6ZURhdGFiYXNlUHJvY2Vzcyhjb25zdCBEYXRh
YmFzZVByb2Nlc3NDcmVhdGlvblBhcgogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZW5zdXJlSW5k
ZXhlZERhdGFiYXNlUmVsYXRpdmVQYXRoRXhpc3RzKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRo
KQogewotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmRGF0YWJh
c2VQcm9jZXNzOjplbnN1cmVQYXRoRXhpc3RzLCBhYnNvbHV0ZUluZGV4ZWREYXRhYmFzZVBhdGhG
cm9tRGF0YWJhc2VSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoKSkpOworICAgIFN0cmluZ0NhcHR1
cmUgY2FwdHVyZWRQYXRoKGFic29sdXRlSW5kZXhlZERhdGFiYXNlUGF0aEZyb21EYXRhYmFzZVJl
bGF0aXZlUGF0aChyZWxhdGl2ZVBhdGgpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKFt0aGlzLCBj
YXB0dXJlZFBhdGhdIHsKKyAgICAgICAgZW5zdXJlUGF0aEV4aXN0cyhjYXB0dXJlZFBhdGguc3Ry
aW5nKCkpOworICAgIH0pOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZW5zdXJlUGF0aEV4
aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCkBAIC0xNDksNyArMTUxLDcgQEAgU3RyaW5nIERhdGFi
YXNlUHJvY2Vzczo6YWJzb2x1dGVJbmRleGVkRGF0YWJhc2VQYXRoRnJvbURhdGFiYXNlUmVsYXRp
dmVQYXRoKGNvbnMKICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1faW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5LCByZWxhdGl2ZVBhdGgpOwogfQogCi12b2lkIERhdGFiYXNlUHJv
Y2Vzczo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrKQor
dm9pZCBEYXRhYmFzZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2soc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiB0YXNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE2Niwx
NCArMTY4LDE0IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwZXJmb3JtTmV4dERhdGFiYXNlVGFz
aygpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXN5bmNUYXNrPiB0YXNrOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gdGFzazsK
ICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsK
ICAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlVGFza3MuaXNFbXB0eSgpKTsKICAgICAgICAgdGFz
ayA9IG1fZGF0YWJhc2VUYXNrcy50YWtlRmlyc3QoKTsKICAgICB9CiAKLSAgICB0YXNrLT5wZXJm
b3JtVGFzaygpOworICAgIHRhc2soKTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmNyZWF0
ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpCkBAIC0yOTIsOSArMjk0LDkgQEAgdm9p
ZCBEYXRhYmFzZVByb2Nlc3M6OmdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvc3RE
YXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2s+KFtjb21wbGV0aW9uLCB0aGlz
XSB7CisgICAgcG9zdERhdGFiYXNlVGFzayhbdGhpcywgY29tcGxldGlvbl0gewogICAgICAgICBj
b21wbGV0aW9uKGdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMoKSk7Ci0gICAgfSkpOworICAgIH0p
OwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09y
aWdpbkRhdGFUeXBlcyB0eXBlcywgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbikKQEAgLTMwNCwxMCArMzA2LDEwIEBAIHZv
aWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5
cGVzIHR5cGVzLCBjb25zdCBTZWN1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0
RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywgb3JpZ2luLCBj
b21wbGV0aW9uXSB7CisgICAgcG9zdERhdGFiYXNlVGFzayhbdGhpcywgb3JpZ2luLCBjb21wbGV0
aW9uXSB7CiAgICAgICAgIGRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmlnaW4ob3Jp
Z2luKTsKICAgICAgICAgY29tcGxldGlvbigpOwotICAgIH0pKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXS09y
aWdpbkRhdGFUeXBlcyB0eXBlcywgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbikKQEAgLTMxNywxMCArMzE5LDEwIEBAIHZv
aWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tP
cmlnaW5EYXRhVHlwZXMgdHlwZXMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0
RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywgc3RhcnREYXRl
LCBlbmREYXRlLCBjb21wbGV0aW9uXSB7CisgICAgcG9zdERhdGFiYXNlVGFzayhbdGhpcywgc3Rh
cnREYXRlLCBlbmREYXRlLCBjb21wbGV0aW9uXSB7CiAgICAgICAgIGRlbGV0ZUluZGV4ZWREYXRh
YmFzZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhzdGFydERhdGUsIGVuZERhdGUpOwogICAg
ICAgICBjb21wbGV0aW9uKCk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiB2b2lkIERhdGFiYXNl
UHJvY2Vzczo6ZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpm
dW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uKQpAQCAtMzMwLDEwICszMzIsMTAgQEAgdm9pZCBE
YXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMs
IHN0ZDo6ZnVuY3Rpb248dm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvc3REYXRh
YmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2s+KFt0aGlzLCBjb21wbGV0aW9uXSB7
CisgICAgcG9zdERhdGFiYXNlVGFzayhbdGhpcywgY29tcGxldGlvbl0gewogICAgICAgICBkZWxl
dGVBbGxJbmRleGVkRGF0YWJhc2VFbnRyaWVzKCk7CiAgICAgICAgIGNvbXBsZXRpb24oKTsKLSAg
ICB9KSk7CisgICAgfSk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKaW5kZXggYjNhZmYyODU5
MTU0ZjlmOWRjYjFiMmZhMWI0MDRkYWQ5MTcyNzQ5ZS4uMGQ4M2UxOThiNTc5MjM2YjBlY2E1NjM2
NWNkNGU3ZGI0MjFjNTQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtMzcsNyArMzcsNiBAQCBjbGFzcyBXb3JrUXVldWU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBc3luY1Rhc2s7CiBjbGFzcyBEYXRhYmFzZVRv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKIGNsYXNzIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyOwpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoZG91YmxlIHN0
YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUpOwogICAgIHZvaWQgZGVsZXRlQWxsSW5kZXhlZERhdGFi
YXNlRW50cmllcygpOwogCi0gICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxBc3luY1Rhc2s+KTsKKyAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjpmdW5jdGlvbjx2
b2lkICgpPik7CiAKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VQcm9jZXNzKCk7CkBAIC0xMDYsNyAr
MTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8VW5pcXVlSURCRGF0YWJhc2VJZGVudGlm
aWVyLCBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+PiBtX2lkYkRhdGFiYXNlczsKIAotICAgIERl
cXVlPHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+PiBtX2RhdGFiYXNlVGFza3M7CisgICAgRGVx
dWU8c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9kYXRhYmFzZVRhc2tzOwogICAgIE11dGV4IG1f
ZGF0YWJhc2VUYXNrTXV0ZXg7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViT3JpZ2luRGF0YU1h
bmFnZXI+IG1fd2ViT3JpZ2luRGF0YU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CmluZGV4IGIzMDEyMjVhMGEwYmJiYzU0YzJiZmJiM2UxMmE4OGYxNTAxNjRmMTYuLjViMWNmNzQx
YTRiN2EwNTFkYTZhNTdmOTFiYTYwMzIzYzMyYmFlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYm
IEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQXN5bmNSZXF1ZXN0LmgiCi0j
aW5jbHVkZSAiQXN5bmNUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb24uaCIKQEAgLTEzOSw3ICsxMzgsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6c2h1
dGRvd24oVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGUgdHlwZSkKICAgICAgICAgbV9kYXRh
YmFzZVRhc2tzLmNsZWFyKCk7CiAgICAgfQogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25CYWNraW5nU3RvcmUs
IHR5cGUsIGFic29sdXRlRGF0YWJhc2VEaXJlY3RvcnkoKSksIERhdGFiYXNlVGFza1R5cGU6OlNo
dXRkb3duKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOwor
ICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWREaXJlY3RvcnkoYWJzb2x1dGVEYXRhYmFzZURpcmVj
dG9yeSgpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgdHlwZSwgY2FwdHVyZWRE
aXJlY3RvcnldIHsKKyAgICAgICAgZGF0YWJhc2UtPnNodXRkb3duQmFja2luZ1N0b3JlKHR5cGUs
IGNhcHR1cmVkRGlyZWN0b3J5LnN0cmluZygpKTsKKyAgICB9LCBEYXRhYmFzZVRhc2tUeXBlOjpT
aHV0ZG93bik7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VEaXJlY3RvcnkpCkBAIC0xNTUsNyArMTU4LDEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnNodXRkb3duQmFja2luZ1N0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlIHR5
cGUsCiAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KTsKICAg
ICB9CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OmRpZFNodXRkb3duQmFja2luZ1N0b3JlLCB0eXBlKSwgRGF0YWJhc2VU
YXNrVHlwZTo6U2h1dGRvd24pOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJh
c2UodGhpcyk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgdHlwZV0geworICAg
ICAgICBkYXRhYmFzZS0+ZGlkU2h1dGRvd25CYWNraW5nU3RvcmUodHlwZSk7CisgICAgfSwgRGF0
YWJhc2VUYXNrVHlwZTo6U2h1dGRvd24pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRTaHV0ZG93bkJhY2tpbmdTdG9yZShVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSB0eXBl
KQpAQCAtMjQ2LDggKzI1MiwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRPckVzdGFi
bGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoc3RkOjpmdW5jdGlvbjx2b2lkIChibwogCiAgICAgbV9w
ZW5kaW5nTWV0YWRhdGFSZXF1ZXN0cy5hcHBlbmQocmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAg
aWYgKHNob3VsZE9wZW5CYWNraW5nU3RvcmUpCi0gICAgICAgIHBvc3REYXRhYmFzZVRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVB
bmRSZWFkTWV0YWRhdGEsIG1faWRlbnRpZmllciwgYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSgp
KSk7CisgICAgaWYgKHNob3VsZE9wZW5CYWNraW5nU3RvcmUpIHsKKyAgICAgICAgUmVmUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICAgICAgVW5pcXVlSURCRGF0YWJh
c2VJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcihtX2lkZW50aWZpZXIuaXNvbGF0ZWRDb3B5
KCkpOworICAgICAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkRGlyZWN0b3J5KGFic29sdXRlRGF0
YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2soW2RhdGFiYXNlLCBj
YXB0dXJlZElkZW50aWZpZXIsIGNhcHR1cmVkRGlyZWN0b3J5XSB7CisgICAgICAgICAgICBkYXRh
YmFzZS0+b3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YShjYXB0dXJlZElkZW50aWZpZXIs
IGNhcHR1cmVkRGlyZWN0b3J5LnN0cmluZygpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlQW5kUmVhZE1ldGFkYXRhKGNv
bnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZURpcmVjdG9yeSkKQEAgLTI2Myw3ICsyNzUsMTIgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVbmlxdWVJREJE
YXRhYmFzZUkKICAgICBtX2JhY2tpbmdTdG9yZSA9IFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0
b3JlU1FMaXRlOjpjcmVhdGUoaWRlbnRpZmllciwgZGF0YWJhc2VEaXJlY3RvcnkpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZU1ldGFkYXRhPiBtZXRhZGF0YSA9IG1fYmFja2luZ1N0
b3JlLT5nZXRPckVzdGFibGlzaE1ldGFkYXRhKCk7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2so
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5n
U3RvcmVBbmRSZWFkTWV0YWRhdGEsIG1ldGFkYXRhID8gKm1ldGFkYXRhIDogSURCRGF0YWJhc2VN
ZXRhZGF0YSgpLCAhIW1ldGFkYXRhKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBk
YXRhYmFzZSh0aGlzKTsKKyAgICBhdXRvKiBtZXRhZGF0YVB0ciA9IG1ldGFkYXRhLnJlbGVhc2Uo
KTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCBtZXRhZGF0YVB0cl0geworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VNZXRhZGF0YT4gbWV0YWRhdGEobWV0YWRh
dGFQdHIpOworICAgICAgICBkYXRhYmFzZS0+ZGlkT3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRh
ZGF0YShtZXRhZGF0YSA/ICptZXRhZGF0YSA6IElEQkRhdGFiYXNlTWV0YWRhdGEoKSwgISFtZXRh
ZGF0YSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNr
aW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEoY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRh
dGEsIGJvb2wgc3VjY2VzcykKQEAgLTI4NCwzMCArMzAxLDU1IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEoY29uc3QgSURCRGF0YWJh
c2VNZXRhCiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5UcmFuc2FjdGlvbihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJRHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBwb3N0VHJhbnNh
Y3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSURzLCBtb2RlKSwgc3VjY2Vzc0NhbGxiYWNr
KTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOworICAgIElE
QklkZW50aWZpZXIgY2FwdHVyZWRJZGVudGlmaWVyKHRyYW5zYWN0aW9uSWRlbnRpZmllci5pc29s
YXRlZENvcHkoKSk7CisgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwKKyAgICAgICAgW2RhdGFiYXNlLCBjYXB0dXJlZElkZW50aWZpZXIsIG9iamVjdFN0
b3JlSURzLCBtb2RlXSB7CisgICAgICAgICAgICBkYXRhYmFzZS0+b3BlbkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKGNhcHR1cmVkSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRHMsIG1vZGUpOworICAg
ICAgICB9LCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2sp
CiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luQmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7
CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJ
ZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCkpOworICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50
aWZpZXIsCisgICAgICAgIFtkYXRhYmFzZSwgY2FwdHVyZWRJZGVudGlmaWVyXSB7CisgICAgICAg
ICAgICBkYXRhYmFzZS0+YmVnaW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjYXB0dXJlZElkZW50
aWZpZXIpOworICAgICAgICB9LCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSk7CiB9CiAKIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3Vj
Y2Vzc0NhbGxiYWNrKQogewotICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpj
b21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3Vj
Y2Vzc0NhbGxiYWNrKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRo
aXMpOworICAgIElEQklkZW50aWZpZXIgY2FwdHVyZWRJZGVudGlmaWVyKHRyYW5zYWN0aW9uSWRl
bnRpZmllci5pc29sYXRlZENvcHkoKSk7CisgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwKKyAgICAgICAgW2RhdGFiYXNlLCBjYXB0dXJlZElkZW50aWZp
ZXJdIHsKKyAgICAgICAgICAgIGRhdGFiYXNlLT5jb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bihjYXB0dXJlZElkZW50aWZpZXIpOworICAgICAgICB9LCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxi
YWNrKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0VHJhbnNhY3Rpb24oY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0
aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OnJlc2V0QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRl
bnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0
cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3RUcmFuc2FjdGlv
bk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsCisgICAgICAgIFtkYXRhYmFzZSwgY2Fw
dHVyZWRJZGVudGlmaWVyXSB7CisgICAgICAgICAgICBkYXRhYmFzZS0+cmVzZXRCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbihjYXB0dXJlZElkZW50aWZpZXIpOworICAgICAgICB9LCBXVEY6Om1vdmUo
c3VjY2Vzc0NhbGxiYWNrKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNr
VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgcG9zdFRy
YW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrQmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgUmVmUHRy
PFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNh
cHR1cmVkSWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsCisgICAg
ICAgIFtkYXRhYmFzZSwgY2FwdHVyZWRJZGVudGlmaWVyXSB7CisgICAgICAgICAgICBkYXRhYmFz
ZS0+cm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjYXB0dXJlZElkZW50aWZpZXIpOwor
ICAgICAgICB9LCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2ss
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gdGFzaywgc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM3MCw3ICs0MTIsMTEgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWQKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsK
ICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFz
ZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2luZ1N0b3JlLCByZXF1
ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbmV3VmVyc2lvbikpOworICAgIFJlZlB0cjxV
bmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0
dXJlZElkZW50aWZpZXIgPSB0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgcG9zdERhdGFiYXNlVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlm
aWVyLCBuZXdWZXJzaW9uXSB7CisgICAgICAgIGRhdGFiYXNlLT5jaGFuZ2VEYXRhYmFzZVZlcnNp
b25JbkJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwgbmV3VmVyc2lv
bik7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZENoYW5nZURhdGFi
YXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKQEAgLTQzNiw3ICs0
ODIsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGkKICAgICB1aW50NjRfdCByZXF1ZXN0SUQg
PSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChy
ZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3Jl
SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtZXRhZGF0
YSkpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAg
SURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlz
b2xhdGVkQ29weSgpKTsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIGNhcHR1cmVkTWV0YWRh
dGEobWV0YWRhdGEuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soW2RhdGFi
YXNlLCByZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwgY2FwdHVyZWRNZXRhZGF0YV0gewor
ICAgICAgICBkYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZShyZXF1ZXN0
SUQsIGNhcHR1cmVkSWRlbnRpZmllciwgY2FwdHVyZWRNZXRhZGF0YSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCkBAIC00NjMsNyArNTE0LDEx
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVx
dWVzdC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVz
dElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUluQmFj
a2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJ
RCkpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAg
SURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlz
b2xhdGVkQ29weSgpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElE
LCBjYXB0dXJlZElkZW50aWZpZXIsIG9iamVjdFN0b3JlSURdIHsKKyAgICAgICAgZGF0YWJhc2Ut
PmRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBjYXB0dXJlZElkZW50
aWZpZXIsIG9iamVjdFN0b3JlSUQpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiBzdWNjZXNzQ2FsbGJhY2spCkBAIC00ODYsNyArNTQxLDExIEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAg
ICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2Uo
KSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKSk7CisgICAgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVk
SWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBv
c3REYXRhYmFzZVRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwg
b2JqZWN0U3RvcmVJRF0geworICAgICAgICBkYXRhYmFzZS0+Y2xlYXJPYmplY3RTdG9yZUluQmFj
a2luZ1N0b3JlKHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCkBAIC01MjAsNyArNTc5LDEyIEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQo
KTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVs
ZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBtZXRhZGF0YSkpOworICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmll
ciBjYXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
KTsKKyAgICBJREJJbmRleE1ldGFkYXRhIGNhcHR1cmVkTWV0YWRhdGEobWV0YWRhdGEuaXNvbGF0
ZWRDb3B5KCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SUQsIGNh
cHR1cmVkSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwgY2FwdHVyZWRNZXRhZGF0YV0geworICAg
ICAgICBkYXRhYmFzZS0+Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIGNhcHR1
cmVkSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwgY2FwdHVyZWRNZXRhZGF0YSk7CisgICAgfSk7
CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2
NF90IGluZGV4SUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykK
QEAgLTU1NCw3ICs2MTgsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgo
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgIHVpbnQ2NF90
IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNl
VGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFi
YXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
SW5kZXhJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSUQsIGluZGV4SUQpKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRh
dGFiYXNlKHRoaXMpOworICAgIElEQklkZW50aWZpZXIgY2FwdHVyZWRJZGVudGlmaWVyKHRyYW5z
YWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhb
ZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBp
bmRleElEXSB7CisgICAgICAgIGRhdGFiYXNlLT5kZWxldGVJbmRleEluQmFja2luZ1N0b3JlKHJl
cXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElEKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBj
b25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHZhbHVl
LCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0
IFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+JiBpbmRleEtleXMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgSURCS2V5RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2sp
CkBAIC01NzcsNyArNjQ1LDE1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZChj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGluCiAgICAgdWludDY0
X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5kaW5nRGF0YWJh
c2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAgICBwb3N0RGF0
YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRS
ZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1f
bWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJRCksIGtleURhdGEsIHZhbHVl
LnZlY3RvcigpLCBwdXRNb2RlLCBpbmRleElEcywgaW5kZXhLZXlzKSk7CisgICAgUmVmUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1
cmVkSWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAg
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgY2FwdHVyZWRNZXRhZGF0YShtX21ldGFkYXRhLT5vYmpl
Y3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSUQpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBJREJLZXlE
YXRhIGNhcHR1cmVkS2V5RGF0YShrZXlEYXRhLmlzb2xhdGVkQ29weSgpKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gdmFsdWVWZWN0b3IodmFsdWUudmVjdG9yKCkpOworCisgICAgcG9zdERhdGFiYXNl
VGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBjYXB0dXJlZE1l
dGFkYXRhLCBjYXB0dXJlZEtleURhdGEsIHZhbHVlVmVjdG9yLCBwdXRNb2RlLCBpbmRleElEcywg
aW5kZXhLZXlzXSB7CisgICAgICAgIGRhdGFiYXNlLT5wdXRSZWNvcmRJbkJhY2tpbmdTdG9yZShy
ZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwgY2FwdHVyZWRNZXRhZGF0YSwgY2FwdHVyZWRL
ZXlEYXRhLCB2YWx1ZVZlY3RvciwgcHV0TW9kZSwgaW5kZXhJRHMsIGluZGV4S2V5cyk7CisgICAg
fSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50
NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURC
R2V0UmVzdWx0JiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKQEAgLTYwMCw3
ICs2NzYsMTMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW4KICAgICB1aW50NjRfdCByZXF1ZXN0
SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFk
ZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2so
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21C
YWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtX21ldGFkYXRh
LT5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSUQpLCBpbmRleElELCBrZXlSYW5nZURhdGEs
IGN1cnNvclR5cGUpKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRo
aXMpOworICAgIElEQklkZW50aWZpZXIgY2FwdHVyZWRJZGVudGlmaWVyKHRyYW5zYWN0aW9uSWRl
bnRpZmllci5pc29sYXRlZENvcHkoKSk7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBjYXB0
dXJlZE1ldGFkYXRhKG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJRCku
aXNvbGF0ZWRDb3B5KCkpOworICAgIElEQktleVJhbmdlRGF0YSBjYXB0dXJlZEtleVJhbmdlRGF0
YShrZXlSYW5nZURhdGEuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soW2Rh
dGFiYXNlLCByZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwgY2FwdHVyZWRNZXRhZGF0YSwg
aW5kZXhJRCwgY2FwdHVyZWRLZXlSYW5nZURhdGEsIGN1cnNvclR5cGVdIHsKKyAgICAgICAgZGF0
YWJhc2UtPmdldFJlY29yZEZyb21CYWNraW5nU3RvcmUocmVxdWVzdElELCBjYXB0dXJlZElkZW50
aWZpZXIsIGNhcHR1cmVkTWV0YWRhdGEsIGluZGV4SUQsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhLCBj
dXJzb3JUeXBlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1
cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qg
b2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biBjdXJzb3JEaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJE
YXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlIHRhc2tUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSwgc3RkOjpmdW5jdGlvbjx2b2lkIChpbnQ2NF90LCBjb25zdCBJREJLZXlE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMy
X3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKQEAgLTYyMyw3ICs3MDUsMTIgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGkKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1
ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVl
c3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVz
dElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNv
ckRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGtleVJhbmdlRGF0YSkpOworICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmll
ciBjYXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
KTsKKyAgICBJREJLZXlSYW5nZURhdGEgY2FwdHVyZWRLZXlSYW5nZURhdGEoa2V5UmFuZ2VEYXRh
Lmlzb2xhdGVkQ29weSgpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgcmVxdWVz
dElELCBjYXB0dXJlZElkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRp
cmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhXSB7Cisg
ICAgICAgIGRhdGFiYXNlLT5vcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBjYXB0
dXJlZElkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRpcmVjdGlvbiwg
Y3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29yQWR2YW5jZShjb25zdCBJREJJZGVudGlm
aWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW50NjRfdCBjb3VudCwgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKQEAgLTY0NCw3ICs3
MzEsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29yQWR2YW5jZShjb25zdCBJREJJ
ZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW4KICAgICB1aW50NjRfdCByZXF1ZXN0SUQg
PSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChy
ZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmFkdmFuY2VDdXJzb3JJbkJh
Y2tpbmdTdG9yZSwgcmVxdWVzdElELCBjdXJzb3JJZGVudGlmaWVyLCBjb3VudCkpOworICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmll
ciBjYXB0dXJlZElkZW50aWZpZXIoY3Vyc29ySWRlbnRpZmllci5pc29sYXRlZENvcHkoKSk7Cisg
ICAgcG9zdERhdGFiYXNlVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlm
aWVyLCBjb3VudF0geworICAgICAgICBkYXRhYmFzZS0+YWR2YW5jZUN1cnNvckluQmFja2luZ1N0
b3JlKHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBjb3VudCk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckl0ZXJhdGUoY29uc3QgSURCSWRlbnRpZmll
ciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKQpAQCAtNjY1
LDcgKzc1NiwxMiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JJdGVyYXRlKGNvbnN0
IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbgogICAgIHVpbnQ2NF90IHJlcXVl
c3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3Mu
YWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFz
ayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNv
ckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGN1cnNvcklkZW50aWZpZXIsIGtleSkpOworICAg
IFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRp
ZmllciBjYXB0dXJlZElkZW50aWZpZXIoY3Vyc29ySWRlbnRpZmllci5pc29sYXRlZENvcHkoKSk7
CisgICAgSURCS2V5RGF0YSBjYXB0dXJlZEtleURhdGEoa2V5Lmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBwb3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZElkZW50aWZp
ZXIsIGNhcHR1cmVkS2V5RGF0YV0geworICAgICAgICBkYXRhYmFzZS0+aXRlcmF0ZUN1cnNvcklu
QmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBjYXB0dXJlZEtleURh
dGEpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudChjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgaW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwg
c3RkOjpmdW5jdGlvbjx2b2lkIChpbnQ2NF90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNh
bGxiYWNrKQpAQCAtNjg2LDggKzc4MiwxMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3Vu
dChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0XwogICAg
IHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGlu
Z0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAg
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6Y291bnRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGtleVJhbmdlRGF0YSkpOwotfQorICAgIFJlZlB0cjxV
bmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0
dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBJREJLZXlSYW5nZURhdGEgY2FwdHVyZWRLZXlSYW5nZURhdGEoa2V5UmFuZ2VEYXRhLmlzb2xh
dGVkQ29weSgpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBj
YXB0dXJlZElkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGNhcHR1cmVkS2V5UmFu
Z2VEYXRhXSB7CisgICAgICAgIGRhdGFiYXNlLT5jb3VudEluQmFja2luZ1N0b3JlKHJlcXVlc3RJ
RCwgY2FwdHVyZWRJZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElELCBjYXB0dXJlZEtl
eVJhbmdlRGF0YSk7CisgICAgfSk7CisgICAgfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVSYW5nZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykK
IHsKQEAgLTcwNyw3ICs4MDgsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFu
Z2UoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgIHVpbnQ2
NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFi
YXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERh
dGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlUmFuZ2VJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSUQsIGtleVJhbmdlRGF0YSkpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRh
YmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZp
ZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAgICBJREJLZXlSYW5n
ZURhdGEgY2FwdHVyZWRLZXlSYW5nZURhdGEoa2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpKTsK
KyAgICBwb3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZElkZW50
aWZpZXIsIG9iamVjdFN0b3JlSUQsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhXSB7CisgICAgICAgIGRh
dGFiYXNlLT5kZWxldGVSYW5nZUluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVu
dGlmaWVyLCBvYmplY3RTdG9yZUlELCBjYXB0dXJlZEtleVJhbmdlRGF0YSk7CisgICAgfSk7CiB9
CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUp
CkBAIC03MTcsOCArODIzLDEyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5n
U3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjCiAKICAgICBib29s
IHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEcywgbW9kZSk7CiAKLSAgICBwb3N0TWFpblRocmVh
ZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEVzdGFi
bGlzaFRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKLSAgICBw
b3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgc3VjY2VzcykpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhp
cyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNl
LCBjYXB0dXJlZElkZW50aWZpZXIsIHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZEVz
dGFibGlzaFRyYW5zYWN0aW9uKGNhcHR1cmVkSWRlbnRpZmllciwgc3VjY2Vzcyk7CisgICAgICAg
IGRhdGFiYXNlLT5kaWRDb21wbGV0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKGNhcHR1cmVkSWRlbnRp
Zmllciwgc3VjY2Vzcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmJl
Z2luQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQpAQCAtNzI4LDcgKzgzOCwxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpiZWdpbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YQogCiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmJlZ2luVHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlv
bk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgUmVmUHRy
PFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNh
cHR1cmVkSWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIGNhcHR1cmVkSWRlbnRpZmllciwgc3Vj
Y2Vzc10geworICAgICAgICBkYXRhYmFzZS0+ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlv
bihjYXB0dXJlZElkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCkBAIC03MzgsNyArODUyLDExIEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElE
QklkZW50aWZpZXImIHRyYW5zCiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+
Y29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIHBvc3RNYWlu
VGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
Q29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNj
ZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAg
ICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZpZXIu
aXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIGNhcHR1
cmVkSWRlbnRpZmllciwgc3VjY2Vzc10geworICAgICAgICBkYXRhYmFzZS0+ZGlkQ29tcGxldGVU
cmFuc2FjdGlvbk9wZXJhdGlvbihjYXB0dXJlZElkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAgIH0p
OwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZXNldEJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKQEAgLTc0OCw4
ICs4NjYsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2EKIAogICAgIGJvb2wgc3VjY2VzcyA9
IG1fYmFja2luZ1N0b3JlLT5yZXNldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7
CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmRpZFJlc2V0VHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
c3VjY2VzcykpOwotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmll
cih0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3RNYWluVGhy
ZWFkVGFzayhbZGF0YWJhc2UsIGNhcHR1cmVkSWRlbnRpZmllciwgc3VjY2Vzc10geworICAgICAg
ICBkYXRhYmFzZS0+ZGlkUmVzZXRUcmFuc2FjdGlvbihjYXB0dXJlZElkZW50aWZpZXIsIHN1Y2Nl
c3MpOworICAgICAgICBkYXRhYmFzZS0+ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbihj
YXB0dXJlZElkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpyb2xsYmFja0JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKQEAgLTc1OSw3ICs4ODEsMTEgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmEKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5y
b2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICBwb3N0TWFp
blRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRp
ZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3Vj
Y2VzcykpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7Cisg
ICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVy
Lmlzb2xhdGVkQ29weSgpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCBjYXB0
dXJlZElkZW50aWZpZXIsIHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZENvbXBsZXRl
VHJhbnNhY3Rpb25PcGVyYXRpb24oY2FwdHVyZWRJZGVudGlmaWVyLCBzdWNjZXNzKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5C
YWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG5ld1ZlcnNpb24pCkBAIC03NjksNyArODk1LDEw
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2lu
Z1N0b3JlLT5jaGFuZ2VEYXRhYmFzZVZlcnNpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBuZXdW
ZXJzaW9uKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uLCByZXF1ZXN0SUQs
IHN1Y2Nlc3MpKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMp
OworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgc3VjY2Vzc10g
eworICAgICAgICBkYXRhYmFzZS0+ZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHJlcXVlc3RJRCwg
c3VjY2Vzcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9i
amVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmIG1ldGFkYXRhKQpAQCAtNzc5LDcgKzkwOCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
cwogCiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3Jl
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbWV0YWRhdGEpOwogCi0gICAgcG9zdE1haW5UaHJlYWRU
YXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVP
YmplY3RTdG9yZSwgcmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRh
dGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNl
LCByZXF1ZXN0SUQsIHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZENyZWF0ZU9iamVj
dFN0b3JlKHJlcXVlc3RJRCwgc3VjY2Vzcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qg
b2JqZWN0U3RvcmVJRCkKQEAgLTc4OSw3ICs5MjEsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGVsZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnMKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9y
ZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpOwogCi0gICAgcG9zdE1haW5U
aHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRE
ZWxldGVPYmplY3RTdG9yZSwgcmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2Rh
dGFiYXNlLCByZXF1ZXN0SUQsIHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZERlbGV0
ZU9iamVjdFN0b3JlKHJlcXVlc3RJRCwgc3VjY2Vzcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50
NjRfdCBvYmplY3RTdG9yZUlEKQpAQCAtNzk5LDcgKzkzNCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdAogCiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0
U3RvcmUodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsKIAotICAgIHBvc3RN
YWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkQ2xlYXJPYmplY3RTdG9yZSwgcmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2so
W2RhdGFiYXNlLCByZXF1ZXN0SUQsIHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZENs
ZWFyT2JqZWN0U3RvcmUocmVxdWVzdElELCBzdWNjZXNzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRf
dCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTgw
OSw3ICs5NDcsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhJbkJhY2tp
bmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQkkKIAogICAgIGJvb2wgc3VjY2Vz
cyA9IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSUQsIG1ldGFkYXRhKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ3JlYXRlSW5kZXgsIHJlcXVl
c3RJRCwgc3VjY2VzcykpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2Uo
dGhpcyk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBzdWNj
ZXNzXSB7CisgICAgICAgIGRhdGFiYXNlLT5kaWRDcmVhdGVJbmRleChyZXF1ZXN0SUQsIHN1Y2Nl
c3MpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleElu
QmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJ
RCkKQEAgLTgxOSw3ICs5NjAsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5k
ZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQkkKIAogICAgIGJv
b2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVJbmRleCh0cmFuc2FjdGlvbklkZW50
aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQpOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNr
KGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVJbmRl
eCwgcmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBk
YXRhYmFzZSh0aGlzKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0
SUQsIHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZERlbGV0ZUluZGV4KHJlcXVlc3RJ
RCwgc3VjY2Vzcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJl
Y29yZEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3Jl
TWV0YWRhdGEsIGNvbnN0IElEQktleURhdGEmIGlucHV0S2V5RGF0YSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGlu
ZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiYgaW5kZXhLZXlzKQpAQCAt
ODMwLDEwICs5NzQsMTMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNr
aW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGUKICAgICBib29sIGtleVdh
c0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIElEQktleURhdGEga2V5OwogICAgIGludDY0X3Qga2V5
TnVtYmVyID0gMDsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMp
OwogCiAgICAgaWYgKHB1dE1vZGUgIT0gSURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUg
JiYgb2JqZWN0U3RvcmVNZXRhZGF0YS5hdXRvSW5jcmVtZW50ICYmIGlucHV0S2V5RGF0YS5pc051
bGwpIHsKICAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Z2VuZXJhdGVLZXlOdW1iZXIodHJh
bnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQsIGtleU51bWJlcikpIHsKLSAgICAgICAg
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0
YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIklu
dGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVuY2UiKSkp
OworICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElEXSB7
CisgICAgICAgICAgICAgICAgZGF0YWJhc2UtPmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlKHJl
cXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgY2hlY2tpbmcgZm9y
IGtleSBleGlzdGVuY2UiKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBrZXkuc2V0TnVtYmVyVmFsdWUoa2V5TnVtYmVyKTsKQEAgLTg0
NCwxMSArOTkxLDE1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlCiAgICAgaWYgKHB1dE1vZGUg
PT0gSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPbmx5KSB7CiAgICAgICAgIGJvb2wga2V5RXhpc3Rz
OwogICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRy
YW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBrZXksIGtleUV4aXN0cykpIHsKLSAg
ICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURC
S2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVy
YWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVu
Y2UiKSkpOworICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVz
dElEXSB7CisgICAgICAgICAgICAgICAgZGF0YWJhc2UtPmRpZFB1dFJlY29yZEluQmFja2luZ1N0
b3JlKHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93
bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgY2hlY2tp
bmcgZm9yIGtleSBleGlzdGVuY2UiKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoa2V5RXhpc3RzKSB7Ci0gICAgICAgICAgICBw
b3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwg
SURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkg
YWxyZWFkeSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9yZSIpKSk7CisgICAgICAgICAgICBwb3N0
TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SURdIHsKKyAgICAgICAgICAgICAgICBk
YXRhYmFzZS0+ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBJREJLZXlEYXRh
KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
S2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3RvcmUiKSk7CisgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTg1NiwxMiArMTAw
NywxNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZQogICAgIC8vIFRoZSBzcGVjIHNheXMgdGhh
dCBldmVuIGlmIHdlJ3JlIGFib3V0IHRvIG92ZXJ3cml0ZSB0aGUgcmVjb3JkLCBwZXJmb3JtIHRo
ZSBzdGVwcyB0byBkZWxldGUgaXQgZmlyc3QuCiAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVj
YXVzZSBmb3JtYWxseSBkZWxldGluZyBpdCBmcm9tIGZyb20gdGhlIG9iamVjdCBzdG9yZSBhbHNv
IHJlbW92ZXMgaXQgZnJvbSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KICAgICBpZiAoIW1fYmFj
a2luZ1N0b3JlLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEu
aWQsIGtleSkpIHsKLSAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVx
dWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiUmVwbGFjaW5nIGFuIGV4aXN0aW5nIGtleSBpbiBiYWNraW5nIHN0b3Jl
LCB1bmFibGUgdG8gZGVsZXRlIHByZXZpb3VzIHJlY29yZC4iKSkpOworICAgICAgICBwb3N0TWFp
blRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SURdIHsKKyAgICAgICAgICAgIGRhdGFiYXNl
LT5kaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJSZXBsYWNpbmcg
YW4gZXhpc3Rpbmcga2V5IGluIGJhY2tpbmcgc3RvcmUsIHVuYWJsZSB0byBkZWxldGUgcHJldmlv
dXMgcmVjb3JkLiIpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIW1fYmFja2luZ1N0b3JlLT5wdXRSZWNvcmQodHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
TWV0YWRhdGEuaWQsIGtleSwgdmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpKSB7Ci0gICAgICAg
IHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgp
LCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVy
bmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgcHV0dGluZyBhIHJlY29yZCIpKSk7CisgICAgICAgIHBv
c3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRF0geworICAgICAgICAgICAgZGF0
YWJhc2UtPmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgSURCS2V5RGF0YSgp
LCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVy
bmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgcHV0dGluZyBhIHJlY29yZCIpKTsKKyAgICAgICAgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg2OSw3ICsxMDI0LDkgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBJREJJZGUKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4SURzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kZXhLZXlzW2ldLnNp
emUoKTsgKytqKSB7CiAgICAgICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5wdXRJbmRleFJl
Y29yZCh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwgaW5kZXhJRHNbaV0sIGtl
eSwgaW5kZXhLZXlzW2ldW2pdKSkgewotICAgICAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFz
ayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3Jk
SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUg
ZXJyb3Igd3JpdGluZyBpbmRleCBrZXkiKSkpOworICAgICAgICAgICAgICAgIHBvc3RNYWluVGhy
ZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRF0geworICAgICAgICAgICAgICAgICAgICBkYXRh
YmFzZS0+ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBJREJLZXlEYXRhKCks
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJu
YWwgYmFja2luZyBzdG9yZSBlcnJvciB3cml0aW5nIGluZGV4IGtleSIpKTsKKyAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTg3OSwxMiArMTAzNiwxNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNv
cmRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZQogCiAgICAg
aWYgKHB1dE1vZGUgIT0gSURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgb2JqZWN0
U3RvcmVNZXRhZGF0YS5hdXRvSW5jcmVtZW50ICYmIGtleS50eXBlID09IElEQktleTo6TnVtYmVy
VHlwZSkgewogICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT51cGRhdGVLZXlHZW5lcmF0b3JO
dW1iZXIodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQsIGtleU51bWJlciwga2V5
V2FzR2VuZXJhdGVkKSkgewotICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdT
dG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJvciB1cGRh
dGluZyBrZXkgZ2VuZXJhdG9yIikpKTsKKyAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhb
ZGF0YWJhc2UsIHJlcXVlc3RJRF0geworICAgICAgICAgICAgICAgIGRhdGFiYXNlLT5kaWRQdXRS
ZWNvcmRJbkJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0
b3JlIGVycm9yIHVwZGF0aW5nIGtleSBnZW5lcmF0b3IiKSk7CisgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIHBvc3RNYWluVGhyZWFk
VGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVj
b3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5LCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6
ZW1wdHkoKSkpKTsKKyAgICBJREJLZXlEYXRhIGNhcHR1cmVkS2V5KGtleS5pc29sYXRlZENvcHko
KSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJl
ZEtleV0geworICAgICAgICBkYXRhYmFzZS0+ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUocmVx
dWVzdElELCBjYXB0dXJlZEtleSwgMCwgZW1wdHlTdHJpbmcoKSk7CisgICAgfSk7CiB9CiAKIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgdWludDMyX3QgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKQEAgLTg5OSwxMSArMTA2MSwxNCBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgSURCSQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBkYXRhYmFzZSh0aGlzKTsKIAogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBr
ZXlSYW5nZURhdGEubWF5YmVDcmVhdGVJREJLZXlSYW5nZSgpOwogICAgIEFTU0VSVChrZXlSYW5n
ZSk7CiAgICAgaWYgKCFrZXlSYW5nZSkgewotICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21C
YWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBJREJLZXlSYW5nZSByZXF1
ZXN0ZWQgZnJvbSBiYWNraW5nIHN0b3JlIikpKTsKKyAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNr
KFtkYXRhYmFzZSwgcmVxdWVzdElEXSB7CisgICAgICAgICAgICBkYXRhYmFzZS0+ZGlkR2V0UmVj
b3JkRnJvbUJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIElEQkdldFJlc3VsdCgpLCBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgSURCS2V5UmFu
Z2UgcmVxdWVzdGVkIGZyb20gYmFja2luZyBzdG9yZSIpKTsKKyAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTkxMywxMCArMTA3OCwxNSBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpnZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgSURCSQogCiAgICAgICAgIGlmIChrZXlSYW5nZS0+aXNPbmx5S2V5KCkpIHsKICAgICAgICAg
ICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmdldEtleVJlY29yZEZyb21PYmplY3RTdG9yZSh0cmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwgKmtleVJhbmdlLT5sb3dlcigpLCByZXN1
bHQpKQotICAgICAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2so
KnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwg
cmVxdWVzdElELCBJREJHZXRSZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGtleSByZWNvcmQgZnJvbSBvYmplY3Qg
c3RvcmUgaW4gYmFja2luZyBzdG9yZSIpKSk7CisgICAgICAgICAgICAgICAgcG9zdE1haW5UaHJl
YWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElEXSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFi
YXNlLT5kaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgSURCR2V0UmVzdWx0
KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHRvIGdldCBrZXkgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlIGluIGJhY2tpbmcgc3RvcmUi
KSk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICBJREJHZXRSZXN1bHQgZ2V0UmVzdWx0ID0gcmVzdWx0ID8gSURCR2V0UmVzdWx0KHJlc3Vs
dC5yZWxlYXNlKCksIGtleVJhbmdlLT5sb3dlcigpLCBvYmplY3RTdG9yZU1ldGFkYXRhLmtleVBh
dGgpIDogSURCR2V0UmVzdWx0KCk7Ci0gICAgICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNr
KGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRG
cm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGdldFJlc3VsdCwgMCwgU3RyaW5nKFN0cmluZ0lt
cGw6OmVtcHR5KCkpKSk7CisgICAgICAgICAgICAgICAgSURCR2V0UmVzdWx0IGNhcHR1cmVkR2V0
UmVzdWx0KGdldFJlc3VsdC5pc29sYXRlZENvcHkoKSk7CisgICAgICAgICAgICAgICAgcG9zdE1h
aW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZEdldFJlc3VsdF0gewor
ICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZS0+ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9y
ZShyZXF1ZXN0SUQsIGNhcHR1cmVkR2V0UmVzdWx0LCAwLCBlbXB0eVN0cmluZygpKTsKKyAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTI1LDEwICsxMDk1LDE1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21C
YWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJCiAgICAgICAgIFJlZlB0
cjxJREJLZXk+IHJlc3VsdEtleTsKIAogICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5nZXRL
ZXlSYW5nZVJlY29yZEZyb21PYmplY3RTdG9yZSh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRh
ZGF0YS5pZCwgKmtleVJhbmdlLCByZXN1bHQsIHJlc3VsdEtleSkpCi0gICAgICAgICAgICBwb3N0
TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCR2V0UmVzdWx0KCks
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVk
IHRvIGdldCBrZXkgcmFuZ2UgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlIGluIGJhY2tpbmcgc3Rv
cmUiKSkpOworICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVz
dElEXSB7CisgICAgICAgICAgICAgICAgZGF0YWJhc2UtPmRpZEdldFJlY29yZEZyb21CYWNraW5n
U3RvcmUocmVxdWVzdElELCBJREJHZXRSZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGtleSByYW5nZSByZWNvcmQg
ZnJvbSBvYmplY3Qgc3RvcmUgaW4gYmFja2luZyBzdG9yZSIpKTsKKyAgICAgICAgICAgIH0pOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIElEQkdldFJlc3VsdCBnZXRSZXN1bHQgPSByZXN1
bHQgPyBJREJHZXRSZXN1bHQocmVzdWx0LnJlbGVhc2UoKSwgcmVzdWx0S2V5LnJlbGVhc2UoKSwg
b2JqZWN0U3RvcmVNZXRhZGF0YS5rZXlQYXRoKSA6IElEQkdldFJlc3VsdCgpOwotICAgICAgICAg
ICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGdldFJlc3Vs
dCwgMCwgU3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpKSk7CisgICAgICAgICAgICBJREJHZXRS
ZXN1bHQgY2FwdHVyZWRHZXRSZXN1bHQoZ2V0UmVzdWx0Lmlzb2xhdGVkQ29weSgpKTsKKyAgICAg
ICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRH
ZXRSZXN1bHRdIHsKKyAgICAgICAgICAgICAgICBkYXRhYmFzZS0+ZGlkR2V0UmVjb3JkRnJvbUJh
Y2tpbmdTdG9yZShyZXF1ZXN0SUQsIGNhcHR1cmVkR2V0UmVzdWx0LCAwLCBlbXB0eVN0cmluZygp
KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwpAQCAtOTM4
LDE0ICsxMTEzLDE5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNr
aW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJCiAKICAgICBJREJHZXRSZXN1
bHQgcmVzdWx0OwogICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmdldEluZGV4UmVjb3JkKHRyYW5z
YWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBpbmRleElELCBrZXlSYW5nZURhdGEsIGN1
cnNvclR5cGUsIHJlc3VsdCkpIHsKLSAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2lu
Z1N0b3JlLCByZXF1ZXN0SUQsIElEQkdldFJlc3VsdCgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBnZXQgaW5kZXggcmVjb3JkIGZy
b20gYmFja2luZyBzdG9yZSIpKSk7CisgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJh
c2UsIHJlcXVlc3RJRF0geworICAgICAgICAgICAgZGF0YWJhc2UtPmRpZEdldFJlY29yZEZyb21C
YWNraW5nU3RvcmUocmVxdWVzdElELCBJREJHZXRSZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGluZGV4IHJlY29y
ZCBmcm9tIGJhY2tpbmcgc3RvcmUiKSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgLy8gV2UgbXVzdCByZXR1cm4gYSBrZXkgcGF0aCB0byBrbm93IGhvdyB0byBp
bmplY3QgdGhlIHJlc3VsdCBrZXkgaW50byB0aGUgcmVzdWx0IHZhbHVlIG9iamVjdC4KICAgICBy
ZXN1bHQua2V5UGF0aCA9IG9iamVjdFN0b3JlTWV0YWRhdGEua2V5UGF0aDsKIAotICAgIHBvc3RN
YWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCByZXN1bHQsIDAsIFN0cmlu
ZyhTdHJpbmdJbXBsOjplbXB0eSgpKSkpOworICAgIElEQkdldFJlc3VsdCBjYXB0dXJlZFJlc3Vs
dChyZXN1bHQuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJh
c2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRSZXN1bHRdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZEdl
dFJlY29yZEZyb21CYWNraW5nU3RvcmUocmVxdWVzdElELCBjYXB0dXJlZFJlc3VsdCwgMCwgZW1w
dHlTdHJpbmcoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdl
dFJlY29yZEZyb21CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJHZXRS
ZXN1bHQmIHJlc3VsdCwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKQEAgLTk3NCw3ICsxMTU0LDEzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5D
dXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkCiAgICAg
ICAgIGVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvcGVuaW5nIGN1
cnNvciBpbiBiYWNraW5nIHN0b3JlIik7CiAgICAgfQogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNr
KGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQ3Vyc29y
SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgY3Vyc29ySUQsIGtleSwgcHJpbWFyeUtleSwgdmFs
dWVCdWZmZXIsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlE
QkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJLZXlEYXRhIGNhcHR1cmVkS2V5KGtl
eS5pc29sYXRlZENvcHkoKSk7CisgICAgSURCS2V5RGF0YSBjYXB0dXJlZFByaW1hcnlLZXkocHJp
bWFyeUtleS5pc29sYXRlZENvcHkoKSk7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEVycm9y
TWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2Us
IHJlcXVlc3RJRCwgY3Vyc29ySUQsIGNhcHR1cmVkS2V5LCBjYXB0dXJlZFByaW1hcnlLZXksIHZh
bHVlQnVmZmVyLCBlcnJvckNvZGUsIGNhcHR1cmVkRXJyb3JNZXNzYWdlXSB7CisgICAgICAgIGRh
dGFiYXNlLT5kaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBjdXJzb3JJRCwg
Y2FwdHVyZWRLZXksIGNhcHR1cmVkUHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwg
Y2FwdHVyZWRFcnJvck1lc3NhZ2Uuc3RyaW5nKCkpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktl
eURhdGEmIHByaW1hcnlLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWVCdWZmZXIsIHVp
bnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC05OTksNyAr
MTE4NSwxMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphZHZhbmNlQ3Vyc29ySW5CYWNraW5n
U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJRAogICAgICAgICBlcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIlVua25vd24gZXJyb3IgYWR2YW5jaW5nIGN1cnNvciBpbiBiYWNraW5n
IHN0b3JlIik7CiAgICAgfQogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3Rv
cmUsIHJlcXVlc3RJRCwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZUJ1ZmZlciwgZXJyb3JDb2RlLCBl
cnJvck1lc3NhZ2UpKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRo
aXMpOworICAgIElEQktleURhdGEgY2FwdHVyZWRLZXkoa2V5Lmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBJREJLZXlEYXRhIGNhcHR1cmVkUHJpbWFyeUtleShwcmltYXJ5S2V5Lmlzb2xhdGVkQ29weSgp
KTsKKyAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkRXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7
CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZEtl
eSwgY2FwdHVyZWRQcmltYXJ5S2V5LCB2YWx1ZUJ1ZmZlciwgZXJyb3JDb2RlLCBjYXB0dXJlZEVy
cm9yTWVzc2FnZV0geworICAgICAgICBkYXRhYmFzZS0+ZGlkQWR2YW5jZUN1cnNvckluQmFja2lu
Z1N0b3JlKHJlcXVlc3RJRCwgY2FwdHVyZWRLZXksIGNhcHR1cmVkUHJpbWFyeUtleSwgdmFsdWVC
dWZmZXIsIGVycm9yQ29kZSwgY2FwdHVyZWRFcnJvck1lc3NhZ2Uuc3RyaW5nKCkpOworICAgIH0p
OwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5n
U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElE
QktleURhdGEmIHByaW1hcnlLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWVCdWZmZXIs
IHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0xMDI0
LDcgKzEyMTYsMTMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFj
a2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSUQKICAgICAgICAgZXJyb3JNZXNz
YWdlID0gQVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9yIGl0ZXJhdGluZyBjdXJzb3IgaW4gYmFj
a2luZyBzdG9yZSIpOwogICAgIH0KIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3lu
Y1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2lu
Z1N0b3JlLCByZXF1ZXN0SUQsIGtleSwgcHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29k
ZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFz
ZSh0aGlzKTsKKyAgICBJREJLZXlEYXRhIGNhcHR1cmVkS2V5KGtleS5pc29sYXRlZENvcHkoKSk7
CisgICAgSURCS2V5RGF0YSBjYXB0dXJlZFByaW1hcnlLZXkocHJpbWFyeUtleS5pc29sYXRlZENv
cHkoKSk7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEVycm9yTWVzc2FnZShlcnJvck1lc3Nh
Z2UpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVy
ZWRLZXksIGNhcHR1cmVkUHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgY2FwdHVy
ZWRFcnJvck1lc3NhZ2VdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZEl0ZXJhdGVDdXJzb3JJbkJh
Y2tpbmdTdG9yZShyZXF1ZXN0SUQsIGNhcHR1cmVkS2V5LCBjYXB0dXJlZFByaW1hcnlLZXksIHZh
bHVlQnVmZmVyLCBlcnJvckNvZGUsIGNhcHR1cmVkRXJyb3JNZXNzYWdlLnN0cmluZygpKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFj
a2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25z
dCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVm
ZmVyLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAt
MTAzNywxNCArMTIzNSwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRJdGVyYXRlQ3Vy
c29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdAogCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjb3VudEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0
b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEpCiB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKICAg
ICBpbnQ2NF90IGNvdW50OwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y291bnQodHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElELCBrZXlSYW5nZURhdGEsIGNv
dW50KSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgY291bnQgZnJvbSBiYWNr
aW5nIHN0b3JlLiIpOwotICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvdW50SW5CYWNraW5nU3RvcmUsIHJlcXVl
c3RJRCwgMCwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZ2V0IGNvdW50IGZyb20gYmFja2luZyBzdG9yZSIpKSk7CisgICAgICAgIHBv
c3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRF0geworICAgICAgICAgICAgZGF0
YWJhc2UtPmRpZENvdW50SW5CYWNraW5nU3RvcmUocmVxdWVzdElELCAwLCBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBnZXQgY291bnQg
ZnJvbSBiYWNraW5nIHN0b3JlIikpOworICAgICAgICB9KTsKICAgICB9CiAKLSAgICBwb3N0TWFp
blRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRp
ZENvdW50SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgY291bnQsIDAsIFN0cmluZyhTdHJpbmdJ
bXBsOjplbXB0eSgpKSkpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVl
c3RJRCwgY291bnRdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZENvdW50SW5CYWNraW5nU3RvcmUo
cmVxdWVzdElELCBjb3VudCwgMCwgZW1wdHlTdHJpbmcoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZENvdW50SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBpbnQ2NF90IGNvdW50LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQpAQCAtMTA1NywxNCArMTI2MCwyMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRDb3VudEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCBjb3Vu
dAogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZUluQmFja2luZ1N0b3JlKHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFu
Z2VEYXRhKQogeworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7
CisKICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50
aWZpZXIsIG9iamVjdFN0b3JlSUQsIGtleVJhbmdlRGF0YSkpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZGVsZXRlIHJhbmdlIGZyb20gYmFja2luZyBzdG9yZS4iKTsKLSAgICAgICAg
cG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWREZWxldGVSYW5nZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBjb3Vu
dCBmcm9tIGJhY2tpbmcgc3RvcmUiKSkpOworICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soW2Rh
dGFiYXNlLCByZXF1ZXN0SURdIHsKKyAgICAgICAgICAgIGRhdGFiYXNlLT5kaWREZWxldGVSYW5n
ZUluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGNvdW50IGZyb20gYmFja2luZyBzdG9y
ZSIpKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgbV9iYWNraW5nU3RvcmUtPm5vdGlmeUN1
cnNvcnNPZkNoYW5nZXModHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsKIAot
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkRGVsZXRlUmFuZ2VJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCAwLCBTdHJp
bmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFi
YXNlLCByZXF1ZXN0SURdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZERlbGV0ZVJhbmdlSW5CYWNr
aW5nU3RvcmUocmVxdWVzdElELCAwLCBlbXB0eVN0cmluZygpKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlUmFuZ2VJbkJhY2tpbmdTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCkBAIC0xMTM3LDcgKzEzNDYsNyBAQCBTdHJpbmcgVW5pcXVlSURCRGF0YWJhc2U6OmFic29s
dXRlRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBEYXRhYmFzZVByb2Nlc3M6
OnNoYXJlZCgpLmFic29sdXRlSW5kZXhlZERhdGFiYXNlUGF0aEZyb21EYXRhYmFzZVJlbGF0aXZl
UGF0aChtX2RhdGFiYXNlUmVsYXRpdmVEaXJlY3RvcnkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpwb3N0TWFpblRocmVhZFRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gdGFz
aywgRGF0YWJhc2VUYXNrVHlwZSB0YXNrVHlwZSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBv
c3RNYWluVGhyZWFkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IHRhc2ssIERhdGFiYXNlVGFz
a1R5cGUgdGFza1R5cGUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAg
LTExNDUsNyArMTM1NCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFk
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrLCBEYXRhCiAgICAgICAgIHJldHVy
bjsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX21haW5UaHJlYWRUYXNrTXV0ZXgpOwotCiAg
ICAgbV9tYWluVGhyZWFkVGFza3MuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CiAKICAgICBSZWZQ
dHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOwpAQCAtMTE2MCw3ICsxMzY4LDcg
QEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHRNYWluVGhyZWFkVGFzaygpCiAK
ICAgICBib29sIG1vcmVUYXNrczsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRh
c2s7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiB0YXNrOwogICAgIHsKICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbWFpblRocmVhZFRhc2tNdXRleCk7CiAKQEAgLTExNzIsMTIgKzEz
ODAsMTIgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHRNYWluVGhyZWFkVGFz
aygpCiAgICAgICAgIG1vcmVUYXNrcyA9ICFtX21haW5UaHJlYWRUYXNrcy5pc0VtcHR5KCk7CiAg
ICAgfQogCi0gICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICB0YXNrKCk7CiAKICAgICByZXR1
cm4gbW9yZVRhc2tzOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VU
YXNrKHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2ssIERhdGFiYXNlVGFza1R5cGUgdGFz
a1R5cGUpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4gdGFzaywgRGF0YWJhc2VUYXNrVHlwZSB0YXNrVHlwZSkKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMjAzLDcgKzE0MTEsNyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpCiAgICAgLy8gV2UgdGFr
ZSBhIHJlZigpIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YWJhc2UgaXMgc3RpbGwgbGl2ZSB3aGlsZSB0
aGlzIGxhc3QgdGFzayBpcyBwZXJmb3JtZWQuCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBwcm90ZWN0b3IodGhpcyk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNr
OworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gdGFzazsKICAgICB7CiAgICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKIApAQCAtMTIxNCw3ICsxNDIyLDcg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2soKQogICAg
ICAgICB0YXNrID0gbV9kYXRhYmFzZVRhc2tzLnRha2VGaXJzdCgpOwogICAgIH0KIAotICAgIHRh
c2stPnBlcmZvcm1UYXNrKCk7CisgICAgdGFzaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCAwMjlhYThjMjk2ZTUzNDA3Nzc4YTgwNDBk
MzM2OTJhYzg5YjYwYzU5Li42NjQxOGE1ZDk5YTQ4NmQ1YjhiZmUzM2I2NjA1OTNmMzllMGJhMjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1Vu
aXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC00OSw3ICs0OSw2IEBAIHN0cnVjdCBJREJL
ZXlEYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFzeW5jUmVxdWVzdDsKLWNsYXNz
IEFzeW5jVGFzazsKIGNsYXNzIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb247CiBjbGFzcyBV
bmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZTsKIApAQCAtMTIwLDcgKzExOSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIE5vcm1hbCwKICAgICAgICAgU2h1dGRvd24KICAgICB9OwotICAgIHZvaWQg
cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiwgRGF0YWJhc2VUYXNr
VHlwZSA9IERhdGFiYXNlVGFza1R5cGU6Ok5vcm1hbCk7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VU
YXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4sIERhdGFiYXNlVGFza1R5cGUgPSBEYXRhYmFzZVRh
c2tUeXBlOjpOb3JtYWwpOwogCiAgICAgdm9pZCBzaHV0ZG93bihVbmlxdWVJREJEYXRhYmFzZVNo
dXRkb3duVHlwZSk7CiAKQEAgLTEzMywxMSArMTMyLDExIEBAIHByaXZhdGU6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgb3JpZ2luIGNhbiB1c2UgdGhlIHNhbWUgZGF0YWJhc2VzIGFzIHRo
ZSBnaXZlbiBvcmlnaW4uCiAgICAgYm9vbCBjYW5TaGFyZURhdGFiYXNlcyhjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAotICAgIHZv
aWQgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgdm9pZCBwb3N0VHJhbnNhY3Rpb25P
cGVyYXRpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2Fs
bGJhY2spOwogICAgIAogICAgIC8vIFRvIGJlIGNhbGxlZCBmcm9tIHRoZSBkYXRhYmFzZSB3b3Jr
cXVldWUgdGhyZWFkIG9ubHkKICAgICB2b2lkIHBlcmZvcm1OZXh0RGF0YWJhc2VUYXNrKCk7Ci0g
ICAgdm9pZCBwb3N0TWFpblRocmVhZFRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIERh
dGFiYXNlVGFza1R5cGUgPSBEYXRhYmFzZVRhc2tUeXBlOjpOb3JtYWwpOworICAgIHZvaWQgcG9z
dE1haW5UaHJlYWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4sIERhdGFiYXNlVGFza1R5cGUg
PSBEYXRhYmFzZVRhc2tUeXBlOjpOb3JtYWwpOwogICAgIHZvaWQgb3BlbkJhY2tpbmdTdG9yZUFu
ZFJlYWRNZXRhZGF0YShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKICAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmVUcmFu
c2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlKTsKICAgICB2b2lkIGJlZ2luQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29u
c3QgSURCSWRlbnRpZmllciYpOwpAQCAtMjAzLDEwICsyMDIsMTAgQEAgcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAK
LSAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOwor
ICAgIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fZGF0YWJhc2VUYXNrczsKICAgICBN
dXRleCBtX2RhdGFiYXNlVGFza011dGV4OwogCi0gICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPEFz
eW5jVGFzaz4+IG1fbWFpblRocmVhZFRhc2tzOworICAgIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4+IG1fbWFpblRocmVhZFRhc2tzOwogICAgIE11dGV4IG1fbWFpblRocmVhZFRhc2tNdXRl
eDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzZkODUzYzViOWUwOTIwZTljMDU1MmEzZGM2YjM2MTc4ZjYwMTZjNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXN5bmNUYXNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgQXN5bmNUYXNrX2gKLSNkZWZpbmUgQXN5bmNUYXNrX2gKLQotI2luY2x1
ZGUgPFdlYkNvcmUvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgQXN5bmNUYXNrIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShBc3luY1Rhc2spOwotcHVibGljOgotICAgIEFzeW5jVGFzayhjb25zdCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+IHRhc2tGdW5jdGlvbikKLSAgICAgICAgOiBtX3Rhc2tGdW5jdGlv
bih0YXNrRnVuY3Rpb24pCi0gICAgewotICAgICAgICBBU1NFUlQodGFza0Z1bmN0aW9uKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHBlcmZvcm1UYXNrKCkKLSAgICB7Ci0gICAgICAgIG1fdGFza0Z1bmN0
aW9uKCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgQXN5bmNUYXNrKCkgeyB9Ci0KLSAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fdGFza0Z1bmN0aW9uOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLWNsYXNzIEFzeW5jVGFza0ltcGwgZmlu
YWwgOiBwdWJsaWMgQXN5bmNUYXNrIHsKLXB1YmxpYzoKLSAgICBBc3luY1Rhc2tJbXBsKFQqIGNh
bGxlZSwgdm9pZCAoVDo6Km1ldGhvZCkoQXJndW1lbnRzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJn
dW1lbnRzKQotICAgIHsKLSAgICAgICAgbV90YXNrRnVuY3Rpb24gPSBbY2FsbGVlLCBtZXRob2Qs
IGFyZ3VtZW50cy4uLl0gewotICAgICAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkoYXJndW1lbnRz
Li4uKTsKLSAgICAgICAgfTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3Rk
Ojp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwK
LSAgICB2b2lkIChUOjoqbWV0aG9kKSgpKQotewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEFzeW5jVGFza0ltcGw8VD4+KCZjYWxsZWUsIG1ldGhvZCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+Ci1zdGQ6OnVuaXF1ZV9wdHI8QXN5bmNU
YXNrPiBjcmVhdGVBc3luY1Rhc2soCi0gICAgVCYgY2FsbGVlLAotICAgIHZvaWQgKFQ6OiptZXRo
b2QpKE1QMSksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCi17Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QXN5bmNUYXNrSW1wbDxULCBNUDE+PigKLSAgICAgICAgJmNhbGxlZSwKLSAg
ICAgICAgbWV0aG9kLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNv
cHkocGFyYW1ldGVyMSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgotc3RkOjp1bmlxdWVfcHRy
PEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2b2lkIChU
OjoqbWV0aG9kKShNUDEsIE1QMiksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCi0gICAgY29u
c3QgUDImIHBhcmFtZXRlcjIpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNU
YXNrSW1wbDxULCBNUDEsIE1QMj4+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2Qs
Ci0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIx
KSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRl
cjIpKTsKLQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
TVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAz
Pgotc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNh
bGxlZSwKLSAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzKSwKLSAgICBjb25zdCBQ
MSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYg
cGFyYW1ldGVyMykKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDM+PigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAot
ICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSks
Ci0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIy
KSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRl
cjMpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KLXN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNy
ZWF0ZUFzeW5jVGFzaygKLSAgICBUJiBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAx
LCBNUDIsIE1QMywgTVA0KSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQ
MiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYg
cGFyYW1ldGVyNCkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDMsIE1QND4+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRo
b2QsCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0
ZXIxKSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFt
ZXRlcjIpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFy
YW1ldGVyMyksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShw
YXJhbWV0ZXI0KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFt
ZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBN
UDU+Ci1zdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCi0gICAgVCYg
Y2FsbGVlLAotICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwK
LSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAg
ICBjb25zdCBQMyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBj
b25zdCBQNSYgcGFyYW1ldGVyNSkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3lu
Y1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1Pj4oCi0gICAgICAgICZjYWxsZWUs
Ci0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+
Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQ
Mj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVy
PFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3Bp
ZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENv
cGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBl
bmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFt
ZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2Pgotc3RkOjp1bmlx
dWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2
b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKLSAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQ
MyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQNSYg
cGFyYW1ldGVyNSwKLSAgICBjb25zdCBQNiYgcGFyYW1ldGVyNikKLXsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBN
UDY+PigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBXZWJDb3Jl
OjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdlYkNv
cmU6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgV2Vi
Q29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAotICAgICAgICBX
ZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAg
IFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwKLSAgICAg
ICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5h
bWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUg
UDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYs
IHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KLXN0ZDo6dW5pcXVlX3B0
cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKLSAgICBUJiBjYWxsZWUsCi0gICAgdm9pZCAo
VDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKLSAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQ
MyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQNSYg
cGFyYW1ldGVyNSwKLSAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKLSAgICBjb25zdCBQNyYgcGFy
YW1ldGVyNykKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQs
IE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNz4+KAotICAgICAgICAmY2FsbGVlLAot
ICAgICAgICBtZXRob2QsCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6
Y29weShwYXJhbWV0ZXIxKSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+
Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQ
Mz46OmNvcHkocGFyYW1ldGVyMyksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVy
PFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENv
cGllcjxQNj46OmNvcHkocGFyYW1ldGVyNiksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFk
Q29waWVyPFA3Pjo6Y29weShwYXJhbWV0ZXI3KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVu
YW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1l
IFA3LCB0eXBlbmFtZSBNUDcsIHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+Ci1zdGQ6OnVuaXF1
ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCi0gICAgVCYgY2FsbGVlLAotICAgIHZv
aWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwK
LSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAg
ICBjb25zdCBQMyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBj
b25zdCBQNSYgcGFyYW1ldGVyNSwKLSAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKLSAgICBjb25z
dCBQNyYgcGFyYW1ldGVyNywKLSAgICBjb25zdCBQOCYgcGFyYW1ldGVyOCkKLXsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwg
TVA1LCBNUDYsIE1QNywgTVA4Pj4oCi0gICAgICAgICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwK
LSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEp
LAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVy
MiksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0
ZXIzKSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFt
ZXRlcjQpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFy
YW1ldGVyNSksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShw
YXJhbWV0ZXI2KSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5
KHBhcmFtZXRlcjcpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQOD46OmNv
cHkocGFyYW1ldGVyOCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEFzeW5jVGFza19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMDEyMzZmODRmYTExNmExMjljZWE5YjY1YzQ3MjA1MzdjMDA1NmRm
ZS4uM2JjMDk2MzZkODY5YjIzZmM5YmNiNzM0NDJjNDVmY2UwMDU1NDAzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTcxLDcg
Kzk3MSw2IEBACiAJCTUxQUNCQkExMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBQ0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi87
IH07CiAJCTUxQjE1QTg0MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxNUE4
MjEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwICovOyB9OwogCQk1
MUIxNUE4NTEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjE1QTgzMTM4NDNBMzkw
MDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5oICovOyB9OwotCQk1MUJBMjQ0NDE4NThF
RTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUJBMjQ0MzE4NThFRTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmgg
Ki87IH07CiAJCTUxQkEyNDQ2MTg1OEY1NUQwMEVBMjgxMSAvKiBXZWJDcm9zc1RocmVhZENvcGll
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
MjQ0NTE4NThGNDE1MDBFQTI4MTEgLyogV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9Owog
CQk1MUM5NjExODE4M0QyOTQ3MDBEMjAwMkUgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUM5NjExNjE4M0QyOTQ3MDBEMjAwMkUgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxQzk2MTE5MTgzRDI5NDcwMEQyMDAyRSAvKiBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzk2MTE3MTgzRDI5NDcwMEQyMDAyRSAvKiBXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTMwODcsNyArMzA4Niw2IEBACiAJ
CTUxQUNDOTM1MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMTVBODIxMzg0M0EzOTAwMzIxQUQ4IC8q
IEVudmlyb25tZW50VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEVudmlyb25tZW50VXRpbGl0aWVzLmNwcDsgcGF0aCA9IHVuaXgvRW52aXJvbm1lbnRV
dGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxNUE4MzEzODQz
QTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRW52aXJvbm1lbnRVdGlsaXRpZXMuaDsgcGF0aCA9IHVuaXgvRW52aXJv
bm1lbnRVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFCQTI0NDMx
ODU4RUUzMDAwRUEyODExIC8qIEFzeW5jVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBc3luY1Rhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQTI0
NDUxODU4RjQxNTAwRUEyODExIC8qIFdlYkNyb3NzVGhyZWFkQ29waWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkNyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFDOTYxMTUxODNDOTVGRjAwRDIwMDJFIC8qIFdlYklEQlNlcnZlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOTYxMTYxODNEMjk0NzAwRDIwMDJFIC8q
IFdlYklEQlNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTUxLDcgKzQ1NDksNiBA
QAogCQkJCUM1OUM0QTU3MThCODExNzQwMDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5oICovLAogCQkJCTUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3Bw
ICovLAogCQkJCTUxNUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLywK
LQkJCQk1MUJBMjQ0MzE4NThFRTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmggKi8sCiAJCQkJRTE2
NEEyRUYxOTFBRjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94
RXh0ZW5zaW9uLmNwcCAqLywKIAkJCQlFMTY0QTJGMDE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQk0RjYwMTQzMDE1
NUM1QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovLApAQCAtNzQyMCw3ICs3
NDE3LDYgQEAKIAkJCQlCQzAzMkRBOTEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNTlDNEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAz
RiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxQkEyNDQ0MTg1OEVFMzAw
MEVBMjgxMSAvKiBBc3luY1Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUU5NjZEMTEyRkFG
NTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUEzMTczMjEz
NENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
aCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245638</attachid>
            <date>2015-01-29 12:43:34 -0800</date>
            <delta_ts>2015-02-07 08:03:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140881-20150129124556.patch</filename>
            <type>text/plain</type>
            <size>78089</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg3ZjMwMWVkNTU1N2Fl
YjNiNThlYTQ1ZjQ0YmQ3OWRmZTBmMGVjMy4uYzEwZGJmMmMzMTAxMTY1YzhiMWM0NWNmNDZiNTJj
NmY0ODZlNjYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAxLTI5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBSZXBsYWNl
IEFzeW5jVGFzayB3aXRoIEMrKyBsYW1iZGFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgdGhlIG5lY2Vzc2FyeSBzeW1ib2xzIHRoYXQgYXJl
IG5vdyB1c2VkIGluIFdlYktpdDIuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleE1ldGFkYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZU1ldGFkYXRhLmg6CisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisKIDIwMTUtMDEtMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCAvIG1vZGVy
bml6ZSBQYWdlQ2FjaGUgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMzI4ZTQ1NTk2NzE2MDNmZDEyY2Ux
NmZhODM2NGZiYjFkOTRjZDU3Li5mMjY5MzBlMDgwZGI3YmZiMDg3MmE0YzIxZDVkYTIxOTZmOTQ2
NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTUtMDEtMjkgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdIFJlcGxhY2UgQXN5bmNU
YXNrIHdpdGggQysrIGxhbWJkYXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MDg4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlcGxhY2UgQXN5bmNUYXNrIGluIGZhdm9yIG9mIEMrKyBsYW1iZGFzLiBU
aGlzIGluY3VycyB0aGUgcGVuYWx0eSBvZgorICAgICAgICBhIGJpdCBtb3JlIHZlcmJvc2UgY29k
ZSBhbmQgYSBmZXcgbm9uLW9wdGltYWwgY29waWVzIHdoZW4gY2FwdHVyaW5nCisgICAgICAgIG9i
amVjdHMgaW50byB0aGUgbGFtYmRhLCBidXQgc2hvdWxkIGJlIGZpeGVkIG9uY2Ugd2UgY2FuIGxl
dmVyYWdlCisgICAgICAgIHRoZSBjYXB0dXJlLWluaWFsaXphdGlvbiBmZWF0dXJlIGluIEMrKzE0
LgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZW5zdXJlSW5kZXhlZERhdGFiYXNlUmVsYXRp
dmVQYXRoRXhpc3RzKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpwb3N0RGF0
YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpwZXJmb3JtTmV4
dERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6Z2V0T3Jp
Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlRW50cmllc0Zv
ck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlRW50cmll
c01vZGlmaWVkQmV0d2VlbkRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNz
OjpkZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQ
cm9jZXNzLmg6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0ZG93
bik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0ZG93bkJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRPckVzdGFibGlz
aElEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpvcGVuVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZTo6YmVnaW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpyZXNldFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OnJvbGxiYWNrVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZTo6cG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6VW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6
VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OnB1dFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JBZHZh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckl0ZXJhdGUp
OgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y291bnQpOgorICAgICAgICAo
V2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2UpOgorICAgICAgICAoV2ViS2l0
OjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luQmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cmVz
ZXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpyb2xsYmFja0JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6VW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3Jl
SW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleEluQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZy
b21CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6b3Bl
bkN1cnNvckluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6OmFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y291bnRJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZUluQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtTmV4dE1haW5UaHJlYWRU
YXNrKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRh
c2spOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHREYXRh
YmFzZVRhc2spOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURC
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQXN5bmNUYXNrLmg6IFJlbW92ZWQuCisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAxLTI5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgLyBtb2Rl
cm5pemUgUGFnZUNhY2hlIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleE1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleE1ldGFkYXRhLmgKaW5kZXggYjdmYzEwNDUzMTZjYTA5OTRlNThlZDgw
MzI1YWRkM2RlMGRhZWZmNi4uNjM0NjcxOTcwYzIxYmFjNjNjYWE4ODkyMThmZjliNTIzMGQwZTZh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhN
ZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
TWV0YWRhdGEuaApAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YSB7CiAg
ICAgYm9vbCB1bmlxdWU7CiAgICAgYm9vbCBtdWx0aUVudHJ5OwogCi0gICAgSURCSW5kZXhNZXRh
ZGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJJbmRleE1l
dGFkYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3Qg
SW52YWxpZElkID0gLTE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5RGF0YS5oCmluZGV4IGQ3MjY1YmU0OGI3NzBiNDc2OTQzMDZiODZjMTg0MTUxN2UyNGZh
YWYuLmM3NWYxMWI1NGJlM2ZmMjEwNmIyODE5Y2I5OGNmZWExODkzZjFhOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKQEAgLTYzLDcgKzYzLDcg
QEAgc3RydWN0IElEQktleURhdGEgewogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxJ
REJLZXk+IG1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3Q7CiAKLSAgICBJREJLZXlEYXRhIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQktleURhdGEgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShLZXllZEVuY29k
ZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWNvZGUoS2V5ZWRE
ZWNvZGVyJiwgSURCS2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aC5oCmluZGV4IDExYjJiMTk3NzcxYWRmZDk5YzUyZjYwZDMwNmFlMTUxOGVj
YjhmZGEuLjAwZDAzMjQ2MTA4ZTllY2FjMDkwYjMzYmQxNGVlNmJjNDg3ZmI0MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBJREJLZXlQYXRoJiBvdGhlcikgY29uc3Q7CiAKLSAgICBJREJLZXlQYXRoIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIElEQktleVBhdGggaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShLZXllZEVu
Y29kZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWNvZGUoS2V5
ZWREZWNvZGVyJiwgSURCS2V5UGF0aCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuaAppbmRleCA1NmNmNDYxNzkyNjIzZTk5NjQ0YmFk
NzNmYzEwMjAyMjI0MjQ5NzY4Li5iNjg5OWE5MjZiZDI4Nzg3NGU3MzBkYjU0MGE0NTE4NTI5YjY0
NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlS
YW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlS
YW5nZURhdGEuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgSURCS2V5UmFuZ2VEYXRhIHsKICAg
ICAgICAgdXBwZXJPcGVuID0ga2V5UmFuZ2UtPnVwcGVyT3BlbigpOwogICAgIH0KIAotICAgIElE
QktleVJhbmdlRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
REJLZXlSYW5nZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBtYXliZUNyZWF0ZUlEQktleVJhbmdlKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlTWV0YWRhdGEuaAppbmRleCA1OWFjMGE5MmI3NzQyZDE1NWIxZWQwYzQ3ODQyOTAy
MTkwYmYyMDYyLi5hYjE5ZTM4ZGJkM2Q1NWI1NmE4NTIxNDFlOTBmNDRmYmVkOTM2N2JiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZU1l
dGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVNZXRhZGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHN0cnVjdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwgSURCSW5kZXhNZXRhZGF0YT4g
SW5kZXhNYXA7CiAgICAgSW5kZXhNYXAgaW5kZXhlczsKIAotICAgIElEQk9iamVjdFN0b3JlTWV0
YWRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYWQ1ZTY0MDkxODQwNWVmN2ZlNjliZWI1
NzQ5Y2U4ZjdjZmNiNTViNS4uMzMyZmI0MjRkZGFhYjRkM2VmOWUyYjgwOTk5ZmYyOTg5N2MzMTNi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE3MjQsNiArMTcyNCw3IEBAIF9fWk5LN1dlYkNv
cmUxMlNoYXJlZEJ1ZmZlcjExZ2V0U29tZURhdGFFUlBLY2oKIF9fWk5LN1dlYkNvcmUxMlNoYXJl
ZEJ1ZmZlcjE1aGFzUGxhdGZvcm1EYXRhRXYKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRk
YXRhRXYKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRzaXplRXYKK19fWk5LN1dlYkNvcmUx
MlNoYXJlZEJ1ZmZlcjRjb3B5RXYKIF9fWk5LN1dlYkNvcmUxMlRleHRFbmNvZGluZzZkZWNvZGVF
UEtjbWJSYgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9yNG5vZGVFdgogX19aTks3V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yNXJhbmdlRXYKQEAgLTMyMjAsMTEgKzMyMjEsMTYgQEAgX19aTjdXZWJD
b3JlNklEQktleUQxRXYKIF9fWk5LN1dlYkNvcmUxMElEQktleURhdGExN21heWJlQ3JlYXRlSURC
S2V5RXYKIF9fWk5LN1dlYkNvcmUxMElEQktleURhdGE2ZW5jb2RlRVJOU18xMktleWVkRW5jb2Rl
ckUKIF9fWk5LN1dlYkNvcmUxMElEQktleURhdGE3Y29tcGFyZUVSS1MwXworX19aTks3V2ViQ29y
ZTEwSURCS2V5RGF0YTEyaXNvbGF0ZWRDb3B5RXYKIF9fWk5LN1dlYkNvcmUxMElEQktleVBhdGg2
ZW5jb2RlRVJOU18xMktleWVkRW5jb2RlckUKK19fWk5LN1dlYkNvcmUxMElEQktleVBhdGgxMmlz
b2xhdGVkQ29weUV2CiBfX1pOSzdXZWJDb3JlMTFJREJLZXlSYW5nZTlpc09ubHlLZXlFdgogX19a
Tks3V2ViQ29yZTE1SURCS2V5UmFuZ2VEYXRhMTVpc0V4YWN0bHlPbmVLZXlFdgogX19aTks3V2Vi
Q29yZTE1SURCS2V5UmFuZ2VEYXRhMjJtYXliZUNyZWF0ZUlEQktleVJhbmdlRXYKK19fWk5LN1dl
YkNvcmUxNUlEQktleVJhbmdlRGF0YTEyaXNvbGF0ZWRDb3B5RXYKIF9fWk5LN1dlYkNvcmU2SURC
S2V5N2lzVmFsaWRFdgorX19aTks3V2ViQ29yZTE2SURCSW5kZXhNZXRhZGF0YTEyaXNvbGF0ZWRD
b3B5RXYKK19fWk5LN1dlYkNvcmUyMklEQk9iamVjdFN0b3JlTWV0YWRhdGExMmlzb2xhdGVkQ29w
eUV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiAhZGVmaW5lZChO
REVCVUcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGUwNmE5OTU1
ZjM0NDg5MmFiYWM0YmQ1ZGRjYTc2YjhmMjJjNDA4ZDYuLjM3ZTQwNmM1NThlZWZkZGI0YThmZDFi
ODlmYzlmNmE1OWE1ODFjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7
CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsK
ICAgICAKICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBieXRlcyBhZnRl
ciAicG9zaXRpb24iLiAiZGF0YSIKICAgICAvLyBwb2ludHMgdG8gdGhlIGZpcnN0IGJ5dGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3Bw
CmluZGV4IDg1YTkwMDA4NzlkNDI4ZjRiNzVlMmYwNzMyYmZmYTcyY2RiNTE0ZmQuLjYyY2ZhNzMz
NTdkNTVhOWI5MWY3MDQxNmI2OWZlZTk0NjRmYzM3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIAotI2luY2x1ZGUgIkFzeW5jVGFzay5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgpAQCAtMTMxLDcgKzEzMCwxMCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vz
czo6aW5pdGlhbGl6ZURhdGFiYXNlUHJvY2Vzcyhjb25zdCBEYXRhYmFzZVByb2Nlc3NDcmVhdGlv
blBhcgogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZW5zdXJlSW5kZXhlZERhdGFiYXNlUmVsYXRp
dmVQYXRoRXhpc3RzKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQogewotICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmRGF0YWJhc2VQcm9jZXNzOjplbnN1cmVQ
YXRoRXhpc3RzLCBhYnNvbHV0ZUluZGV4ZWREYXRhYmFzZVBhdGhGcm9tRGF0YWJhc2VSZWxhdGl2
ZVBhdGgocmVsYXRpdmVQYXRoKSkpOworICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRQYXRoKGFi
c29sdXRlSW5kZXhlZERhdGFiYXNlUGF0aEZyb21EYXRhYmFzZVJlbGF0aXZlUGF0aChyZWxhdGl2
ZVBhdGgpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKFt0aGlzLCBjYXB0dXJlZFBhdGhdIHsKKyAg
ICAgICAgZW5zdXJlUGF0aEV4aXN0cyhjYXB0dXJlZFBhdGguc3RyaW5nKCkpOworICAgIH0pOwog
fQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZW5zdXJlUGF0aEV4aXN0cyhjb25zdCBTdHJpbmcm
IHBhdGgpCkBAIC0xNDksNyArMTUxLDcgQEAgU3RyaW5nIERhdGFiYXNlUHJvY2Vzczo6YWJzb2x1
dGVJbmRleGVkRGF0YWJhc2VQYXRoRnJvbURhdGFiYXNlUmVsYXRpdmVQYXRoKGNvbnMKICAgICBy
ZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
LCByZWxhdGl2ZVBhdGgpOwogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNl
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrKQordm9pZCBEYXRhYmFzZVByb2Nl
c3M6OnBvc3REYXRhYmFzZVRhc2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPiB0YXNrKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE2NiwxNCArMTY4LDE0IEBAIHZvaWQg
RGF0YWJhc2VQcm9jZXNzOjpwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0
YXNrOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gdGFzazsKICAgICB7CiAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKICAgICAgICAgQVNTRVJUKCFt
X2RhdGFiYXNlVGFza3MuaXNFbXB0eSgpKTsKICAgICAgICAgdGFzayA9IG1fZGF0YWJhc2VUYXNr
cy50YWtlRmlyc3QoKTsKICAgICB9CiAKLSAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIHRh
c2soKTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbigpCkBAIC0yOTIsOSArMjk0LDkgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6
OmdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Y28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjpt
YWtlX3VuaXF1ZTxBc3luY1Rhc2s+KFtjb21wbGV0aW9uLCB0aGlzXSB7CisgICAgcG9zdERhdGFi
YXNlVGFzayhbdGhpcywgY29tcGxldGlvbl0gewogICAgICAgICBjb21wbGV0aW9uKGdldEluZGV4
ZWREYXRhYmFzZU9yaWdpbnMoKSk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiB2b2lkIERhdGFi
YXNlUHJvY2Vzczo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFUeXBlcyB0eXBl
cywgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gY29tcGxldGlvbikKQEAgLTMwNCwxMCArMzA2LDEwIEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNz
OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBjb25zdCBT
ZWN1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6
bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywgb3JpZ2luLCBjb21wbGV0aW9uXSB7CisgICAg
cG9zdERhdGFiYXNlVGFzayhbdGhpcywgb3JpZ2luLCBjb21wbGV0aW9uXSB7CiAgICAgICAgIGRl
bGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgY29t
cGxldGlvbigpOwotICAgIH0pKTsKKyAgICB9KTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6
OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBl
cywgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gY29tcGxldGlvbikKQEAgLTMxNywxMCArMzE5LDEwIEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNz
OjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlw
ZXMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6
bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywgc3RhcnREYXRlLCBlbmREYXRlLCBjb21wbGV0
aW9uXSB7CisgICAgcG9zdERhdGFiYXNlVGFzayhbdGhpcywgc3RhcnREYXRlLCBlbmREYXRlLCBj
b21wbGV0aW9uXSB7CiAgICAgICAgIGRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmll
ZEJldHdlZW5EYXRlcyhzdGFydERhdGUsIGVuZERhdGUpOwogICAgICAgICBjb21wbGV0aW9uKCk7
Ci0gICAgfSkpOworICAgIH0pOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlQWxs
RW50cmllcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBj
b21wbGV0aW9uKQpAQCAtMzMwLDEwICszMzIsMTAgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRl
bGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm8K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtl
X3VuaXF1ZTxBc3luY1Rhc2s+KFt0aGlzLCBjb21wbGV0aW9uXSB7CisgICAgcG9zdERhdGFiYXNl
VGFzayhbdGhpcywgY29tcGxldGlvbl0gewogICAgICAgICBkZWxldGVBbGxJbmRleGVkRGF0YWJh
c2VFbnRyaWVzKCk7CiAgICAgICAgIGNvbXBsZXRpb24oKTsKLSAgICB9KSk7CisgICAgfSk7CiB9
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKaW5kZXggYjJiMjRlZWExM2ZmYjgxZjNjZjc5MDQ3ZGZj
NzAxODQ0M2Y1YWExNi4uN2ViOWIyZmY2YTVlNjkzMDk4MDIwMjgwYTVlYTA2MDhjNGVkNjRmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3Mu
aApAQCAtMzcsNyArMzcsNiBAQCBjbGFzcyBXb3JrUXVldWU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBBc3luY1Rhc2s7CiBjbGFzcyBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b247CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKIGNsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
OwpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVJbmRleGVkRGF0YWJh
c2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVu
ZERhdGUpOwogICAgIHZvaWQgZGVsZXRlQWxsSW5kZXhlZERhdGFiYXNlRW50cmllcygpOwogCi0g
ICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+KTsKKyAg
ICB2b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CiAKIHByaXZh
dGU6CiAgICAgRGF0YWJhc2VQcm9jZXNzKCk7CkBAIC0xMDgsNyArMTA3LDcgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hNYXA8VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLCBSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2U+PiBtX2lkYkRhdGFiYXNlczsKIAotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0
cjxBc3luY1Rhc2s+PiBtX2RhdGFiYXNlVGFza3M7CisgICAgRGVxdWU8c3RkOjpmdW5jdGlvbjx2
b2lkICgpPj4gbV9kYXRhYmFzZVRhc2tzOwogICAgIE11dGV4IG1fZGF0YWJhc2VUYXNrTXV0ZXg7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViT3JpZ2luRGF0YU1hbmFnZXI+IG1fd2ViT3JpZ2lu
RGF0YU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGIzMDEyMjVhMGEw
YmJiYzU0YzJiZmJiM2UxMmE4OGYxNTAxNjRmMTYuLjViMWNmNzQxYTRiN2EwNTFkYTZhNTdmOTFi
YTYwMzIzYzMyYmFlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0yOSw3ICsy
OSw2IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiQXN5bmNSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiQXN5bmNUYXNr
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaCIKQEAgLTEzOSw3
ICsxMzgsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd24oVW5pcXVlSURCRGF0
YWJhc2VTaHV0ZG93blR5cGUgdHlwZSkKICAgICAgICAgbV9kYXRhYmFzZVRhc2tzLmNsZWFyKCk7
CiAgICAgfQogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25CYWNraW5nU3RvcmUsIHR5cGUsIGFic29sdXRlRGF0
YWJhc2VEaXJlY3RvcnkoKSksIERhdGFiYXNlVGFza1R5cGU6OlNodXRkb3duKTsKKyAgICBSZWZQ
dHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOworICAgIFN0cmluZ0NhcHR1cmUg
Y2FwdHVyZWREaXJlY3RvcnkoYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBwb3N0
RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgdHlwZSwgY2FwdHVyZWREaXJlY3RvcnldIHsKKyAgICAg
ICAgZGF0YWJhc2UtPnNodXRkb3duQmFja2luZ1N0b3JlKHR5cGUsIGNhcHR1cmVkRGlyZWN0b3J5
LnN0cmluZygpKTsKKyAgICB9LCBEYXRhYmFzZVRhc2tUeXBlOjpTaHV0ZG93bik7CiB9CiAKIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0b3JlKFVuaXF1ZUlEQkRhdGFi
YXNlU2h1dGRvd25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCkBA
IC0xNTUsNyArMTU4LDEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2lu
Z1N0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlIHR5cGUsCiAgICAgICAgIGRlbGV0
ZUVtcHR5RGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KTsKICAgICB9CiAKLSAgICBwb3N0TWFp
blRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRp
ZFNodXRkb3duQmFja2luZ1N0b3JlLCB0eXBlKSwgRGF0YWJhc2VUYXNrVHlwZTo6U2h1dGRvd24p
OworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgcG9z
dE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgdHlwZV0geworICAgICAgICBkYXRhYmFzZS0+ZGlk
U2h1dGRvd25CYWNraW5nU3RvcmUodHlwZSk7CisgICAgfSwgRGF0YWJhc2VUYXNrVHlwZTo6U2h1
dGRvd24pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRTaHV0ZG93bkJhY2tpbmdT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSB0eXBlKQpAQCAtMjQ2LDggKzI1Miwx
NCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0
YWRhdGEoc3RkOjpmdW5jdGlvbjx2b2lkIChibwogCiAgICAgbV9wZW5kaW5nTWV0YWRhdGFSZXF1
ZXN0cy5hcHBlbmQocmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgaWYgKHNob3VsZE9wZW5CYWNr
aW5nU3RvcmUpCi0gICAgICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEsIG1f
aWRlbnRpZmllciwgYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKHNob3Vs
ZE9wZW5CYWNraW5nU3RvcmUpIHsKKyAgICAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBk
YXRhYmFzZSh0aGlzKTsKKyAgICAgICAgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyIGNhcHR1
cmVkSWRlbnRpZmllcihtX2lkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBTdHJp
bmdDYXB0dXJlIGNhcHR1cmVkRGlyZWN0b3J5KGFic29sdXRlRGF0YWJhc2VEaXJlY3RvcnkoKSk7
CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2soW2RhdGFiYXNlLCBjYXB0dXJlZElkZW50aWZpZXIs
IGNhcHR1cmVkRGlyZWN0b3J5XSB7CisgICAgICAgICAgICBkYXRhYmFzZS0+b3BlbkJhY2tpbmdT
dG9yZUFuZFJlYWRNZXRhZGF0YShjYXB0dXJlZElkZW50aWZpZXIsIGNhcHR1cmVkRGlyZWN0b3J5
LnN0cmluZygpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpvcGVuQmFja2luZ1N0b3JlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVuaXF1ZUlEQkRhdGFi
YXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9y
eSkKQEAgLTI2Myw3ICsyNzUsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tp
bmdTdG9yZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUkKICAgICBtX2Jh
Y2tpbmdTdG9yZSA9IFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVhdGUo
aWRlbnRpZmllciwgZGF0YWJhc2VEaXJlY3RvcnkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJE
YXRhYmFzZU1ldGFkYXRhPiBtZXRhZGF0YSA9IG1fYmFja2luZ1N0b3JlLT5nZXRPckVzdGFibGlz
aE1ldGFkYXRhKCk7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRh
dGEsIG1ldGFkYXRhID8gKm1ldGFkYXRhIDogSURCRGF0YWJhc2VNZXRhZGF0YSgpLCAhIW1ldGFk
YXRhKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAg
ICBhdXRvKiBtZXRhZGF0YVB0ciA9IG1ldGFkYXRhLnJlbGVhc2UoKTsKKyAgICBwb3N0TWFpblRo
cmVhZFRhc2soW2RhdGFiYXNlLCBtZXRhZGF0YVB0cl0geworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCRGF0YWJhc2VNZXRhZGF0YT4gbWV0YWRhdGEobWV0YWRhdGFQdHIpOworICAgICAgICBk
YXRhYmFzZS0+ZGlkT3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YShtZXRhZGF0YSA/ICpt
ZXRhZGF0YSA6IElEQkRhdGFiYXNlTWV0YWRhdGEoKSwgISFtZXRhZGF0YSk7CisgICAgfSk7CiB9
CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0
YWRhdGEoY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGJvb2wgc3VjY2VzcykK
QEAgLTI4NCwzMCArMzAxLDU1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNr
aW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEoY29uc3QgSURCRGF0YWJhc2VNZXRhCiAKIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6Om9wZW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMs
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9v
bCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSURzLCBtb2RlKSwgc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBSZWZQdHI8VW5p
cXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOworICAgIElEQklkZW50aWZpZXIgY2FwdHVy
ZWRJZGVudGlmaWVyKHRyYW5zYWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSk7CisgICAg
cG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwKKyAgICAgICAg
W2RhdGFiYXNlLCBjYXB0dXJlZElkZW50aWZpZXIsIG9iamVjdFN0b3JlSURzLCBtb2RlXSB7Cisg
ICAgICAgICAgICBkYXRhYmFzZS0+b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNhcHR1cmVk
SWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRHMsIG1vZGUpOworICAgICAgICB9LCBXVEY6Om1vdmUo
c3VjY2Vzc0NhbGxiYWNrKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luVHJh
bnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgcG9zdFRyYW5z
YWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRy
YW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVk
SWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBv
c3RUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsCisgICAgICAgIFtk
YXRhYmFzZSwgY2FwdHVyZWRJZGVudGlmaWVyXSB7CisgICAgICAgICAgICBkYXRhYmFzZS0+YmVn
aW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjYXB0dXJlZElkZW50aWZpZXIpOworICAgICAgICB9
LCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewot
ICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNyZWF0
ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKKyAg
ICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOworICAgIElEQklkZW50
aWZpZXIgY2FwdHVyZWRJZGVudGlmaWVyKHRyYW5zYWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENv
cHkoKSk7CisgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwKKyAgICAgICAgW2RhdGFiYXNlLCBjYXB0dXJlZElkZW50aWZpZXJdIHsKKyAgICAgICAgICAg
IGRhdGFiYXNlLT5jb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjYXB0dXJlZElkZW50aWZp
ZXIpOworICAgICAgICB9LCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSk7CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spCiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3ND
YWxsYmFjayk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsK
KyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2Fj
dGlvbklkZW50aWZpZXIsCisgICAgICAgIFtkYXRhYmFzZSwgY2FwdHVyZWRJZGVudGlmaWVyXSB7
CisgICAgICAgICAgICBkYXRhYmFzZS0+cmVzZXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjYXB0
dXJlZElkZW50aWZpZXIpOworICAgICAgICB9LCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSk7
CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrVHJhbnNhY3Rpb24oY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OnJvbGxiYWNrQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRl
bnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0
cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3RUcmFuc2FjdGlv
bk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsCisgICAgICAgIFtkYXRhYmFzZSwgY2Fw
dHVyZWRJZGVudGlmaWVyXSB7CisgICAgICAgICAgICBkYXRhYmFzZS0+cm9sbGJhY2tCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbihjYXB0dXJlZElkZW50aWZpZXIpOworICAgICAgICB9LCBXVEY6Om1v
dmUoc3VjY2Vzc0NhbGxiYWNrKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RU
cmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2ssIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RU
cmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gdGFzaywgc3RkOjpmdW5jdGlvbjx2b2lkIChi
b29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKQEAgLTM3MCw3ICs0MTIsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0
YWJhc2VWZXJzaW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWQKICAgICB1aW50
NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRh
YmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3RE
YXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmNo
YW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgbmV3VmVyc2lvbikpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4g
ZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZpZXIgPSB0
cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgcG9zdERhdGFiYXNlVGFz
ayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBuZXdWZXJzaW9uXSB7
CisgICAgICAgIGRhdGFiYXNlLT5jaGFuZ2VEYXRhYmFzZVZlcnNpb25JbkJhY2tpbmdTdG9yZShy
ZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwgbmV3VmVyc2lvbik7CisgICAgfSk7CiB9CiAK
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZENoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRf
dCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKQEAgLTQzNiw3ICs0ODIsMTIgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGkKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0
SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3Qu
cmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUsIHJl
cXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtZXRhZGF0YSkpOworICAgIFJlZlB0cjxV
bmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0
dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIGNhcHR1cmVkTWV0YWRhdGEobWV0YWRhdGEuaXNvbGF0
ZWRDb3B5KCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SUQsIGNh
cHR1cmVkSWRlbnRpZmllciwgY2FwdHVyZWRNZXRhZGF0YV0geworICAgICAgICBkYXRhYmFzZS0+
Y3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRp
ZmllciwgY2FwdHVyZWRNZXRhZGF0YSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiBzdWNjZXNzQ2FsbGJhY2spCkBAIC00NjMsNyArNTE0LDExIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7
CiAgICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVh
c2UoKSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0
SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCkpOworICAgIFJlZlB0cjxV
bmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0
dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBwb3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZElkZW50aWZp
ZXIsIG9iamVjdFN0b3JlSURdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRlbGV0ZU9iamVjdFN0b3Jl
SW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBjYXB0dXJlZElkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SUQpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBv
YmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2sp
CkBAIC00ODYsNyArNTQxLDExIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0
U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmCiAgICAgdWludDY0
X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5kaW5nRGF0YWJh
c2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAgICBwb3N0RGF0
YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVh
ck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlEKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRh
YmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0cmFuc2Fj
dGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soW2Rh
dGFiYXNlLCByZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRF0gewor
ICAgICAgICBkYXRhYmFzZS0+Y2xlYXJPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHJlcXVlc3RJ
RCwgY2FwdHVyZWRJZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmIG1ldGFkYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2Fs
bGJhY2spCkBAIC01MjAsNyArNTc5LDEyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0
ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwKICAgICB1
aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdE
YXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBv
c3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmNyZWF0ZUluZGV4SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlELCBtZXRhZGF0YSkpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRh
YmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZp
ZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAgICBJREJJbmRleE1l
dGFkYXRhIGNhcHR1cmVkTWV0YWRhdGEobWV0YWRhdGEuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBv
c3REYXRhYmFzZVRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwg
b2JqZWN0U3RvcmVJRCwgY2FwdHVyZWRNZXRhZGF0YV0geworICAgICAgICBkYXRhYmFzZS0+Y3Jl
YXRlSW5kZXhJbkJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIGNhcHR1cmVkSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJRCwgY2FwdHVyZWRNZXRhZGF0YSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKQEAgLTU1NCw3ICs2MTgsMTEg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVl
c3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJ
RCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3lu
Y1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXhJbkJhY2tpbmdTdG9y
ZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4
SUQpKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOworICAg
IElEQklkZW50aWZpZXIgY2FwdHVyZWRJZGVudGlmaWVyKHRyYW5zYWN0aW9uSWRlbnRpZmllci5p
c29sYXRlZENvcHkoKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJ
RCwgY2FwdHVyZWRJZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElEXSB7CisgICAgICAg
IGRhdGFiYXNlLT5kZWxldGVJbmRleEluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgY2FwdHVyZWRJ
ZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElEKTsKKyAgICB9KTsKIH0KIAogdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJLZXlEYXRhJiBr
ZXlEYXRhLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUs
IGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8SURC
S2V5RGF0YT4+JiBpbmRleEtleXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCS2V5RGF0
YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCkBAIC01NzcsNyArNjQ1LDE1
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZChjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGluCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVx
dWVzdC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVz
dElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9y
ZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1fbWV0YWRhdGEtPm9iamVjdFN0
b3Jlcy5nZXQob2JqZWN0U3RvcmVJRCksIGtleURhdGEsIHZhbHVlLnZlY3RvcigpLCBwdXRNb2Rl
LCBpbmRleElEcywgaW5kZXhLZXlzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBk
YXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0cmFu
c2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIElEQk9iamVjdFN0b3JlTWV0
YWRhdGEgY2FwdHVyZWRNZXRhZGF0YShtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZ2V0KG9iamVj
dFN0b3JlSUQpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBJREJLZXlEYXRhIGNhcHR1cmVkS2V5RGF0
YShrZXlEYXRhLmlzb2xhdGVkQ29weSgpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmFsdWVWZWN0
b3IodmFsdWUudmVjdG9yKCkpOworCisgICAgcG9zdERhdGFiYXNlVGFzayhbZGF0YWJhc2UsIHJl
cXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBjYXB0dXJlZE1ldGFkYXRhLCBjYXB0dXJlZEtl
eURhdGEsIHZhbHVlVmVjdG9yLCBwdXRNb2RlLCBpbmRleElEcywgaW5kZXhLZXlzXSB7CisgICAg
ICAgIGRhdGFiYXNlLT5wdXRSZWNvcmRJbkJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIGNhcHR1cmVk
SWRlbnRpZmllciwgY2FwdHVyZWRNZXRhZGF0YSwgY2FwdHVyZWRLZXlEYXRhLCB2YWx1ZVZlY3Rv
ciwgcHV0TW9kZSwgaW5kZXhJRHMsIGluZGV4S2V5cyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBjb25z
dCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1
cnNvclR5cGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCR2V0UmVzdWx0JiwgdWludDMy
X3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKQEAgLTYwMCw3ICs2NzYsMTMgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgaW4KICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1
ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVl
c3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVl
c3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZ2V0
KG9iamVjdFN0b3JlSUQpLCBpbmRleElELCBrZXlSYW5nZURhdGEsIGN1cnNvclR5cGUpKTsKKyAg
ICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOworICAgIElEQklkZW50
aWZpZXIgY2FwdHVyZWRJZGVudGlmaWVyKHRyYW5zYWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENv
cHkoKSk7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBjYXB0dXJlZE1ldGFkYXRhKG1fbWV0
YWRhdGEtPm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJRCkuaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIElEQktleVJhbmdlRGF0YSBjYXB0dXJlZEtleVJhbmdlRGF0YShrZXlSYW5nZURhdGEuaXNv
bGF0ZWRDb3B5KCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SUQs
IGNhcHR1cmVkSWRlbnRpZmllciwgY2FwdHVyZWRNZXRhZGF0YSwgaW5kZXhJRCwgY2FwdHVyZWRL
ZXlSYW5nZURhdGEsIGN1cnNvclR5cGVdIHsKKyAgICAgICAgZGF0YWJhc2UtPmdldFJlY29yZEZy
b21CYWNraW5nU3RvcmUocmVxdWVzdElELCBjYXB0dXJlZElkZW50aWZpZXIsIGNhcHR1cmVkTWV0
YWRhdGEsIGluZGV4SUQsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhLCBjdXJzb3JUeXBlKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50
NjRfdCBpbmRleElELCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBjdXJzb3JEaXJlY3Rpb24s
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRh
c2tUeXBlIHRhc2tUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChpbnQ2NF90LCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCS2V5
RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYp
PiBjYWxsYmFjaykKQEAgLTYyMyw3ICs3MDUsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
b3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGkK
ICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3Bl
bmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAot
ICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6Om9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRpcmVjdGlvbiwgY3Vyc29y
VHlwZSwgdGFza1R5cGUsIGtleVJhbmdlRGF0YSkpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRh
YmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZp
ZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAgICBJREJLZXlSYW5n
ZURhdGEgY2FwdHVyZWRLZXlSYW5nZURhdGEoa2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpKTsK
KyAgICBwb3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZElkZW50
aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRpcmVjdGlvbiwgY3Vyc29yVHlw
ZSwgdGFza1R5cGUsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhXSB7CisgICAgICAgIGRhdGFiYXNlLT5v
cGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBjYXB0dXJlZElkZW50aWZpZXIsIG9i
amVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5
cGUsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y3Vyc29yQWR2YW5jZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlm
aWVyLCB1aW50NjRfdCBjb3VudCwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJLZXlEYXRh
JiwgY29uc3QgSURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKQEAgLTY0NCw3ICs3MzEsMTEgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y3Vyc29yQWR2YW5jZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJ
ZGVudGlmaWVyLCB1aW4KICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0
SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3Qu
cmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVz
dElELCBjdXJzb3JJZGVudGlmaWVyLCBjb3VudCkpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRh
YmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZp
ZXIoY3Vyc29ySWRlbnRpZmllci5pc29sYXRlZENvcHkoKSk7CisgICAgcG9zdERhdGFiYXNlVGFz
ayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBjb3VudF0geworICAg
ICAgICBkYXRhYmFzZS0+YWR2YW5jZUN1cnNvckluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgY2Fw
dHVyZWRJZGVudGlmaWVyLCBjb3VudCk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmN1cnNvckl0ZXJhdGUoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmll
ciwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCB1aW50
MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKQpAQCAtNjY1LDcgKzc1NiwxMiBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JJdGVyYXRlKGNvbnN0IElEQklkZW50aWZpZXImIGN1
cnNvcklkZW50aWZpZXIsIGNvbgogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJl
cXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVx
dWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2so
KnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlLCBy
ZXF1ZXN0SUQsIGN1cnNvcklkZW50aWZpZXIsIGtleSkpOworICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50
aWZpZXIoY3Vyc29ySWRlbnRpZmllci5pc29sYXRlZENvcHkoKSk7CisgICAgSURCS2V5RGF0YSBj
YXB0dXJlZEtleURhdGEoa2V5Lmlzb2xhdGVkQ29weSgpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNr
KFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZElkZW50aWZpZXIsIGNhcHR1cmVkS2V5RGF0
YV0geworICAgICAgICBkYXRhYmFzZS0+aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHJlcXVl
c3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBjYXB0dXJlZEtleURhdGEpOworICAgIH0pOwogfQog
CiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElE
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgc3RkOjpmdW5jdGlvbjx2b2lk
IChpbnQ2NF90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKQpAQCAtNjg2LDgg
Kzc4MiwxMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudChjb25zdCBJREJJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0XwogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
RCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRk
KHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhj
cmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y291bnRJbkJhY2tpbmdT
dG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGlu
ZGV4SUQsIGtleVJhbmdlRGF0YSkpOwotfQorICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4g
ZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZpZXIodHJh
bnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAgICBJREJLZXlSYW5nZURhdGEg
Y2FwdHVyZWRLZXlSYW5nZURhdGEoa2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpKTsKKyAgICBw
b3N0RGF0YWJhc2VUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZElkZW50aWZpZXIs
IG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhXSB7CisgICAgICAg
IGRhdGFiYXNlLT5jb3VudEluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElELCBjYXB0dXJlZEtleVJhbmdlRGF0YSk7CisgICAg
fSk7CisgICAgfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZShjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAodWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKIHsKQEAgLTcwNyw3ICs4MDgs
MTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJl
cXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJlcXVl
c3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2VJbkJhY2tpbmdT
dG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGtl
eVJhbmdlRGF0YSkpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhp
cyk7CisgICAgSURCSWRlbnRpZmllciBjYXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLmlzb2xhdGVkQ29weSgpKTsKKyAgICBJREJLZXlSYW5nZURhdGEgY2FwdHVyZWRLZXlS
YW5nZURhdGEoa2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpKTsKKyAgICBwb3N0RGF0YWJhc2VU
YXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZElkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SUQsIGNhcHR1cmVkS2V5UmFuZ2VEYXRhXSB7CisgICAgICAgIGRhdGFiYXNlLT5kZWxldGVSYW5n
ZUluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgY2FwdHVyZWRJZGVudGlmaWVyLCBvYmplY3RTdG9y
ZUlELCBjYXB0dXJlZEtleVJhbmdlRGF0YSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3Rv
cmVJRHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUpCkBAIC03MTcsOCArODIzLDEy
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjCiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tp
bmdTdG9yZS0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUlEcywgbW9kZSk7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEVzdGFibGlzaFRyYW5zYWN0aW9uLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKLSAgICBwb3N0TWFpblRocmVhZFRhc2so
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOworICAg
IFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRp
ZmllciBjYXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29w
eSgpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCBjYXB0dXJlZElkZW50aWZp
ZXIsIHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZEVzdGFibGlzaFRyYW5zYWN0aW9u
KGNhcHR1cmVkSWRlbnRpZmllciwgc3VjY2Vzcyk7CisgICAgICAgIGRhdGFiYXNlLT5kaWRDb21w
bGV0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKGNhcHR1cmVkSWRlbnRpZmllciwgc3VjY2Vzcyk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQpAQCAt
NzI4LDcgKzgzOCwxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpbkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYQogCiAgICAgYm9vbCBzdWNj
ZXNzID0gbV9iYWNraW5nU3RvcmUtPmJlZ2luVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0
cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3RNYWluVGhyZWFk
VGFzayhbZGF0YWJhc2UsIGNhcHR1cmVkSWRlbnRpZmllciwgc3VjY2Vzc10geworICAgICAgICBk
YXRhYmFzZS0+ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbihjYXB0dXJlZElkZW50aWZp
ZXIsIHN1Y2Nlc3MpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21t
aXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIpCkBAIC03MzgsNyArODUyLDExIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmNvbW1pdEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
CiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Y29tbWl0VHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlv
bk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgUmVmUHRy
PFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJJZGVudGlmaWVyIGNh
cHR1cmVkSWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIGNhcHR1cmVkSWRlbnRpZmllciwgc3Vj
Y2Vzc10geworICAgICAgICBkYXRhYmFzZS0+ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlv
bihjYXB0dXJlZElkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpyZXNldEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKQEAgLTc0OCw4ICs4NjYsMTIgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cmVzZXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJ
ZGVudGlmaWVyJiB0cmFuc2EKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5y
ZXNldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICBwb3N0TWFpblRo
cmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFJl
c2V0VHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOwotICAgIHBv
c3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlz
KTsKKyAgICBJREJJZGVudGlmaWVyIGNhcHR1cmVkSWRlbnRpZmllcih0cmFuc2FjdGlvbklkZW50
aWZpZXIuaXNvbGF0ZWRDb3B5KCkpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2Us
IGNhcHR1cmVkSWRlbnRpZmllciwgc3VjY2Vzc10geworICAgICAgICBkYXRhYmFzZS0+ZGlkUmVz
ZXRUcmFuc2FjdGlvbihjYXB0dXJlZElkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAgICAgICBkYXRh
YmFzZS0+ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbihjYXB0dXJlZElkZW50aWZpZXIs
IHN1Y2Nlc3MpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyb2xsYmFj
a0JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikKQEAgLTc1OSw3ICs4ODEsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmEK
IAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5yb2xsYmFja1RyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRl
QXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOworICAgIFJlZlB0
cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgSURCSWRlbnRpZmllciBj
YXB0dXJlZElkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKTsK
KyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCBjYXB0dXJlZElkZW50aWZpZXIsIHN1
Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oY2FwdHVyZWRJZGVudGlmaWVyLCBzdWNjZXNzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG5ld1ZlcnNpb24pCkBAIC03NjksNyArODk1LDEwIEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJl
cXVlc3RJRCwKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5jaGFuZ2VEYXRh
YmFzZVZlcnNpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBuZXdWZXJzaW9uKTsKIAotICAgIHBv
c3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uLCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOworICAgIHBvc3RNYWluVGhy
ZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgc3VjY2Vzc10geworICAgICAgICBkYXRhYmFz
ZS0+ZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHJlcXVlc3RJRCwgc3VjY2Vzcyk7CisgICAgfSk7
CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5n
U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhKQpAQCAt
Nzc5LDcgKzkwOCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29ucwogCiAgICAgYm9vbCBzdWNj
ZXNzID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgbWV0YWRhdGEpOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVPYmplY3RTdG9yZSwgcmVxdWVz
dElELCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0
aGlzKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SUQsIHN1Y2Nl
c3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZENyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3RJRCwg
c3VjY2Vzcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9i
amVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKQEAg
LTc4OSw3ICs5MjEsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3Rv
cmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnMKIAogICAgIGJvb2wgc3Vj
Y2VzcyA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50
aWZpZXIsIG9iamVjdFN0b3JlSUQpOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVPYmplY3RTdG9yZSwg
cmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRh
YmFzZSh0aGlzKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SUQs
IHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlcXVl
c3RJRCwgc3VjY2Vzcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNs
ZWFyT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElE
QklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlE
KQpAQCAtNzk5LDcgKzkzNCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVj
dFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdAogCiAgICAgYm9v
bCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ2xlYXJPYmplY3RTdG9y
ZSwgcmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBk
YXRhYmFzZSh0aGlzKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0
SUQsIHN1Y2Nlc3NdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZENsZWFyT2JqZWN0U3RvcmUocmVx
dWVzdElELCBzdWNjZXNzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBj
b25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTgwOSw3ICs5NDcsMTAgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IElEQkkKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3Jl
LT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIG1ldGFk
YXRhKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkQ3JlYXRlSW5kZXgsIHJlcXVlc3RJRCwgc3VjY2VzcykpOwor
ICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisgICAgcG9zdE1h
aW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBzdWNjZXNzXSB7CisgICAgICAgIGRh
dGFiYXNlLT5kaWRDcmVhdGVJbmRleChyZXF1ZXN0SUQsIHN1Y2Nlc3MpOworICAgIH0pOwogfQog
CiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleEluQmFja2luZ1N0b3JlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCkKQEAgLTgxOSw3ICs5NjAs
MTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQkkKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFj
a2luZ1N0b3JlLT5kZWxldGVJbmRleCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SUQsIGluZGV4SUQpOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVJbmRleCwgcmVxdWVzdElELCBzdWNj
ZXNzKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAg
ICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SUQsIHN1Y2Nlc3NdIHsKKyAg
ICAgICAgZGF0YWJhc2UtPmRpZERlbGV0ZUluZGV4KHJlcXVlc3RJRCwgc3VjY2Vzcyk7CisgICAg
fSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3Jl
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb24sIGNv
bnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEsIGNvbnN0IElE
QktleURhdGEmIGlucHV0S2V5RGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZSwgaW50
NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0
b3I8VmVjdG9yPElEQktleURhdGE+PiYgaW5kZXhLZXlzKQpAQCAtODMwLDEwICs5NzQsMTMgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBJREJJZGUKICAgICBib29sIGtleVdhc0dlbmVyYXRlZCA9IGZhbHNl
OwogICAgIElEQktleURhdGEga2V5OwogICAgIGludDY0X3Qga2V5TnVtYmVyID0gMDsKKyAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOwogCiAgICAgaWYgKHB1dE1v
ZGUgIT0gSURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgb2JqZWN0U3RvcmVNZXRh
ZGF0YS5hdXRvSW5jcmVtZW50ICYmIGlucHV0S2V5RGF0YS5pc051bGwpIHsKICAgICAgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZS0+Z2VuZXJhdGVLZXlOdW1iZXIodHJhbnNhY3Rpb24sIG9iamVjdFN0
b3JlTWV0YWRhdGEuaWQsIGtleU51bWJlcikpIHsKLSAgICAgICAgICAgIHBvc3RNYWluVGhyZWFk
VGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVj
b3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3Rv
cmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVuY2UiKSkpOworICAgICAgICAgICAgcG9z
dE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElEXSB7CisgICAgICAgICAgICAgICAg
ZGF0YWJhc2UtPmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgSURCS2V5RGF0
YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIklu
dGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVuY2UiKSk7
CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBrZXkuc2V0TnVtYmVyVmFsdWUoa2V5TnVtYmVyKTsKQEAgLTg0NCwxMSArOTkxLDE1IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgSURCSWRlCiAgICAgaWYgKHB1dE1vZGUgPT0gSURCRGF0YWJhc2VCYWNr
ZW5kOjpBZGRPbmx5KSB7CiAgICAgICAgIGJvb2wga2V5RXhpc3RzOwogICAgICAgICBpZiAoIW1f
YmFja2luZ1N0b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLCBvYmplY3RT
dG9yZU1ldGFkYXRhLmlkLCBrZXksIGtleUV4aXN0cykpIHsKLSAgICAgICAgICAgIHBvc3RNYWlu
VGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
UHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tp
bmcgc3RvcmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVuY2UiKSkpOworICAgICAgICAg
ICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElEXSB7CisgICAgICAgICAg
ICAgICAgZGF0YWJhc2UtPmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgSURC
S2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVy
YWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVu
Y2UiKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoa2V5RXhpc3RzKSB7Ci0gICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2so
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZElu
QmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRp
b246OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgYWxyZWFkeSBleGlzdHMgaW4g
dGhlIG9iamVjdCBzdG9yZSIpKSk7CisgICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soW2Rh
dGFiYXNlLCByZXF1ZXN0SURdIHsKKyAgICAgICAgICAgICAgICBkYXRhYmFzZS0+ZGlkUHV0UmVj
b3JkSW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IGFscmVhZHkgZXhpc3Rz
IGluIHRoZSBvYmplY3Qgc3RvcmUiKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTg1NiwxMiArMTAwNywxNiBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IElEQklkZQogICAgIC8vIFRoZSBzcGVjIHNheXMgdGhhdCBldmVuIGlmIHdlJ3JlIGFi
b3V0IHRvIG92ZXJ3cml0ZSB0aGUgcmVjb3JkLCBwZXJmb3JtIHRoZSBzdGVwcyB0byBkZWxldGUg
aXQgZmlyc3QuCiAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBmb3JtYWxseSBkZWxl
dGluZyBpdCBmcm9tIGZyb20gdGhlIG9iamVjdCBzdG9yZSBhbHNvIHJlbW92ZXMgaXQgZnJvbSB0
aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kZWxldGVS
ZWNvcmQodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQsIGtleSkpIHsKLSAgICAg
ICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRh
KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVw
bGFjaW5nIGFuIGV4aXN0aW5nIGtleSBpbiBiYWNraW5nIHN0b3JlLCB1bmFibGUgdG8gZGVsZXRl
IHByZXZpb3VzIHJlY29yZC4iKSkpOworICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFi
YXNlLCByZXF1ZXN0SURdIHsKKyAgICAgICAgICAgIGRhdGFiYXNlLT5kaWRQdXRSZWNvcmRJbkJh
Y2tpbmdTdG9yZShyZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJSZXBsYWNpbmcgYW4gZXhpc3Rpbmcga2V5IGlu
IGJhY2tpbmcgc3RvcmUsIHVuYWJsZSB0byBkZWxldGUgcHJldmlvdXMgcmVjb3JkLiIpKTsKKyAg
ICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1fYmFja2luZ1N0
b3JlLT5wdXRSZWNvcmQodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQsIGtleSwg
dmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpKSB7Ci0gICAgICAgIHBvc3RNYWluVGhyZWFkVGFz
ayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3Jk
SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUg
ZXJyb3IgcHV0dGluZyBhIHJlY29yZCIpKSk7CisgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhb
ZGF0YWJhc2UsIHJlcXVlc3RJRF0geworICAgICAgICAgICAgZGF0YWJhc2UtPmRpZFB1dFJlY29y
ZEluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUg
ZXJyb3IgcHV0dGluZyBhIHJlY29yZCIpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTg2OSw3ICsxMDI0LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0
UmVjb3JkSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGUKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4SURzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kZXhLZXlzW2ldLnNpemUoKTsgKytqKSB7CiAgICAg
ICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5wdXRJbmRleFJlY29yZCh0cmFuc2FjdGlvbiwg
b2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwgaW5kZXhJRHNbaV0sIGtleSwgaW5kZXhLZXlzW2ldW2pd
KSkgewotICAgICAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2so
KnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJl
cXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3Igd3JpdGluZyBpbmRl
eCBrZXkiKSkpOworICAgICAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2Us
IHJlcXVlc3RJRF0geworICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZS0+ZGlkUHV0UmVjb3Jk
SW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBl
cnJvciB3cml0aW5nIGluZGV4IGtleSIpKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTg3OSwxMiArMTAz
NiwxNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZQogCiAgICAgaWYgKHB1dE1vZGUgIT0gSURC
RGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgb2JqZWN0U3RvcmVNZXRhZGF0YS5hdXRv
SW5jcmVtZW50ICYmIGtleS50eXBlID09IElEQktleTo6TnVtYmVyVHlwZSkgewogICAgICAgICBp
ZiAoIW1fYmFja2luZ1N0b3JlLT51cGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIodHJhbnNhY3Rpb24s
IG9iamVjdFN0b3JlTWV0YWRhdGEuaWQsIGtleU51bWJlciwga2V5V2FzR2VuZXJhdGVkKSkgewot
ICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJ
REJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJvciB1cGRhdGluZyBrZXkgZ2VuZXJhdG9y
IikpKTsKKyAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJ
RF0geworICAgICAgICAgICAgICAgIGRhdGFiYXNlLT5kaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9y
ZShyZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIHVwZGF0aW5n
IGtleSBnZW5lcmF0b3IiKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rh
c2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUs
IHJlcXVlc3RJRCwga2V5LCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkpKTsKKyAgICBJ
REJLZXlEYXRhIGNhcHR1cmVkS2V5KGtleS5pc29sYXRlZENvcHkoKSk7CisgICAgcG9zdE1haW5U
aHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZEtleV0geworICAgICAgICBk
YXRhYmFzZS0+ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBjYXB0dXJlZEtl
eSwgMCwgZW1wdHlTdHJpbmcoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
SURCS2V5RGF0YSYga2V5RGF0YSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKQEAgLTg5OSwxMSArMTA2MSwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpnZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURC
SQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsK
IAogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBrZXlSYW5nZURhdGEubWF5YmVD
cmVhdGVJREJLZXlSYW5nZSgpOwogICAgIEFTU0VSVChrZXlSYW5nZSk7CiAgICAgaWYgKCFrZXlS
YW5nZSkgewotICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVl
c3RJRCwgSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBJREJLZXlSYW5nZSByZXF1ZXN0ZWQgZnJvbSBiYWNraW5n
IHN0b3JlIikpKTsKKyAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVz
dElEXSB7CisgICAgICAgICAgICBkYXRhYmFzZS0+ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9y
ZShyZXF1ZXN0SUQsIElEQkdldFJlc3VsdCgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93
bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgSURCS2V5UmFuZ2UgcmVxdWVzdGVkIGZyb20g
YmFja2luZyBzdG9yZSIpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTkxMywxMCArMTA3OCwxNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmRG
cm9tQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSQogCiAgICAgICAg
IGlmIChrZXlSYW5nZS0+aXNPbmx5S2V5KCkpIHsKICAgICAgICAgICAgIGlmICghbV9iYWNraW5n
U3RvcmUtPmdldEtleVJlY29yZEZyb21PYmplY3RTdG9yZSh0cmFuc2FjdGlvbiwgb2JqZWN0U3Rv
cmVNZXRhZGF0YS5pZCwgKmtleVJhbmdlLT5sb3dlcigpLCByZXN1bHQpKQotICAgICAgICAgICAg
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJHZXRS
ZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZ2V0IGtleSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgaW4gYmFja2luZyBz
dG9yZSIpKSk7CisgICAgICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwg
cmVxdWVzdElEXSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlLT5kaWRHZXRSZWNvcmRG
cm9tQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwgSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBrZXkgcmVj
b3JkIGZyb20gb2JqZWN0IHN0b3JlIGluIGJhY2tpbmcgc3RvcmUiKSk7CisgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBJREJHZXRSZXN1bHQg
Z2V0UmVzdWx0ID0gcmVzdWx0ID8gSURCR2V0UmVzdWx0KHJlc3VsdC5yZWxlYXNlKCksIGtleVJh
bmdlLT5sb3dlcigpLCBvYmplY3RTdG9yZU1ldGFkYXRhLmtleVBhdGgpIDogSURCR2V0UmVzdWx0
KCk7Ci0gICAgICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlLCBy
ZXF1ZXN0SUQsIGdldFJlc3VsdCwgMCwgU3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpKSk7Cisg
ICAgICAgICAgICAgICAgSURCR2V0UmVzdWx0IGNhcHR1cmVkR2V0UmVzdWx0KGdldFJlc3VsdC5p
c29sYXRlZENvcHkoKSk7CisgICAgICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRh
YmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZEdldFJlc3VsdF0geworICAgICAgICAgICAgICAgICAg
ICBkYXRhYmFzZS0+ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZShyZXF1ZXN0SUQsIGNhcHR1
cmVkR2V0UmVzdWx0LCAwLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTI1LDEwICsxMDk1LDE1IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJJCiAgICAgICAgIFJlZlB0cjxJREJLZXk+IHJlc3VsdEtl
eTsKIAogICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5nZXRLZXlSYW5nZVJlY29yZEZyb21P
YmplY3RTdG9yZSh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwgKmtleVJhbmdl
LCByZXN1bHQsIHJlc3VsdEtleSkpCi0gICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21C
YWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBrZXkgcmFuZ2Ug
cmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlIGluIGJhY2tpbmcgc3RvcmUiKSkpOworICAgICAgICAg
ICAgcG9zdE1haW5UaHJlYWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElEXSB7CisgICAgICAgICAg
ICAgICAgZGF0YWJhc2UtPmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUocmVxdWVzdElELCBJ
REJHZXRSZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlM
aXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGtleSByYW5nZSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUg
aW4gYmFja2luZyBzdG9yZSIpKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIElEQkdldFJlc3VsdCBnZXRSZXN1bHQgPSByZXN1bHQgPyBJREJHZXRSZXN1bHQo
cmVzdWx0LnJlbGVhc2UoKSwgcmVzdWx0S2V5LnJlbGVhc2UoKSwgb2JqZWN0U3RvcmVNZXRhZGF0
YS5rZXlQYXRoKSA6IElEQkdldFJlc3VsdCgpOwotICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRU
YXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNv
cmRGcm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGdldFJlc3VsdCwgMCwgU3RyaW5nKFN0cmlu
Z0ltcGw6OmVtcHR5KCkpKSk7CisgICAgICAgICAgICBJREJHZXRSZXN1bHQgY2FwdHVyZWRHZXRS
ZXN1bHQoZ2V0UmVzdWx0Lmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgICAgIHBvc3RNYWluVGhy
ZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRHZXRSZXN1bHRdIHsKKyAgICAg
ICAgICAgICAgICBkYXRhYmFzZS0+ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZShyZXF1ZXN0
SUQsIGNhcHR1cmVkR2V0UmVzdWx0LCAwLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgIH0p
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwpAQCAtOTM4LDE0ICsxMTEzLDE5IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNraW5nU3RvcmUodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBJREJJCiAKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIGlm
ICghbV9iYWNraW5nU3RvcmUtPmdldEluZGV4UmVjb3JkKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZU1ldGFkYXRhLmlkLCBpbmRleElELCBrZXlSYW5nZURhdGEsIGN1cnNvclR5cGUsIHJlc3VsdCkp
IHsKLSAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IElEQkdldFJlc3VsdCgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJ
SUxpdGVyYWwoIkZhaWxlZCB0byBnZXQgaW5kZXggcmVjb3JkIGZyb20gYmFja2luZyBzdG9yZSIp
KSk7CisgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRF0gewor
ICAgICAgICAgICAgZGF0YWJhc2UtPmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUocmVxdWVz
dElELCBJREJHZXRSZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGluZGV4IHJlY29yZCBmcm9tIGJhY2tpbmcgc3Rv
cmUiKSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gV2Ug
bXVzdCByZXR1cm4gYSBrZXkgcGF0aCB0byBrbm93IGhvdyB0byBpbmplY3QgdGhlIHJlc3VsdCBr
ZXkgaW50byB0aGUgcmVzdWx0IHZhbHVlIG9iamVjdC4KICAgICByZXN1bHQua2V5UGF0aCA9IG9i
amVjdFN0b3JlTWV0YWRhdGEua2V5UGF0aDsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJh
Y2tpbmdTdG9yZSwgcmVxdWVzdElELCByZXN1bHQsIDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0
eSgpKSkpOworICAgIElEQkdldFJlc3VsdCBjYXB0dXJlZFJlc3VsdChyZXN1bHQuaXNvbGF0ZWRD
b3B5KCkpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2Fw
dHVyZWRSZXN1bHRdIHsKKyAgICAgICAgZGF0YWJhc2UtPmRpZEdldFJlY29yZEZyb21CYWNraW5n
U3RvcmUocmVxdWVzdElELCBjYXB0dXJlZFJlc3VsdCwgMCwgZW1wdHlTdHJpbmcoKSk7CisgICAg
fSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5n
U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCwgdWlu
dDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKQEAgLTk3NCw3ICsx
MTU0LDEzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3JJbkJhY2tpbmdTdG9y
ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkCiAgICAgICAgIGVycm9yTWVzc2FnZSA9
IEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvcGVuaW5nIGN1cnNvciBpbiBiYWNraW5nIHN0
b3JlIik7CiAgICAgfQogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJl
cXVlc3RJRCwgY3Vyc29ySUQsIGtleSwgcHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29k
ZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFz
ZSh0aGlzKTsKKyAgICBJREJLZXlEYXRhIGNhcHR1cmVkS2V5KGtleS5pc29sYXRlZENvcHkoKSk7
CisgICAgSURCS2V5RGF0YSBjYXB0dXJlZFByaW1hcnlLZXkocHJpbWFyeUtleS5pc29sYXRlZENv
cHkoKSk7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEVycm9yTWVzc2FnZShlcnJvck1lc3Nh
Z2UpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY3Vyc29y
SUQsIGNhcHR1cmVkS2V5LCBjYXB0dXJlZFByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCBlcnJvckNv
ZGUsIGNhcHR1cmVkRXJyb3JNZXNzYWdlXSB7CisgICAgICAgIGRhdGFiYXNlLT5kaWRPcGVuQ3Vy
c29ySW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBjdXJzb3JJRCwgY2FwdHVyZWRLZXksIGNhcHR1
cmVkUHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgY2FwdHVyZWRFcnJvck1lc3Nh
Z2Uuc3RyaW5nKCkpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRP
cGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNv
cklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWVCdWZmZXIsIHVpbnQzMl90IGVycm9yQ29kZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC05OTksNyArMTE4NSwxMyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjphZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBJRAogICAgICAgICBlcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
a25vd24gZXJyb3IgYWR2YW5jaW5nIGN1cnNvciBpbiBiYWNraW5nIHN0b3JlIik7CiAgICAgfQog
Ci0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5
LCBwcmltYXJ5S2V5LCB2YWx1ZUJ1ZmZlciwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAg
ICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlKHRoaXMpOworICAgIElEQktleURh
dGEgY2FwdHVyZWRLZXkoa2V5Lmlzb2xhdGVkQ29weSgpKTsKKyAgICBJREJLZXlEYXRhIGNhcHR1
cmVkUHJpbWFyeUtleShwcmltYXJ5S2V5Lmlzb2xhdGVkQ29weSgpKTsKKyAgICBTdHJpbmdDYXB0
dXJlIGNhcHR1cmVkRXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7CisgICAgcG9zdE1haW5UaHJl
YWRUYXNrKFtkYXRhYmFzZSwgcmVxdWVzdElELCBjYXB0dXJlZEtleSwgY2FwdHVyZWRQcmltYXJ5
S2V5LCB2YWx1ZUJ1ZmZlciwgZXJyb3JDb2RlLCBjYXB0dXJlZEVycm9yTWVzc2FnZV0geworICAg
ICAgICBkYXRhYmFzZS0+ZGlkQWR2YW5jZUN1cnNvckluQmFja2luZ1N0b3JlKHJlcXVlc3RJRCwg
Y2FwdHVyZWRLZXksIGNhcHR1cmVkUHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwg
Y2FwdHVyZWRFcnJvck1lc3NhZ2Uuc3RyaW5nKCkpOworICAgIH0pOwogfQogCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlL
ZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWVCdWZmZXIsIHVpbnQzMl90IGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0xMDI0LDcgKzEyMTYsMTMgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgSUQKICAgICAgICAgZXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJVbmtub3duIGVycm9yIGl0ZXJhdGluZyBjdXJzb3IgaW4gYmFja2luZyBzdG9yZSIpOwogICAg
IH0KIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IGtleSwgcHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7
CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKKyAgICBJREJL
ZXlEYXRhIGNhcHR1cmVkS2V5KGtleS5pc29sYXRlZENvcHkoKSk7CisgICAgSURCS2V5RGF0YSBj
YXB0dXJlZFByaW1hcnlLZXkocHJpbWFyeUtleS5pc29sYXRlZENvcHkoKSk7CisgICAgU3RyaW5n
Q2FwdHVyZSBjYXB0dXJlZEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgIHBvc3RNYWlu
VGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY2FwdHVyZWRLZXksIGNhcHR1cmVkUHJp
bWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgY2FwdHVyZWRFcnJvck1lc3NhZ2VdIHsK
KyAgICAgICAgZGF0YWJhc2UtPmRpZEl0ZXJhdGVDdXJzb3JJbkJhY2tpbmdTdG9yZShyZXF1ZXN0
SUQsIGNhcHR1cmVkS2V5LCBjYXB0dXJlZFByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCBlcnJvckNv
ZGUsIGNhcHR1cmVkRXJyb3JNZXNzYWdlLnN0cmluZygpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmlt
YXJ5S2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVyLCB1aW50MzJfdCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTAzNywxNCArMTIzNSwxOSBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRJdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdAogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3Vu
dEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5k
ZXhJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7CisgICAgUmVmUHRy
PFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSh0aGlzKTsKICAgICBpbnQ2NF90IGNvdW50Owog
CiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y291bnQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBv
YmplY3RTdG9yZUlELCBpbmRleElELCBrZXlSYW5nZURhdGEsIGNvdW50KSkgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBnZXQgY291bnQgZnJvbSBiYWNraW5nIHN0b3JlLiIpOwotICAg
ICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OmRpZENvdW50SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgMCwgSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGNv
dW50IGZyb20gYmFja2luZyBzdG9yZSIpKSk7CisgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhb
ZGF0YWJhc2UsIHJlcXVlc3RJRF0geworICAgICAgICAgICAgZGF0YWJhc2UtPmRpZENvdW50SW5C
YWNraW5nU3RvcmUocmVxdWVzdElELCAwLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBnZXQgY291bnQgZnJvbSBiYWNraW5nIHN0b3Jl
IikpOworICAgICAgICB9KTsKICAgICB9CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRl
QXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvdW50SW5CYWNraW5nU3Rv
cmUsIHJlcXVlc3RJRCwgY291bnQsIDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSkpOwor
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhbZGF0YWJhc2UsIHJlcXVlc3RJRCwgY291bnRdIHsKKyAg
ICAgICAgZGF0YWJhc2UtPmRpZENvdW50SW5CYWNraW5nU3RvcmUocmVxdWVzdElELCBjb3VudCwg
MCwgZW1wdHlTdHJpbmcoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmRpZENvdW50SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGNvdW50
LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTA1
NywxNCArMTI2MCwyMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb3VudEluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCBjb3VudAogCiB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVSYW5nZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVj
dFN0b3JlSUQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQogeworICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UodGhpcyk7CisKICAgICBpZiAoIW1fYmFj
a2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SUQsIGtleVJhbmdlRGF0YSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVsZXRl
IHJhbmdlIGZyb20gYmFja2luZyBzdG9yZS4iKTsKLSAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNr
KGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVSYW5n
ZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBjb3VudCBmcm9tIGJhY2tpbmcgc3Rv
cmUiKSkpOworICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SURd
IHsKKyAgICAgICAgICAgIGRhdGFiYXNlLT5kaWREZWxldGVSYW5nZUluQmFja2luZ1N0b3JlKHJl
cXVlc3RJRCwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZ2V0IGNvdW50IGZyb20gYmFja2luZyBzdG9yZSIpKTsKKyAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgbV9iYWNraW5nU3RvcmUtPm5vdGlmeUN1cnNvcnNPZkNoYW5nZXModHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsKIAotICAgIHBvc3RNYWluVGhyZWFk
VGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRl
UmFuZ2VJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6ZW1w
dHkoKSkpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soW2RhdGFiYXNlLCByZXF1ZXN0SURdIHsK
KyAgICAgICAgZGF0YWJhc2UtPmRpZERlbGV0ZVJhbmdlSW5CYWNraW5nU3RvcmUocmVxdWVzdElE
LCAwLCBlbXB0eVN0cmluZygpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkRGVsZXRlUmFuZ2VJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIHVpbnQz
Ml90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0xMTM3LDcgKzEz
NDYsNyBAQCBTdHJpbmcgVW5pcXVlSURCRGF0YWJhc2U6OmFic29sdXRlRGF0YWJhc2VEaXJlY3Rv
cnkoKSBjb25zdAogICAgIHJldHVybiBEYXRhYmFzZVByb2Nlc3M6OnNoYXJlZCgpLmFic29sdXRl
SW5kZXhlZERhdGFiYXNlUGF0aEZyb21EYXRhYmFzZVJlbGF0aXZlUGF0aChtX2RhdGFiYXNlUmVs
YXRpdmVEaXJlY3RvcnkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0TWFpblRo
cmVhZFRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gdGFzaywgRGF0YWJhc2VUYXNrVHlw
ZSB0YXNrVHlwZSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGFzayhz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IHRhc2ssIERhdGFiYXNlVGFza1R5cGUgdGFza1R5cGUpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTExNDUsNyArMTM1NCw2IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGFzayhzdGQ6OnVuaXF1ZV9w
dHI8QXN5bmNUYXNrPiB0YXNrLCBEYXRhCiAgICAgICAgIHJldHVybjsKIAogICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX21haW5UaHJlYWRUYXNrTXV0ZXgpOwotCiAgICAgbV9tYWluVGhyZWFkVGFz
a3MuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CiAKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJh
c2U+IGRhdGFiYXNlKHRoaXMpOwpAQCAtMTE2MCw3ICsxMzY4LDcgQEAgYm9vbCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybU5leHRNYWluVGhyZWFkVGFzaygpCiAKICAgICBib29sIG1vcmVUYXNr
czsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2s7CisgICAgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiB0YXNrOwogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bWFpblRocmVhZFRhc2tNdXRleCk7CiAKQEAgLTExNzIsMTIgKzEzODAsMTIgQEAgYm9vbCBVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHRNYWluVGhyZWFkVGFzaygpCiAgICAgICAgIG1vcmVU
YXNrcyA9ICFtX21haW5UaHJlYWRUYXNrcy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgdGFzay0+
cGVyZm9ybVRhc2soKTsKKyAgICB0YXNrKCk7CiAKICAgICByZXR1cm4gbW9yZVRhc2tzOwogfQog
Ci12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxBc3luY1Rhc2s+IHRhc2ssIERhdGFiYXNlVGFza1R5cGUgdGFza1R5cGUpCit2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gdGFz
aywgRGF0YWJhc2VUYXNrVHlwZSB0YXNrVHlwZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC0xMjAzLDcgKzE0MTEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
ZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpCiAgICAgLy8gV2UgdGFrZSBhIHJlZigpIHRvIG1ha2Ug
c3VyZSB0aGUgZGF0YWJhc2UgaXMgc3RpbGwgbGl2ZSB3aGlsZSB0aGlzIGxhc3QgdGFzayBpcyBw
ZXJmb3JtZWQuCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBwcm90ZWN0b3IodGhpcyk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrOworICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gdGFzazsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Rh
dGFiYXNlVGFza011dGV4KTsKIApAQCAtMTIxNCw3ICsxNDIyLDcgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2soKQogICAgICAgICB0YXNrID0gbV9kYXRh
YmFzZVRhc2tzLnRha2VGaXJzdCgpOwogICAgIH0KIAotICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7
CisgICAgdGFzaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0
YWJhc2UuaAppbmRleCAwMjlhYThjMjk2ZTUzNDA3Nzc4YTgwNDBkMzM2OTJhYzg5YjYwYzU5Li42
NjQxOGE1ZDk5YTQ4NmQ1YjhiZmUzM2I2NjA1OTNmMzllMGJhMjhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJE
YXRhYmFzZS5oCkBAIC00OSw3ICs0OSw2IEBAIHN0cnVjdCBJREJLZXlEYXRhOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIEFzeW5jUmVxdWVzdDsKLWNsYXNzIEFzeW5jVGFzazsKIGNsYXNz
IERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb247CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZTsKIApAQCAtMTIwLDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIE5vcm1h
bCwKICAgICAgICAgU2h1dGRvd24KICAgICB9OwotICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhz
dGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiwgRGF0YWJhc2VUYXNrVHlwZSA9IERhdGFiYXNlVGFz
a1R5cGU6Ok5vcm1hbCk7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4sIERhdGFiYXNlVGFza1R5cGUgPSBEYXRhYmFzZVRhc2tUeXBlOjpOb3JtYWwpOwog
CiAgICAgdm9pZCBzaHV0ZG93bihVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSk7CiAKQEAg
LTEzMywxMSArMTMyLDExIEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMg
b3JpZ2luIGNhbiB1c2UgdGhlIHNhbWUgZGF0YWJhc2VzIGFzIHRoZSBnaXZlbiBvcmlnaW4uCiAg
ICAgYm9vbCBjYW5TaGFyZURhdGFiYXNlcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAotICAgIHZvaWQgcG9zdFRyYW5zYWN0aW9u
T3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nl
c3NDYWxsYmFjayk7CisgICAgdm9pZCBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24oY29uc3QgSURC
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwogICAgIAogICAg
IC8vIFRvIGJlIGNhbGxlZCBmcm9tIHRoZSBkYXRhYmFzZSB3b3JrcXVldWUgdGhyZWFkIG9ubHkK
ICAgICB2b2lkIHBlcmZvcm1OZXh0RGF0YWJhc2VUYXNrKCk7Ci0gICAgdm9pZCBwb3N0TWFpblRo
cmVhZFRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIERhdGFiYXNlVGFza1R5cGUgPSBE
YXRhYmFzZVRhc2tUeXBlOjpOb3JtYWwpOworICAgIHZvaWQgcG9zdE1haW5UaHJlYWRUYXNrKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4sIERhdGFiYXNlVGFza1R5cGUgPSBEYXRhYmFzZVRhc2tUeXBl
OjpOb3JtYWwpOwogICAgIHZvaWQgb3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YShjb25z
dCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGly
ZWN0b3J5KTsKICAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
b2JqZWN0U3RvcmVJRHMsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsKICAg
ICB2b2lkIGJlZ2luQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYp
OwpAQCAtMjAzLDEwICsyMDIsMTAgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZUJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKLSAgICBEZXF1ZTxzdGQ6OnVu
aXF1ZV9wdHI8QXN5bmNUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOworICAgIERlcXVlPHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4+IG1fZGF0YWJhc2VUYXNrczsKICAgICBNdXRleCBtX2RhdGFiYXNlVGFz
a011dGV4OwogCi0gICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4+IG1fbWFpblRo
cmVhZFRhc2tzOworICAgIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fbWFpblRocmVh
ZFRhc2tzOwogICAgIE11dGV4IG1fbWFpblRocmVhZFRhc2tNdXRleDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Bc3luY1Rhc2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZkODUzYzVi
OWUwOTIwZTljMDU1MmEzZGM2YjM2MTc4ZjYwMTZjNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNUYXNrLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXN5
bmNUYXNrX2gKLSNkZWZpbmUgQXN5bmNUYXNrX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NU
aHJlYWRDb3BpZXIuaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotY2xhc3MgQXN5bmNUYXNrIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY1Rh
c2spOwotcHVibGljOgotICAgIEFzeW5jVGFzayhjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IHRhc2tGdW5jdGlvbikKLSAgICAgICAgOiBtX3Rhc2tGdW5jdGlvbih0YXNrRnVuY3Rpb24pCi0g
ICAgewotICAgICAgICBBU1NFUlQodGFza0Z1bmN0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHBl
cmZvcm1UYXNrKCkKLSAgICB7Ci0gICAgICAgIG1fdGFza0Z1bmN0aW9uKCk7Ci0gICAgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgQXN5bmNUYXNrKCkgeyB9Ci0KLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+IG1fdGFza0Z1bmN0aW9uOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KLWNsYXNzIEFzeW5jVGFza0ltcGwgZmluYWwgOiBwdWJsaWMgQXN5bmNU
YXNrIHsKLXB1YmxpYzoKLSAgICBBc3luY1Rhc2tJbXBsKFQqIGNhbGxlZSwgdm9pZCAoVDo6Km1l
dGhvZCkoQXJndW1lbnRzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQotICAgIHsKLSAg
ICAgICAgbV90YXNrRnVuY3Rpb24gPSBbY2FsbGVlLCBtZXRob2QsIGFyZ3VtZW50cy4uLl0gewot
ICAgICAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgfTsK
LSAgICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RkOjp1bmlxdWVfcHRyPEFzeW5j
VGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2b2lkIChUOjoqbWV0
aG9kKSgpKQotewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFza0ltcGw8VD4+
KCZjYWxsZWUsIG1ldGhvZCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAx
LCB0eXBlbmFtZSBNUDE+Ci1zdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rh
c2soCi0gICAgVCYgY2FsbGVlLAotICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSksCi0gICAgY29u
c3QgUDEmIHBhcmFtZXRlcjEpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNU
YXNrSW1wbDxULCBNUDE+PigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAg
ICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSkpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgTVAyPgotc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRl
QXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1Q
MiksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCi0gICAgY29uc3QgUDImIHBhcmFtZXRlcjIp
Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrSW1wbDxULCBNUDEsIE1Q
Mj4+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAgICAgIFdlYkNvcmU6
OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKLSAgICAgICAgV2ViQ29y
ZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpKTsKLQotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwg
dHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotc3RkOjp1bmlxdWVfcHRy
PEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2b2lkIChU
OjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzKSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKLSAg
ICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKLXsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDM+
PigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBXZWJDb3JlOjpD
cm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdlYkNvcmU6
OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgV2ViQ29y
ZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5
cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVu
YW1lIE1QND4KLXN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKLSAg
ICBUJiBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0KSwK
LSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAg
ICBjb25zdCBQMyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCkKLXsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMs
IE1QND4+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAgICAgIFdlYkNv
cmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKLSAgICAgICAgV2Vi
Q29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICBX
ZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksCi0gICAgICAg
IFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0
LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDU+Ci1zdGQ6OnVuaXF1ZV9w
dHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCi0gICAgVCYgY2FsbGVlLAotICAgIHZvaWQg
KFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKLSAgICBjb25zdCBQMSYgcGFy
YW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1l
dGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQNSYgcGFyYW1ldGVy
NSkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwg
TVAyLCBNUDMsIE1QNCwgTVA1Pj4oCi0gICAgICAgICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwK
LSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEp
LAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVy
MiksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0
ZXIzKSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFt
ZXRlcjQpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFy
YW1ldGVyNSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
TVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1
LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2Pgotc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4g
Y3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2b2lkIChUOjoqbWV0aG9kKShN
UDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwK
LSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKLSAg
ICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSwKLSAgICBj
b25zdCBQNiYgcGFyYW1ldGVyNikKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3lu
Y1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDY+PigKLSAgICAgICAgJmNh
bGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGll
cjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29w
aWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRD
b3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVh
ZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhy
ZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NU
aHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwg
dHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlw
ZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KLXN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0
ZUFzeW5jVGFzaygKLSAgICBUJiBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBN
UDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwK
LSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKLSAg
ICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSwKLSAgICBj
b25zdCBQNiYgcGFyYW1ldGVyNiwKLSAgICBjb25zdCBQNyYgcGFyYW1ldGVyNykKLXsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1Q
NCwgTVA1LCBNUDYsIE1QNz4+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0g
ICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwK
LSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIp
LAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVy
MyksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0
ZXI0KSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFt
ZXRlcjUpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFy
YW1ldGVyNiksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShw
YXJhbWV0ZXI3KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFt
ZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBN
UDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDcs
IHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+Ci1zdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBj
cmVhdGVBc3luY1Rhc2soCi0gICAgVCYgY2FsbGVlLAotICAgIHZvaWQgKFQ6OiptZXRob2QpKE1Q
MSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwKLSAgICBjb25zdCBQMSYgcGFy
YW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1l
dGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQNSYgcGFyYW1ldGVy
NSwKLSAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKLSAgICBjb25zdCBQNyYgcGFyYW1ldGVyNywK
LSAgICBjb25zdCBQOCYgcGFyYW1ldGVyOCkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4
Pj4oCi0gICAgICAgICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgV2ViQ29yZTo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAgICBXZWJDb3Jl
OjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgIFdlYkNv
cmU6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgV2Vi
Q29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICBX
ZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSksCi0gICAgICAg
IFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSwKLSAgICAg
ICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRlcjcpLAotICAg
ICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQOD46OmNvcHkocGFyYW1ldGVyOCkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEFzeW5jVGFza19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NmQyN2E2MmFmMGRjMTNiZWFlOTRiNWVlYjZiZDY4MGJiZWFhNTZiZS4uZTJjNzMxZmYzZjFiODM0
ZmZhYzk0OTRiZTkzZDlhYTViZjM1YzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTc5LDcgKzk3OSw2IEBACiAJCTUxQUNC
QkExMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JCOUYxMjdBOEYyQzAw
RDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi87IH07CiAJCTUxQjE1QTg0MTM4
NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxNUE4MjEzODQzQTM5MDAzMjFBRDgg
LyogRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwICovOyB9OwogCQk1MUIxNUE4NTEzODQzQTM5MDAz
MjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjE1QTgzMTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9u
bWVudFV0aWxpdGllcy5oICovOyB9OwotCQk1MUJBMjQ0NDE4NThFRTMwMDBFQTI4MTEgLyogQXN5
bmNUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUJBMjQ0MzE4NThFRTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmggKi87IH07CiAJCTUxQkEyNDQ2
MTg1OEY1NUQwMEVBMjgxMSAvKiBXZWJDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBMjQ0NTE4NThGNDE1MDBFQTI4
MTEgLyogV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1MUM5NjExODE4M0QyOTQ3
MDBEMjAwMkUgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM5NjExNjE4M0Qy
OTQ3MDBEMjAwMkUgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTUxQzk2MTE5MTgzRDI5NDcwMEQyMDAyRSAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQzk2MTE3MTgzRDI5NDcwMEQyMDAyRSAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uTWVz
c2FnZXMuaCAqLzsgfTsKQEAgLTMxMDMsNyArMzEwMiw2IEBACiAJCTUxQUNDOTM1MTYyODA2NDgw
MDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFCMTVBODIxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0
aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudmlyb25tZW50
VXRpbGl0aWVzLmNwcDsgcGF0aCA9IHVuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIxNUE4MzEzODQzQTM5MDAzMjFBRDggLyogRW52
aXJvbm1lbnRVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW52
aXJvbm1lbnRVdGlsaXRpZXMuaDsgcGF0aCA9IHVuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFCQTI0NDMxODU4RUUzMDAwRUEyODExIC8q
IEFzeW5jVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY1Rhc2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQTI0NDUxODU4RjQxNTAwRUEyODEx
IC8qIFdlYkNyb3NzVGhyZWFkQ29waWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyb3Nz
VGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOTYxMTUx
ODNDOTVGRjAwRDIwMDJFIC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFDOTYxMTYxODNEMjk0NzAwRDIwMDJFIC8qIFdlYklEQlNlcnZlckNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTY3LDcgKzQ1NjUsNiBAQAogCQkJCUM1OUM0QTU3MThC
ODExNzQwMDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oICovLAogCQkJCTUxNUU3
NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovLAogCQkJCTUxNUU3NzI2
MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLywKLQkJCQk1MUJBMjQ0MzE4NThF
RTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmggKi8sCiAJCQkJRTE2NEEyRUYxOTFBRjE0RTAwMTA3
MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCAqLywK
IAkJCQlFMTY0QTJGMDE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0
aFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQk0RjYwMTQzMDE1NUM1QTMyMDAxRkJERTAgLyog
QmxvY2tpbmdSZXNwb25zZU1hcC5oICovLApAQCAtNzQ0NSw3ICs3NDQyLDYgQEAKIAkJCQlCQzAz
MkRBOTEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTlDNEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3Qu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxQkEyNDQ0MTg1OEVFMzAwMEVBMjgxMSAvKiBBc3luY1Rh
c2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRh
Y2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUEzMTczMjEzNENFQTZDMDA3QzlBNEYgLyog
QXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OTcxMkE4ODM4ODAw
NjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovLAo=
</data>
<flag name="review"
          id="270581"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>