<?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>193220</bug_id>
          
          <creation_ts>2019-01-07 15:24:55 -0800</creation_ts>
          <short_desc>Remove use of NetworkProcess::singleton from CacheStorage::Engine::from</short_desc>
          <delta_ts>2019-01-08 12:44:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1492443</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 15:24:55 -0800</bug_when>
    <thetext>Remove use of NetworkProcess::singleton from CacheStorage::Engine::from</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492444</commentid>
    <comment_count>1</comment_count>
      <attachid>358541</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 15:26:07 -0800</bug_when>
    <thetext>Created attachment 358541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492467</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 16:04:30 -0800</bug_when>
    <thetext>http://trac.webkit.org/r239710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492699</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-08 12:44:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/47124773&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358541</attachid>
            <date>2019-01-07 15:26:07 -0800</date>
            <delta_ts>2019-01-07 15:44:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193220-20190107152607.patch</filename>
            <type>text/plain</type>
            <size>39353</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk3MDUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE5LTAxLTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVzZSBv
ZiBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uIGZyb20gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZy
b20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzIy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cmVxdWlyZWQgcGFzc2luZyB0aGUgTmV0d29ya1Byb2Nlc3MmIGluIGZyb20gYWxsIGl0cyBjYWxs
ZXJzLgorICAgICAgICBXaGlsZSBJIHdhcyBhdCBpdCwgSSBtYWRlIHRoZW0gdXNlIENvbXBsZXRp
b25IYW5kbGVycyB3aGVyZSBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRl
c3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZpbmRDYWNo
ZUVuZ2luZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVDYWNoZUVu
Z2luZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVDYWNoZUVuZ2lu
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZnJvbSk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpkZXN0cm95RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpy
ZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpy
ZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
cHV0UmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpkZWxl
dGVNYXRjaGluZ1JlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6bG9jayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp1bmxvY2sp
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVh
ckFsbENhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVh
ckNhY2hlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Z2xvYmFs
RW5naW5lTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6fkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0
Y2hpbmdSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6cHV0UmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OnJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmVuZ2luZVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6Q2FjaGU6OnRyYXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpy
ZXRyaWV2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oOgorCiAyMDE5LTAxLTA3ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUdXJuIG9uIFBvaW50ZXIgRXZlbnRzIGJ5IGRlZmF1bHQgZm9yIGlPUwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIzOTY5OSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGVzdHJveVNlc3Npb24oUEFMOgogewogICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95
U2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIG1fc2Vzc2lvbnNDb250cm9sbGVkQnlBdXRvbWF0aW9u
LnJlbW92ZShzZXNzaW9uSUQpOwotICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkZXN0cm95RW5n
aW5lKHNlc3Npb25JRCk7CisgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lFbmdpbmUo
KnRoaXMsIHNlc3Npb25JRCk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgbV9z
d1NlcnZlcnMucmVtb3ZlKHNlc3Npb25JRCk7CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogICAgIH0KIAogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAg
IENhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMoc2Vzc2lvbklELCBmZXRjaE9wdGlv
bnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSwgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldKGF1dG8gZW50cmll
cykgbXV0YWJsZSB7CisgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMo
KnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb246OkNvbXB1dGVTaXplcyksIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXShhdXRvIGVudHJpZXMpIG11dGFibGUgewogICAgICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJp
ZXMpOwogICAgICAgICB9KTsKICAgICB9CkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUAogICAgIH0pOwogCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCi0gICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlcyhzZXNzaW9uSUQsIFtjbGVhclRhc2tz
SGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgQ2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtjbGVh
clRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGFGbwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSkpIHsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRh
IDogb3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW4oc2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRh
IH0sIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9
KTsKKyAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdp
bigqdGhpcywgc2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtj
bGVhclRhc2tzSGFuZGxlciA9IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTc4MSw2ICs3ODEsMjEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGbwogICAgICAgICBjbGVhckRp
c2tDYWNoZUVudHJpZXMoY2FjaGUoKSwgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9
IFdURk1vdmUoY2xlYXJUYXNrc0hhbmRsZXIpXSB7IH0pOwogfQogCitDYWNoZVN0b3JhZ2U6OkVu
Z2luZSogTmV0d29ya1Byb2Nlc3M6OmZpbmRDYWNoZUVuZ2luZShjb25zdCBQQUw6OlNlc3Npb25J
RCYgc2Vzc2lvbklEKQoreworICAgIHJldHVybiBtX2NhY2hlRW5naW5lcy5nZXQoc2Vzc2lvbklE
KTsKK30KKworQ2FjaGVTdG9yYWdlOjpFbmdpbmUmIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVDYWNo
ZUVuZ2luZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBGdW5jdGlvbjxSZWY8Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU+KCk+JiYgZnVuY3RvcikKK3sKKyAgICByZXR1cm4gbV9jYWNoZUVu
Z2luZXMuZW5zdXJlKHNlc3Npb25JRCwgV1RGTW92ZShmdW5jdG9yKSkuaXRlcmF0b3ItPnZhbHVl
OworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVDYWNoZUVuZ2luZShjb25zdCBQQUw6
OlNlc3Npb25JRCYgc2Vzc2lvbklEKQoreworICAgIG1fY2FjaGVFbmdpbmVzLnJlbW92ZShzZXNz
aW9uSUQpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAg
ICBkb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG51bGxwdHIsIHNlc3Npb25JRCwgZG93
bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkRmlsZW5hbWUpOwpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjM5Njk5KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NCw2ICs4NCwxMCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM7CiBjbGFzcyBXZWJTV09yaWdpblN0b3JlOwogI2VuZGlmCiAKK25hbWVzcGFjZSBDYWNoZVN0
b3JhZ2UgeworY2xhc3MgRW5naW5lOworfQorCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNs
YXNzIENhY2hlOwogfQpAQCAtMjEzLDYgKzIxNywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWYo
KSBjb25zdCBvdmVycmlkZSB7IFRocmVhZFNhZmVSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzPjo6
cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3Qgb3ZlcnJpZGUgeyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxOZXR3b3JrUHJvY2Vzcz46OmRlcmVmKCk7IH0KICAgICAKKyAgICBDYWNoZVN0b3Jh
Z2U6OkVuZ2luZSogZmluZENhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CisgICAg
Q2FjaGVTdG9yYWdlOjpFbmdpbmUmIGVuc3VyZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lv
bklEJiwgRnVuY3Rpb248UmVmPENhY2hlU3RvcmFnZTo6RW5naW5lPigpPiYmKTsKKyAgICB2b2lk
IHJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CisgICAgCiBwcml2YXRl
OgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CiAKQEAgLTM1OSw2ICszNjcsOCBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX3VpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAgICAgRG93bmxvYWRNYW5h
Z2VyIG1fZG93bmxvYWRNYW5hZ2VyOwogCisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVm
PENhY2hlU3RvcmFnZTo6RW5naW5lPj4gbV9jYWNoZUVuZ2luZXM7CisKICAgICBSZWZQdHI8TmV0
d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBj
aGFyKiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudD4sIFB0ckhhc2g8
Y29uc3QgY2hhcio+PiBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnRNYXA7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEz
ICs0Niw2IEBAIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOwogdXNpbmcgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZTsKIAotc3Rh
dGljIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxFbmdpbmU+PiYgZ2xvYmFsRW5naW5l
TWFwKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQQUw6OlNlc3Npb25J
RCwgUmVmUHRyPEVuZ2luZT4+PiBtYXA7Ci0KLSAgICByZXR1cm4gbWFwOwotfQotCiBTdHJpbmcg
RW5naW5lOjpjYWNoZXNSb290UGF0aChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
bikKIHsKICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkKQEAgLTgwLDExOSArNzMsMTE3IEBAIEVu
Z2luZTo6fkVuZ2luZSgpCiAgICAgICAgIGNhbGxiYWNrKERhdGEgeyB9LCAxKTsKIH0KIAotdm9p
ZCBFbmdpbmU6OmZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkKEVu
Z2luZSYpPiYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OmZyb20oTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRW5naW5lJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IGdsb2Jh
bEVuZ2luZU1hcCgpLmZpbmQoc2Vzc2lvbklEKTsKLSAgICBpZiAoaXRlcmF0b3IgIT0gZ2xvYmFs
RW5naW5lTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgY2FsbGJhY2soKml0ZXJhdG9yLT52YWx1ZSk7
CisgICAgaWYgKGF1dG8qIGVuZ2luZSA9IG5ldHdvcmtQcm9jZXNzLmZpbmRDYWNoZUVuZ2luZShz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGNhbGxiYWNrKCplbmdpbmUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBzZXNz
aW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpOwogCi0gICAg
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoc2Vzc2lv
bklELCBbc2Vzc2lvbklELCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcm9v
dFBhdGgsIGF1dG8gcXVvdGEpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBnbG9iYWxFbmdp
bmVNYXAoKS5hZGQoc2Vzc2lvbklELCBudWxscHRyKTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KQotICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0
UmVmKCpuZXcgRW5naW5lIHsgU3RyaW5nIHsgcm9vdFBhdGggfSwgcXVvdGEgfSk7Ci0gICAgICAg
IGNhbGxiYWNrKCphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICBuZXR3b3JrUHJvY2Vz
cy5jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKHNlc3Npb25JRCwgW25ldHdvcmtQcm9jZXNzID0gbWFr
ZVJlZihuZXR3b3JrUHJvY2VzcyksIHNlc3Npb25JRCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKGF1dG8mJiByb290UGF0aCwgYXV0byBxdW90YSkgbXV0YWJsZSB7CisgICAgICAgIGNh
bGxiYWNrKG5ldHdvcmtQcm9jZXNzLT5lbnN1cmVDYWNoZUVuZ2luZShzZXNzaW9uSUQsIFsmXSB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbmdpbmUgeyBTdHJpbmcgeyByb290
UGF0aCB9LCBxdW90YSB9KTsKKyAgICAgICAgfSkpOwogICAgIH0pOwogfQogCi12b2lkIEVuZ2lu
ZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIEVuZ2luZTo6
ZGVzdHJveUVuZ2luZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCkpOwotICAgIGdsb2JhbEVuZ2luZU1hcCgpLnJlbW92ZShzZXNz
aW9uSUQpOworICAgIG5ldHdvcmtQcm9jZXNzLnJlbW92ZUNhY2hlRW5naW5lKHNlc3Npb25JRCk7
CiB9CiAKLXZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBib29sIHNob3VsZENvbXB1dGVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjpm
ZXRjaEVudHJpZXMoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGZyb20oc2Vzc2lvbklELCBbc2hvdWxkQ29tcHV0ZVNpemUsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBlbmdpbmUpIG11dGFibGUgewor
ICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW3Nob3VsZENvbXB1dGVTaXplLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZW5n
aW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLmZldGNoRW50cmllcyhzaG91bGRDb21wdXRl
U2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIEVu
Z2luZTo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmIG9yaWdpbiwgU3RyaW5nJiYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpvcGVuKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIGNhY2hlTmFtZSwgV2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
Ci0gICAgZnJvbShzZXNzaW9uSUQsIFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNhY2hlTmFt
ZSA9IFdURk1vdmUoY2FjaGVOYW1lKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQs
IFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNhY2hlTmFtZSA9IFdURk1vdmUoY2FjaGVOYW1l
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsK
ICAgICAgICAgZW5naW5lLm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OnJlbW92ZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmVtb3Zl
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGZyb20oc2Vzc2lvbklELCBb
Y2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdp
bmUpIG11dGFibGUgeworICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW2NhY2hl
SWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBt
dXRhYmxlIHsKICAgICAgICAgZW5naW5lLnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCB1
aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgV2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAg
IGZyb20oc2Vzc2lvbklELCBbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVy
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgewor
ICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW29yaWdpbiA9IFdURk1vdmUob3Jp
Z2luKSwgdXBkYXRlQ291bnRlciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYg
ZW5naW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwg
dXBkYXRlQ291bnRlciwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0pOwogfQogCiAKLXZvaWQg
RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3JkcyhO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBmcm9tKHNlc3Npb25JRCwg
W2NhY2hlSWRlbnRpZmllciwgdXJsID0gV1RGTW92ZSh1cmwpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgIGZyb20obmV0d29ya1Byb2Nl
c3MsIHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllciwgdXJsID0gV1RGTW92ZSh1cmwpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgewogICAgICAg
ICBlbmdpbmUucmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZSh1cmwpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpwdXRSZWNvcmRz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiByZWNvcmRzLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9p
ZCBFbmdpbmU6OnB1dFJlY29yZHMoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYgcmVjb3JkcywgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBm
cm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllciwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3Jk
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7
CisgICAgZnJvbShuZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCBy
ZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
YXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLnB1dFJlY29yZHMoY2FjaGVJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgRW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgRW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6Q2Fj
aGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
SWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGZyb20oc2Vzc2lvbklELCBb
Y2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdU
Rk1vdmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2lu
ZSkgbXV0YWJsZSB7CisgICAgZnJvbShuZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbY2FjaGVJ
ZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUo
b3B0aW9ucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0
YWJsZSB7CiAgICAgICAgIGVuZ2luZS5kZWxldGVNYXRjaGluZ1JlY29yZHMoY2FjaGVJZGVudGlm
aWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpsb2NrKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBFbmdpbmU6OmxvY2soTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcikKIHsKLSAgICBmcm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRp
Zmllcl0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBz
ZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZpZXJdKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAg
ICAgIGVuZ2luZS5sb2NrKGNhY2hlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKLXZvaWQgRW5n
aW5lOjp1bmxvY2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIpCit2b2lkIEVuZ2luZTo6dW5sb2NrKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7
Ci0gICAgZnJvbShzZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZpZXJdKGF1dG8mIGVuZ2luZSkgbXV0
YWJsZSB7CisgICAgZnJvbShuZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbY2FjaGVJZGVudGlm
aWVyXShhdXRvJiBlbmdpbmUpIG11dGFibGUgewogICAgICAgICBlbmdpbmUudW5sb2NrKGNhY2hl
SWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgZnJvbShzZXNzaW9uSUQsIFtvcmlnaW4g
PSBXVEZNb3ZlKG9yaWdpbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVu
Z2luZSkgbXV0YWJsZSB7CisgICAgZnJvbShuZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbb3Jp
Z2luID0gV1RGTW92ZShvcmlnaW4pLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRv
JiBlbmdpbmUpIG11dGFibGUgewogICAgICAgICBlbmdpbmUuY2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbihvcmlnaW4sIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdp
bmU6OnJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmVwcmVzZW50
YXRpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQogewot
ICAgIGZyb20oc2Vzc2lvbklELCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYg
ZW5naW5lKSBtdXRhYmxlIHsKKyAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQsIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgewogICAg
ICAgICBjYWxsYmFjayhlbmdpbmUucmVwcmVzZW50YXRpb24oKSk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgRW5naW5lOjpjbGVhckFsbENhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjpj
bGVhckFsbENhY2hlcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGZyb20oc2Vzc2lvbklELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICBmcm9tKG5l
dHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvJiBlbmdpbmUpIG11dGFibGUgewogICAgICAgICBlbmdpbmUu
Y2xlYXJBbGxDYWNoZXMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQog
Ci12b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW4oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBm
cm9tKHNlc3Npb25JRCwgW29yaWdpbkRhdGEgPSBXVEZNb3ZlKG9yaWdpbkRhdGEpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiBlbmdpbmUpIG11
dGFibGUgeworICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW29yaWdpbkRhdGEg
PSBXVEZNb3ZlKG9yaWdpbkRhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvJiBlbmdpbmUpIG11dGFibGUgewogICAgICAgICBlbmdpbmUuY2xl
YXJDYWNoZXNGb3JPcmlnaW4ob3JpZ2luRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIENhbGxiYWNrQWdncmVnYXRvcjsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworCiBuYW1lc3Bh
Y2UgQ2FjaGVTdG9yYWdlIHsKIAogdXNpbmcgQ2FjaGVJZGVudGlmaWVyID0gdWludDY0X3Q7CkBA
IC01NywyNiArNTksMjYgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5l
PgogcHVibGljOgogICAgIH5FbmdpbmUoKTsKIAotICAgIHN0YXRpYyB2b2lkIGZyb20oUEFMOjpT
ZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQoRW5naW5lJik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3lFbmdpbmUoUEFMOjpTZXNzaW9uSUQpOwotICAgIHN0YXRpYyB2b2lkIGZldGNoRW50cmll
cyhQQUw6OlNlc3Npb25JRCwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJik7Ci0KLSAgICBzdGF0
aWMgdm9pZCBvcGVuKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgU3Ry
aW5nJiYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVy
Q2FsbGJhY2smJik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50
aWZpZXJDYWxsYmFjayYmKTsKLSAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZUNhY2hlcyhQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7Ci0KLSAgICBz
dGF0aWMgdm9pZCByZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJh
Y2smJik7Ci0gICAgc3RhdGljIHZvaWQgcHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2sm
Jik7Ci0gICAgc3RhdGljIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCBmcm9tKE5ldHdvcmtQ
cm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5naW5lJik+
JiYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lFbmdpbmUoTmV0d29ya1Byb2Nlc3MmLCBQQUw6
OlNlc3Npb25JRCk7CisgICAgc3RhdGljIHZvaWQgZmV0Y2hFbnRyaWVzKE5ldHdvcmtQcm9jZXNz
JiwgUEFMOjpTZXNzaW9uSUQsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmKTsKKworICAgIHN0YXRpYyB2
b2lkIG9wZW4oTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYsIFN0cmluZyYmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZShOZXR3b3Jr
UHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICBzdGF0
aWMgdm9pZCByZXRyaWV2ZUNhY2hlcyhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKKworICAgIHN0YXRpYyB2b2lk
IHJldHJpZXZlUmVjb3JkcyhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
c0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHB1dFJlY29yZHMoTmV0d29ya1Byb2Nlc3Mm
LCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisgICAgc3RhdGljIHZvaWQgZGVsZXRlTWF0Y2hp
bmdSZWNvcmRzKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVl
cnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYpOwogCi0gICAgc3RhdGljIHZvaWQgbG9jayhQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCB1bmxvY2soUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9jayhOZXR3
b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwor
ICAgIHN0YXRpYyB2b2lkIHVubG9jayhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAgc3RhdGljIHZvaWQgY2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7Ci0gICAgc3RhdGlj
IHZvaWQgcmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0
aW9uKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworICAg
IHN0YXRpYyB2b2lkIHJlcHJlc2VudGF0aW9uKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKIAotICAgIHN0YXRpYyB2
b2lkIGNsZWFyQWxsQ2FjaGVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKFBBTDo6U2Vzc2lv
bklELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckFsbENhY2hlcyhOZXR3b3JrUHJvY2VzcyYs
IFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRp
YyB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiAgICAgYm9vbCBzaG91bGRQZXJzaXN0KCkgY29uc3QgeyByZXR1cm4gISFtX2lv
UXVldWU7fQogCkBAIC0xMTMsMTYgKzExNSwxNiBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIGNh
Y2hlc1Jvb3RQYXRoKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCi0gICAgdm9pZCBm
ZXRjaEVudHJpZXMoYm9vbCAvKiBzaG91bGRDb21wdXRlU2l6ZSAqLywgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJik7CisgICAgdm9pZCBm
ZXRjaEVudHJpZXMoYm9vbCAvKiBzaG91bGRDb21wdXRlU2l6ZSAqLywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYpOwogCiAgICAgdm9pZCBpbml0
aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAK
ICAgICB1c2luZyBDYWNoZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxDYWNoZXM+LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+OwotICAgIHVzaW5nIENh
Y2hlc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlc09yRXJyb3ImJik+OworICAg
IHVzaW5nIENhY2hlc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDYWNoZXNPckVy
cm9yJiYpPjsKICAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBDYWNoZXNDYWxsYmFjayYmKTsKIAogICAgIHVzaW5nIENhY2hlT3JFcnJvciA9
IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGU+LCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6RXJyb3I+OwotICAgIHVzaW5nIENhY2hlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoQ2FjaGVPckVycm9yJiYpPjsKKyAgICB1c2luZyBDYWNoZUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChDYWNoZU9yRXJyb3ImJik+OwogICAgIHZvaWQgcmVhZENhY2hlKHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVDYWxsYmFjayYmKTsKIAogICAgIENhY2hlKiBj
YWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
On5DYWNoZVN0b3IKICAgICAgICAgYXV0byYgc2Vzc2lvbklEID0ga2V5VmFsdWUua2V5OwogICAg
ICAgICBmb3IgKGF1dG8mIHJlZmVyZW5jZXMgOiBrZXlWYWx1ZS52YWx1ZSkgewogICAgICAgICAg
ICAgQVNTRVJUKHJlZmVyZW5jZXMudmFsdWUpOwotICAgICAgICAgICAgRW5naW5lOjp1bmxvY2so
c2Vzc2lvbklELCByZWZlcmVuY2VzLmtleSk7CisgICAgICAgICAgICBFbmdpbmU6OnVubG9jayht
X2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklELCByZWZlcmVuY2VzLmtleSk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC02NSw3ICs2NSw3IEBAIENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb246On5DYWNoZVN0b3IKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bjo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIGNhY2hlTmFtZSkK
IHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJvcGVuICglIiBQUkl1NjQgIikiLCByZXF1
ZXN0SWRlbnRpZmllcik7Ci0gICAgRW5naW5lOjpvcGVuKHNlc3Npb25JRCwgV1RGTW92ZShvcmln
aW4pLCBXVEZNb3ZlKGNhY2hlTmFtZSksIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rp
b24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2Fj
aGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSB7CisgICAgRW5naW5lOjpvcGVuKG1fY29ubmVj
dGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92
ZShjYWNoZU5hbWUpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmll
ck9yRXJyb3ImIHJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExP
V0VEX0lOX0NBTExCQUNLKCJvcGVuIiwgImNhY2hlIGlkZW50aWZpZXIgaXMgJSIgUFJJdTY0LCBb
XShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaWRlbnRpZmllcjsgfSk7CiAgICAg
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
Ok9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNz
aW9uSUQoKSk7CiAgICAgfSk7CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6b3BlbigKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJyZW1vdmUgKCUiIFBSSXU2NCAiKSBjYWNoZSAlIiBQUkl1NjQsIHJlcXVlc3RJZGVudGlm
aWVyLCBjYWNoZUlkZW50aWZpZXIpOwotICAgIEVuZ2luZTo6cmVtb3ZlKHNlc3Npb25JRCwgY2Fj
aGVJZGVudGlmaWVyLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmll
ck9yRXJyb3ImIHJlc3VsdCkgeworICAgIEVuZ2luZTo6cmVtb3ZlKG1fY29ubmVjdGlvbi5uZXR3
b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgW2Nvbm5lY3Rpb24gPSBt
YWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVu
dGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfRlVOQ1RJT05fSUZfQUxMT1dFRF9JTl9DQUxMQkFDSygicmVtb3ZlIiwgInJl
bW92ZWQgY2FjaGUgJSIgUFJJdTY0LCBbXShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUuaWRlbnRpZmllcjsgfSk7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Oldl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmll
ciwgcmVzdWx0KSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKICAgICB9KTsKQEAgLTgzLDcgKzgz
LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZW1vdgogdm9pZCBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3Jp
Z2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImNhY2hlcyAoJSIgUFJJdTY0ICIpIiwgcmVxdWVzdElkZW50aWZpZXIpOwotICAgIEVuZ2lu
ZTo6cmV0cmlldmVDYWNoZXMoc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50
ZXIsIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vz
c2lvbklELCBvcmlnaW4sIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUluZm9zT3JFcnJvciYmIHJl
c3VsdCkgeworICAgIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMobV9jb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCksIHNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVyLCBbY29u
bmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwg
b3JpZ2luLCByZXF1ZXN0SWRlbnRpZmllcl0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfRlVOQ1RJT05fSUZfQUxMT1dFRF9JTl9DQUxMQkFDSygiY2Fj
aGVzIiwgImNhY2hlcyBzaXplIGlzICVsdSIsIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVy
biB2YWx1ZS5pbmZvcy5zaXplKCk7IH0pOwogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpVcGRhdGVDYWNoZXMocmVxdWVzdElkZW50
aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgfSk7CkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGUKIHZvaWQg
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlUmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElk
ZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7Ci0gICAgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMo
c2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBt
YWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVu
dGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6cmV0cmlldmVS
ZWNvcmRzKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRl
bnRpZmllciwgV1RGTW92ZSh1cmwpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9u
LmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVy
cm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lGX0FMTE9XRURf
SU5fQ0FMTEJBQ0soInJldHJpZXZlUmVjb3JkcyIsICJyZWNvcmRzIHNpemUgaXMgJWx1IiwgW10o
Y29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsgfSk7CiAgICAgICAgIGNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlVwZGF0
ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQo
KSk7CiAgICAgfSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uOjpyZXRyaQogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZWxl
dGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGVsZXRlTWF0Y2hpbmdSZWNvcmRzICgl
IiBQUkl1NjQgIikgaW4gY2FjaGUgJSIgUFJJdTY0LCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJ
ZGVudGlmaWVyKTsKLSAgICBFbmdpbmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhzZXNzaW9uSUQs
IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSwgW2Nv
bm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQs
IHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIHsK
KyAgICBFbmdpbmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhtX2Nvbm5lY3Rpb24ubmV0d29ya1By
b2Nlc3MoKSwgc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUob3B0aW9ucyksIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3JkSWRlbnRpZmllcnNP
ckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lGX0FMTE9X
RURfSU5fQ0FMTEJBQ0soImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyIsICJkZWxldGVkICVsdSByZWNv
cmRzIiwgIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwog
ICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpEZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBz
ZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQg
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXQKIHZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6cHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxS
ZWNvcmQ+JiYgcmVjb3JkcykKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwdXRSZWNv
cmRzICglIiBQUkl1NjQgIikgaW4gY2FjaGUgJSIgUFJJdTY0ICIsICVsdSByZWNvcmRzIiwgcmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkcy5zaXplKCkpOwotICAgIEVu
Z2luZTo6cHV0UmVjb3JkcyhzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNv
cmRzKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBz
ZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiBy
ZXN1bHQpIHsKKyAgICBFbmdpbmU6OnB1dFJlY29yZHMobV9jb25uZWN0aW9uLm5ldHdvcmtQcm9j
ZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBbY29u
bmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwg
cmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgewog
ICAgICAgICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJwdXRS
ZWNvcmRzIiwgInB1dCAlbHUgcmVjb3JkcyIsICBbXShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUuc2l6ZSgpOyB9KTsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRl
bnRpZmllciwgcmVzdWx0KSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKICAgICB9KTsKQEAgLTEy
Niw3ICsxMjYsNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlZmVyCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvdW50
ZXIrKykKLSAgICAgICAgRW5naW5lOjpsb2NrKHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyKTsK
KyAgICAgICAgRW5naW5lOjpsb2NrKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNz
aW9uSUQsIGNhY2hlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbjo6ZGVyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpCkBAIC0xNDUsMjAgKzE0NSwyMCBAQCB2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OmRlcmVmCiAgICAgaWYgKC0tcmVmZXJlbmNlUmVzdWx0LT52YWx1ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRW5naW5lOjp1bmxvY2soc2Vzc2lvbklELCBjYWNoZUlk
ZW50aWZpZXIpOworICAgIEVuZ2luZTo6dW5sb2NrKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vz
cygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllcik7CiAgICAgcmVmZXJlbmNlcy5yZW1vdmUo
cmVmZXJlbmNlUmVzdWx0KTsKIH0KIAogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
OjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbikK
IHsKLSAgICBFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oc2Vzc2lvbklELCBXVEZN
b3ZlKG9yaWdpbiksIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0gKE9wdGlvbmFsPEVycm9yPiYmIGVy
cm9yKSB7CisgICAgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG1fY29ubmVjdGlv
bi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIFdURk1vdmUob3JpZ2luKSwgW2Nvbm5lY3Rp
b24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVl
c3RJZGVudGlmaWVyXSAoT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKICAgICAgICAgY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpLCBzZXNz
aW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwogfQogCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb246OmVuZ2luZVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgRW5naW5lOjpyZXByZXNlbnRh
dGlvbihzZXNzaW9uSUQsIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0gKGF1dG8mJiByZXByZXNlbnRh
dGlvbikgeworICAgIEVuZ2luZTo6cmVwcmVzZW50YXRpb24obV9jb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCksIHNlc3Npb25JRCwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXSAoYXV0byYmIHJlcHJl
c2VudGF0aW9uKSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OkVuZ2luZVJlcHJlc2VudGF0aW9uQ29tcGxldGVkIHsgcmVxdWVz
dElkZW50aWZpZXIsIHJlcHJlc2VudGF0aW9uIH0sIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAg
ICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3MSw3ICszNzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlUmVkaXJl
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0
KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1
ZXN0SGVhZGVycyhyZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9k
eSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6
c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWFwcGVkQm9keSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCkBA
IC0zOTcsNyArMzk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29u
cwogICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VFbnRyeShyZXF1ZXN0LCByZXNwb25zZSwgV1RG
TW92ZShyZXNwb25zZURhdGEpKTsKICAgICBhdXRvIHJlY29yZCA9IGNhY2hlRW50cnktPmVuY29k
ZUFzU3RvcmFnZVJlY29yZCgpOwogCi0gICAgbV9zdG9yYWdlLT5zdG9yZShyZWNvcmQsIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IERhdGEmIGJvZHlEYXRhKSB7CisgICAgbV9zdG9yYWdl
LT5zdG9yZShyZWNvcmQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IERhdGEmIGJvZHlE
YXRhKSBtdXRhYmxlIHsKICAgICAgICAgTWFwcGVkQm9keSBtYXBwZWRCb2R5OwogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IGJv
ZHlEYXRhLnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpKSB7CkBAIC00NzMsMTkgKzQ3MywxOSBAQCB2
b2lkIENhY2hlOjpyZW1vdmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgcmVtb3ZlKG1ha2VD
YWNoZUtleShyZXF1ZXN0KSk7CiB9CiAKLXZvaWQgQ2FjaGU6OnJlbW92ZShjb25zdCBWZWN0b3I8
S2V5PiYga2V5cywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
Q2FjaGU6OnJlbW92ZShjb25zdCBWZWN0b3I8S2V5PiYga2V5cywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fc3RvcmFnZS0+cmVtb3ZlKGtl
eXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBDYWNoZTo6dHJhdmVy
c2UoRnVuY3Rpb248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJiB0cmF2ZXJzZUhhbmRs
ZXIpCit2b2lkIENhY2hlOjp0cmF2ZXJzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFRy
YXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQogewogICAgIC8vIFByb3RlY3QgYWdh
aW5zdCBjbGllbnRzIG1ha2luZyBleGNlc3NpdmUgdHJhdmVyc2FsIHJlcXVlc3RzLgogICAgIGNv
bnN0IHVuc2lnbmVkIG1heGltdW1UcmF2ZXJzZUNvdW50ID0gMzsKICAgICBpZiAobV90cmF2ZXJz
ZUNvdW50ID49IG1heGltdW1UcmF2ZXJzZUNvdW50KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygi
TWF4aW11bSBwYXJhbGxlbCBjYWNoZSB0cmF2ZXJzZSBjb3VudCBleGNlZWRlZC4gSWdub3Jpbmcg
dHJhdmVyc2FsIHJlcXVlc3QuIik7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0cmF2ZXJzZUhhbmRsZXIgPSBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcildIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0cmF2ZXJzZUhhbmRsZXIgPSBXVEZNb3ZlKHRyYXZl
cnNlSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgdHJhdmVyc2VIYW5kbGVyKG51
bGxwdHIpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDkzLDcgKzQ5Myw3IEBA
IHZvaWQgQ2FjaGU6OnRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnMKIAogICAgICsrbV90cmF2
ZXJzZUNvdW50OwogCi0gICAgbV9zdG9yYWdlLT50cmF2ZXJzZShyZXNvdXJjZVR5cGUoKSwgeyB9
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmF2ZXJzZUhhbmRsZXIg
PSBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcildKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCogcmVjb3Jk
LCBjb25zdCBTdG9yYWdlOjpSZWNvcmRJbmZvJiByZWNvcmRJbmZvKSB7CisgICAgbV9zdG9yYWdl
LT50cmF2ZXJzZShyZXNvdXJjZVR5cGUoKSwgeyB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0cmF2ZXJzZUhhbmRsZXIgPSBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcild
IChjb25zdCBTdG9yYWdlOjpSZWNvcmQqIHJlY29yZCwgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5m
byYgcmVjb3JkSW5mbykgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVjb3JkKSB7CiAgICAgICAg
ICAgICAtLW1fdHJhdmVyc2VDb3VudDsKICAgICAgICAgICAgIHRyYXZlcnNlSGFuZGxlcihudWxs
cHRyKTsKQEAgLTUwMSw4ICs1MDEsMTAgQEAgdm9pZCBDYWNoZTo6dHJhdmVyc2UoRnVuY3Rpb248
dm9pZCAoY29ucwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5OjpkZWNv
ZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwotICAgICAgICBpZiAoIWVudHJ5KQorICAgICAgICBp
ZiAoIWVudHJ5KSB7CisgICAgICAgICAgICB0cmF2ZXJzZUhhbmRsZXIobnVsbHB0cik7CiAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBUcmF2ZXJzYWxFbnRyeSB0cmF2
ZXJzYWxFbnRyeSB7ICplbnRyeSwgcmVjb3JkSW5mbyB9OwogICAgICAgICB0cmF2ZXJzZUhhbmRs
ZXIoJnRyYXZlcnNhbEVudHJ5KTsKQEAgLTU3NSw3ICs1NzcsNyBAQCB2b2lkIENhY2hlOjpkZWxl
dGVEdW1wRmlsZSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGU6OmNsZWFyKFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IENhY2hlOjpjbGVhcihXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihO
ZXR3b3JrUHJvY2VzcykgY2xlYXJpbmcgY2FjaGUiKTsKIApAQCAtNTk4LDEwICs2MDAsMTAgQEAg
U3RyaW5nIENhY2hlOjpyZWNvcmRzUGF0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RvcmFnZS0+
cmVjb3Jkc1BhdGgoKTsKIH0KIAotdm9pZCBDYWNoZTo6cmV0cmlldmVEYXRhKGNvbnN0IERhdGFL
ZXkmIGRhdGFLZXksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlOjpyZXRyaWV2ZURhdGEoY29uc3Qg
RGF0YUtleSYgZGF0YUtleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCB1aW50OF90Kiwg
c2l6ZV90KT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgS2V5IGtleSB7IGRhdGFLZXksIG1f
c3RvcmFnZS0+c2FsdCgpIH07Ci0gICAgbV9zdG9yYWdlLT5yZXRyaWV2ZShrZXksIDQsIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZWNvcmQs
IGF1dG8pIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKGtleSwgNCwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlY29yZCwgYXV0bykgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghcmVjb3JkIHx8ICFyZWNvcmQtPmJvZHkuc2l6ZSgpKSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIlNo
YXJlYWJsZVJlc291cmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTEsOSArMTExLDkgQEAg
cHVibGljOgogCiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIH07Ci0gICAg
dXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKKyAgICB1c2luZyBSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47CiAgICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3Jl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lk
IChNYXBwZWRCb2R5Jik+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoTWFwcGVkQm9keSYpPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3Jl
UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJl
Y3RSZXF1ZXN0LCBPcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTEyMSwxNSArMTIxLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgY29uc3QgRW50cnkmIGVudHJ5OwogICAgICAgICBjb25zdCBTdG9yYWdlOjpS
ZWNvcmRJbmZvJiByZWNvcmRJbmZvOwogICAgIH07Ci0gICAgdm9pZCB0cmF2ZXJzZShGdW5jdGlv
bjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmKTsKKyAgICB2b2lkIHRyYXZlcnNlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJik7CiAgICAgdm9p
ZCByZW1vdmUoY29uc3QgS2V5Jik7CiAgICAgdm9pZCByZW1vdmUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgVmVjdG9yPEtleT4mLCBGdW5j
dGlvbjx2b2lkICgpPiYmKTsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBWZWN0b3I8S2V5PiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdm9p
ZCBjbGVhcihXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGNsZWFyKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICB2b2lkIHJldHJpZXZlRGF0YShjb25z
dCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZCAoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpPik7CisgICAgdm9pZCByZXRyaWV2ZURhdGEoY29uc3QgRGF0YUtleSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+KTsKICAgICB2b2lkIHN0b3JlRGF0
YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpOwo=
</data>
<flag name="review"
          id="375361"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>