<?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>230396</bug_id>
          
          <creation_ts>2021-09-17 02:10:44 -0700</creation_ts>
          <short_desc>[LFC][Integration] Move non-traversal functions from iterator to the dereferenced type</short_desc>
          <delta_ts>2021-09-17 06:26:05 -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>Layout and Rendering</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794380</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-17 02:10:44 -0700</bug_when>
    <thetext>Improve logic and const-correctness of the iterators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794383</commentid>
    <comment_count>1</comment_count>
      <attachid>438457</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-17 02:22:48 -0700</bug_when>
    <thetext>Created attachment 438457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794411</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-17 06:24:08 -0700</bug_when>
    <thetext>Committed r282658 (241801@main): &lt;https://commits.webkit.org/241801@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438457.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794413</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-17 06:26:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/83238518&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438457</attachid>
            <date>2021-09-17 02:22:48 -0700</date>
            <delta_ts>2021-09-17 06:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230396-20210917122246.patch</filename>
            <type>text/plain</type>
            <size>65452</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZlNjE0ZGJhZjFhNWQ1
OGQ0NmEzZGZmNTlhZDA1ZDhjMWRlNTRmMS4uMmM3YjJiM2VlY2RkNzRhZWUzMDEyYzM2ZDAyMTY2
YTZiZTI4OGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMS0wOS0xNyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIE1vdmUgbm9uLXRyYXZlcnNhbCBmdW5jdGlvbnMgZnJvbSBpdGVyYXRvciB0byB0aGUgZGVy
ZWZlcmVuY2VkIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMDM5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcHJvdmUgdGhlIGxvZ2ljIG9mIHRoZSBpdGVyYXRvciBpbnRlcmZhY2Ugc28gdGhl
IGNvZGUgZG9lcyBub3QgZW5kIHVwIGFzIGEgbWl4dHVyZSBvZiAuIGFuZCAtPiBhY2Nlc3MuCisg
ICAgICAgIFRoaXMgYWxzbyBtYWtlcyB0aGUgZGVyZWZlcmVuY2VkIGJveC9saW5lIHR5cGUgIG1v
cmUgdXNlZnVsIGluIGl0c2VsZi4KKworICAgICAgICBGb3IgZXhhbXBsZSB0byBnZXQgYSBuZXcg
aXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5leHQgbGluZToKKworICAgICAgICAgICAgYXV0byBu
ZXh0TGluZSA9IGxpbmUtPm5leHQoKTsKKworICAgICAgICBidXQgdG8gbXV0YXRlIHRoZSBpdGVy
YXRvciBzbyBpdCBwb2ludHMgdG8gdGhlIG5leHQgbGluZToKKworICAgICAgICAgICAgbGluZS50
cmF2ZXJzZU5leHQoKTsKKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb3NpdGlvbjo6dXBzdHJlYW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb246OmRvd25zdHJlYW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJl
bmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uOjppbmxpbmVSdW5BbmRPZmZzZXQgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVuZGVy
ZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpwcmV2
aW91c0xlYWZPbkxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlv
bjo6bmV4dExlYWZPbkxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3Np
dGlvbjo6bGVmdEJvdW5kYXJ5T2ZCaWRpUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVk
UG9zaXRpb246OnJpZ2h0Qm91bmRhcnlPZkJpZGlSdW4pOgorICAgICAgICAqIGVkaXRpbmcvUmVu
ZGVyZWRQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6bGlu
ZSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFs
bHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb246OmFic29sdXRlU2VsZWN0aW9uQm91bmRzRm9yTGluZSBjb25zdCk6CisgICAgICAgICog
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRUZXh0T3JM
aW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6ZW5kVGV4dE9yTGluZUJyZWFrUnVuKToK
KyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxseVByZXZpb3VzUnVuKToKKyAgICAgICAgKFdlYkNv
cmU6OmxvZ2ljYWxseU5leHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZv
ckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRM
aW5lUG9zaXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbHVl
V2l0aEhhcmRMaW5lQnJlYWtzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpmaXJzdExpbmVGb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246Omxhc3RMaW5lRm9yKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6bmV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aExpbmU6OnByZXZpb3VzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6Zmlyc3RSdW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhMaW5lOjpsYXN0UnVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6bG9n
aWNhbFN0YXJ0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpQYXRoTGluZTo6bG9naWNhbEVuZFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6UGF0aExpbmU6OmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6bG9naWNhbEVu
ZFJ1bldpdGhOb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpQYXRoTGluZTo6Y2xvc2VzdFJ1bkZvclBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6Y2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9z
aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJ
dGVyYXRvcjo6bmV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpwcmV2aW91cyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpmaXJzdFJ1biBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUl0ZXJhdG9yOjpsYXN0UnVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OmxvZ2ljYWxTdGFydFJ1biBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9y
Ojpsb2dpY2FsRW5kUnVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRl
cmF0b3I6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpjbG9zZXN0UnVuRm9yUG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJ
dGVyYXRvcjo6Y2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24pOiBEZWxldGVkLgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhMaW5lOjppc0ZpcnN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0
b3I6OmlzRmlyc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvcjo6UnVuSXRlcmF0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46Om5leHRPbkxpbmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OnByZXZpb3VzT25MaW5l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoUnVuOjpu
ZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OnByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OnN0
eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoVGV4
dFJ1bjo6bmV4dFRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OlBhdGhUZXh0UnVuOjpuZXh0VGV4dFJ1bkluVGV4dE9yZGVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5J
dGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0
b3I6Om5leHRPbkxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yOjpwcmV2aW91c09uTGluZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3I6Om5leHRP
bkxpbmVJZ25vcmluZ0xpbmVCcmVhayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3I6OnByZXZpb3VzT25MaW5lSWdub3JpbmdM
aW5lQnJlYWsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OlJ1bkl0ZXJhdG9yOjpsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5JdGVyYXRvcjo6bmV4dFRleHRSdW4g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRl
eHRSdW5JdGVyYXRvcjo6bmV4dFRleHRSdW5JblRleHRPcmRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1
dGVDYXJldFJlY3RGb3JMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNhcmV0
UmVjdEZvckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1
dGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9y
UG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3Ju
ZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGluZUJyZWFrOjpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJl
cGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9uR2Vv
bWV0cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpsaW5lRGlyZWN0aW9uUG9pbnRGaXRzSW5Cb3gp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdP
ZmZzZXRGb3JCaURpKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9y
UG9pbnQpOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6Om1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZU9mZnNldCk6CisKIDIwMjEtMDktMTYgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgaXNz
dWVzIHdpdGggdGhlIGNvZGUgcGF0aHMgdGhhdCBjYWxsIGludG8gU2Nyb2xsQW5pbWF0b3I6OmNv
bnRlbnRBcmVhV2lsbFBhaW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGRlMmFjMTcy
ZTgzOTNhNTQ2YzYxN2RkZThmZDA2MjNhYzU2NmRkZGUuLjZmOWExZDNiZmI2NWEzOTYzYzU4MmEx
OTMwZGYzNzgyYzZhYjY1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNzU3LDggKzc1
Nyw4IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2lu
Z1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+IHJ1bi0+
c3RhcnQoKSAmJiB0ZXh0T2Zmc2V0IDw9IHJ1bi0+ZW5kKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjdXJyZW50UG9zaXRpb247CiAKLSAgICAgICAgICAgICAgICBhdXRvIG5leHRSdW4g
PSBydW4ubmV4dFRleHRSdW5JblRleHRPcmRlcigpOwotICAgICAgICAgICAgICAgIGlmICh0ZXh0
T2Zmc2V0ID09IHJ1bi0+ZW5kKCkgKyAxICYmIG5leHRSdW4gJiYgcnVuLmxpbmUoKSAhPSBuZXh0
UnVuLmxpbmUoKSkKKyAgICAgICAgICAgICAgICBhdXRvIG5leHRSdW4gPSBydW4tPm5leHRUZXh0
UnVuSW5UZXh0T3JkZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBydW4t
PmVuZCgpICsgMSAmJiBuZXh0UnVuICYmIHJ1bi0+bGluZSgpICE9IG5leHRSdW4tPmxpbmUoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKIAogICAgICAgICAg
ICAgICAgIHJ1biA9IG5leHRSdW47CkBAIC04NjMsOCArODYzLDggQEAgUG9zaXRpb24gUG9zaXRp
b246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAg
ICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPj0gcnVuLT5zdGFydCgpICYmIHRleHRPZmZz
ZXQgPCBydW4tPmVuZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0
aW9uOwogCi0gICAgICAgICAgICAgICAgYXV0byBuZXh0UnVuID0gcnVuLm5leHRUZXh0UnVuSW5U
ZXh0T3JkZXIoKTsKLSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBydW4tPmVuZCgp
ICYmIG5leHRSdW4gJiYgcnVuLmxpbmUoKSAhPSBuZXh0UnVuLmxpbmUoKSkKKyAgICAgICAgICAg
ICAgICBhdXRvIG5leHRSdW4gPSBydW4tPm5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKTsKKyAgICAg
ICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBydW4tPmVuZCgpICYmIG5leHRSdW4gJiYgcnVu
LT5saW5lKCkgIT0gbmV4dFJ1bi0+bGluZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Y3VycmVudFBvc2l0aW9uOwogCiAgICAgICAgICAgICAgICAgcnVuID0gbmV4dFJ1bjsKQEAgLTEw
OTUsNyArMTA5NSw3IEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICBpZiAoIXJ1bjEgfHwgIXJ1bjIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChydW4xLmxpbmUoKSAhPSBydW4yLmxp
bmUoKSkKKyAgICBpZiAocnVuMS0+bGluZSgpICE9IHJ1bjItPmxpbmUoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBpZiAobmV4dFJlbmRlcmVkRWRpdGFibGUoZGVwcmVjYXRlZE5vZGUo
KSkgPT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKQpAQCAtMTI0MSw3ICsxMjQxLDcgQEAgSW5s
aW5lUnVuQW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVSdW5BbmRPZmZzZXQoQWZmaW5pdHkgYWZm
aW5pdHksIFRleHREaXJlY3Rpb24KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgaWYgKGNhcmV0T2Zmc2V0ID09IGNhcmV0TWF4T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAg
YXV0byBuZXh0T25MaW5lID0gdGV4dFJ1bi5uZXh0T25MaW5lKCk7CisgICAgICAgICAgICAgICAg
YXV0byBuZXh0T25MaW5lID0gdGV4dFJ1bi0+bmV4dE9uTGluZSgpOwogICAgICAgICAgICAgICAg
IGlmIChuZXh0T25MaW5lICYmIG5leHRPbkxpbmUtPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgSW5s
aW5lUnVuQW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVSdW5BbmRPZmZzZXQoQWZmaW5pdHkgYWZm
aW5pdHksIFRleHREaXJlY3Rpb24KICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRleHRSdW47CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoY2FuZGlkYXRlICYmICFjYW5kaWRhdGUubmV4dFRleHRS
dW4oKSAmJiBhZmZpbml0eSA9PSBBZmZpbml0eTo6RG93bnN0cmVhbSkgeworICAgICAgICBpZiAo
Y2FuZGlkYXRlICYmICFjYW5kaWRhdGUtPm5leHRUZXh0UnVuKCkgJiYgYWZmaW5pdHkgPT0gQWZm
aW5pdHk6OkRvd25zdHJlYW0pIHsKICAgICAgICAgICAgIHRleHRSdW4gPSBzZWFyY2hBaGVhZEZv
ckJldHRlck1hdGNoKHRleHRSZW5kZXJlcik7CiAgICAgICAgICAgICBpZiAodGV4dFJ1bikKICAg
ICAgICAgICAgICAgICBjYXJldE9mZnNldCA9IHRleHRSdW4tPm1pbmltdW1DYXJldE9mZnNldCgp
OwpAQCAtMTI4NSwxMyArMTI4NSwxMyBAQCBJbmxpbmVSdW5BbmRPZmZzZXQgUG9zaXRpb246Omlu
bGluZVJ1bkFuZE9mZnNldChBZmZpbml0eSBhZmZpbml0eSwgVGV4dERpcmVjdGlvbgogCiAgICAg
aWYgKHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICBpZiAo
Y2FyZXRPZmZzZXQgPT0gcnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgpKSB7Ci0gICAgICAgICAg
ICBhdXRvIG5leHRSdW4gPSBydW4ubmV4dE9uTGluZSgpOworICAgICAgICAgICAgYXV0byBuZXh0
UnVuID0gcnVuLT5uZXh0T25MaW5lKCk7CiAgICAgICAgICAgICBpZiAoIW5leHRSdW4gfHwgbmV4
dFJ1bi0+YmlkaUxldmVsKCkgPj0gbGV2ZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcnVu
LCBjYXJldE9mZnNldCB9OwogCiAgICAgICAgICAgICBsZXZlbCA9IG5leHRSdW4tPmJpZGlMZXZl
bCgpOwogCi0gICAgICAgICAgICBhdXRvIHByZXZpb3VzUnVuID0gcnVuLnByZXZpb3VzT25MaW5l
KCk7CisgICAgICAgICAgICBhdXRvIHByZXZpb3VzUnVuID0gcnVuLT5wcmV2aW91c09uTGluZSgp
OwogICAgICAgICAgICAgZm9yICg7IHByZXZpb3VzUnVuOyBwcmV2aW91c1J1bi50cmF2ZXJzZVBy
ZXZpb3VzT25MaW5lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNSdW4tPmJpZGlM
ZXZlbCgpIDw9IGxldmVsKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEzMDgsMTMg
KzEzMDgsMTMgQEAgSW5saW5lUnVuQW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVSdW5BbmRPZmZz
ZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhcmV0T2Zmc2V0ID0gcnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBwcmV2aW91c1J1biA9IHJ1bi5wcmV2aW91c09u
TGluZSgpOworICAgICAgICAgICAgYXV0byBwcmV2aW91c1J1biA9IHJ1bi0+cHJldmlvdXNPbkxp
bmUoKTsKICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW4gfHwgcHJldmlvdXNSdW4tPmJpZGlM
ZXZlbCgpID49IGxldmVsKQogICAgICAgICAgICAgICAgIHJldHVybiB7IHJ1biwgY2FyZXRPZmZz
ZXQgfTsKIAogICAgICAgICAgICAgbGV2ZWwgPSBwcmV2aW91c1J1bi0+YmlkaUxldmVsKCk7CiAK
LSAgICAgICAgICAgIGF1dG8gbmV4dFJ1biA9IHJ1bi5uZXh0T25MaW5lKCk7CisgICAgICAgICAg
ICBhdXRvIG5leHRSdW4gPSBydW4tPm5leHRPbkxpbmUoKTsKICAgICAgICAgICAgIGZvciAoOyBu
ZXh0UnVuOyBuZXh0UnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKG5leHRSdW4tPmJpZGlMZXZlbCgpIDw9IGxldmVsKQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTEzMzUsMTAgKzEzMzUsMTAgQEAgSW5saW5lUnVuQW5kT2Zmc2V0IFBvc2l0aW9u
OjppbmxpbmVSdW5BbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24KICAg
ICB9CiAKICAgICBpZiAoY2FyZXRPZmZzZXQgPT0gcnVuLT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkp
IHsKLSAgICAgICAgYXV0byBwcmV2aW91c1J1biA9IHJ1bi5wcmV2aW91c09uTGluZUlnbm9yaW5n
TGluZUJyZWFrKCk7CisgICAgICAgIGF1dG8gcHJldmlvdXNSdW4gPSBydW4tPnByZXZpb3VzT25M
aW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKICAgICAgICAgaWYgKCFwcmV2aW91c1J1biB8fCBwcmV2
aW91c1J1bi0+YmlkaUxldmVsKCkgPCBsZXZlbCkgewogICAgICAgICAgICAgLy8gTGVmdCBlZGdl
IG9mIGEgc2Vjb25kYXJ5IHJ1bi4gU2V0IHRvIHRoZSByaWdodCBlZGdlIG9mIHRoZSBlbnRpcmUg
cnVuLgotICAgICAgICAgICAgZm9yIChhdXRvIG5leHRSdW4gPSBydW4ubmV4dE9uTGluZUlnbm9y
aW5nTGluZUJyZWFrKCk7IG5leHRSdW47IG5leHRSdW4udHJhdmVyc2VOZXh0T25MaW5lSWdub3Jp
bmdMaW5lQnJlYWsoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG5leHRSdW4gPSBydW4tPm5l
eHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOyBuZXh0UnVuOyBuZXh0UnVuLnRyYXZlcnNlTmV4
dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkpIHsKICAgICAgICAgICAgICAgICBpZiAobmV4dFJ1
bi0+YmlkaUxldmVsKCkgPCBsZXZlbCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgcnVuID0gbmV4dFJ1bjsKQEAgLTEzNDYsNyArMTM0Niw3IEBAIElubGluZVJ1
bkFuZE9mZnNldCBQb3NpdGlvbjo6aW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5IGFmZmluaXR5
LCBUZXh0RGlyZWN0aW9uCiAgICAgICAgICAgICBjYXJldE9mZnNldCA9IHJ1bi0+cmlnaHRtb3N0
Q2FyZXRPZmZzZXQoKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmV2aW91c1J1bi0+YmlkaUxldmVs
KCkgPiBsZXZlbCkgewogICAgICAgICAgICAgLy8gUmlnaHQgZWRnZSBvZiBhICJ0ZXJ0aWFyeSIg
cnVuLiBTZXQgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGF0IHJ1bi4KLSAgICAgICAgICAgIGZvciAo
YXV0byB0ZXJ0aWFyeVJ1biA9IHJ1bi5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7
IHRlcnRpYXJ5UnVuOyB0ZXJ0aWFyeVJ1bi50cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdM
aW5lQnJlYWsoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIHRlcnRpYXJ5UnVuID0gcnVuLT5w
cmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7IHRlcnRpYXJ5UnVuOyB0ZXJ0aWFyeVJ1
bi50cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSkgewogICAgICAgICAg
ICAgICAgIGlmICh0ZXJ0aWFyeVJ1bi0+YmlkaUxldmVsKCkgPD0gbGV2ZWwpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJ1biA9IHRlcnRpYXJ5UnVuOwpAQCAt
MTM1NCwxMCArMTM1NCwxMCBAQCBJbmxpbmVSdW5BbmRPZmZzZXQgUG9zaXRpb246OmlubGluZVJ1
bkFuZE9mZnNldChBZmZpbml0eSBhZmZpbml0eSwgVGV4dERpcmVjdGlvbgogICAgICAgICAgICAg
Y2FyZXRPZmZzZXQgPSBydW4tPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbmV4dFJ1biA9IHJ1bi5uZXh0T25MaW5lSWdub3JpbmdM
aW5lQnJlYWsoKTsKKyAgICAgICAgYXV0byBuZXh0UnVuID0gcnVuLT5uZXh0T25MaW5lSWdub3Jp
bmdMaW5lQnJlYWsoKTsKICAgICAgICAgaWYgKCFuZXh0UnVuIHx8IG5leHRSdW4tPmJpZGlMZXZl
bCgpIDwgbGV2ZWwpIHsKICAgICAgICAgICAgIC8vIFJpZ2h0IGVkZ2Ugb2YgYSBzZWNvbmRhcnkg
cnVuLiBTZXQgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgZW50aXJlIHJ1bi4KLSAgICAgICAgICAg
IGZvciAoYXV0byBwcmV2aW91c1J1biA9IHJ1bi5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJy
ZWFrKCk7IHByZXZpb3VzUnVuOyBwcmV2aW91c1J1bi50cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdu
b3JpbmdMaW5lQnJlYWsoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIHByZXZpb3VzUnVuID0g
cnVuLT5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7IHByZXZpb3VzUnVuOyBwcmV2
aW91c1J1bi50cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChwcmV2aW91c1J1bi0+YmlkaUxldmVsKCkgPCBsZXZlbCkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgcnVuID0gcHJldmlvdXNSdW47
CkBAIC0xMzY1LDcgKzEzNjUsNyBAQCBJbmxpbmVSdW5BbmRPZmZzZXQgUG9zaXRpb246OmlubGlu
ZVJ1bkFuZE9mZnNldChBZmZpbml0eSBhZmZpbml0eSwgVGV4dERpcmVjdGlvbgogICAgICAgICAg
ICAgY2FyZXRPZmZzZXQgPSBydW4tPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKTsKICAgICAgICAgfSBl
bHNlIGlmIChuZXh0UnVuLT5iaWRpTGV2ZWwoKSA+IGxldmVsKSB7CiAgICAgICAgICAgICAvLyBM
ZWZ0IGVkZ2Ugb2YgYSAidGVydGlhcnkiIHJ1bi4gU2V0IHRvIHRoZSByaWdodCBlZGdlIG9mIHRo
YXQgcnVuLgotICAgICAgICAgICAgZm9yIChhdXRvIHRlcnRpYXJ5UnVuID0gcnVuLm5leHRPbkxp
bmVJZ25vcmluZ0xpbmVCcmVhaygpOyB0ZXJ0aWFyeVJ1bjsgdGVydGlhcnlSdW4udHJhdmVyc2VO
ZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIHRl
cnRpYXJ5UnVuID0gcnVuLT5uZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsgdGVydGlhcnlS
dW47IHRlcnRpYXJ5UnVuLnRyYXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAodGVydGlhcnlSdW4tPmJpZGlMZXZlbCgpIDw9IGxldmVsKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBydW4gPSB0ZXJ0aWFy
eVJ1bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCmluZGV4
IDQ2ZTMwMjkwNGYyYjc1OTgwNDJkYjE2NTY2NjhlMzU5ZmRjM2U1MTYuLjQ1NTA1N2FmOTcxZDJm
NDlmNDA4ZjAzMTUzMWY3M2Q1ODc2OWZlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAtOTgsMTQgKzk4LDE0IEBAIFJlbmRlcmVkUG9zaXRpb246
OlJlbmRlcmVkUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZp
bml0eSkKIExheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBSZW5kZXJlZFBvc2l0aW9uOjpw
cmV2aW91c0xlYWZPbkxpbmUoKSBjb25zdAogewogICAgIGlmICghbV9wcmV2aW91c0xlYWZPbkxp
bmUpCi0gICAgICAgIG1fcHJldmlvdXNMZWFmT25MaW5lID0gbV9ydW4ucHJldmlvdXNPbkxpbmVJ
Z25vcmluZ0xpbmVCcmVhaygpOworICAgICAgICBtX3ByZXZpb3VzTGVhZk9uTGluZSA9IG1fcnVu
LT5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgcmV0dXJuICptX3ByZXZp
b3VzTGVhZk9uTGluZTsKIH0KIAogTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIFJlbmRl
cmVkUG9zaXRpb246Om5leHRMZWFmT25MaW5lKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbmV4dExl
YWZPbkxpbmUpCi0gICAgICAgIG1fbmV4dExlYWZPbkxpbmUgPSBtX3J1bi5uZXh0T25MaW5lSWdu
b3JpbmdMaW5lQnJlYWsoKTsKKyAgICAgICAgbV9uZXh0TGVhZk9uTGluZSA9IG1fcnVuLT5uZXh0
T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKICAgICByZXR1cm4gKm1fbmV4dExlYWZPbkxpbmU7
CiB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBSZW5kZXJlZFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRp
b246OmxlZnRCb3VuZGFyeU9mQmlkaVJ1bih1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbAogCiAgICAg
YXV0byBydW4gPSBtX3J1bjsKICAgICBkbyB7Ci0gICAgICAgIGF1dG8gcHJldiA9IHJ1bi5wcmV2
aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CisgICAgICAgIGF1dG8gcHJldiA9IHJ1bi0+
cHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOwogICAgICAgICBpZiAoIXByZXYgfHwg
cHJldi0+YmlkaUxldmVsKCkgPCBiaWRpTGV2ZWxPZlJ1bikKICAgICAgICAgICAgIHJldHVybiBS
ZW5kZXJlZFBvc2l0aW9uKCZydW4tPnJlbmRlcmVyKCksIHJ1biwgcnVuLT5sZWZ0bW9zdENhcmV0
T2Zmc2V0KCkpOwogICAgICAgICBydW4gPSBwcmV2OwpAQCAtMTUyLDcgKzE1Miw3IEBAIFJlbmRl
cmVkUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cmlnaHRCb3VuZGFyeU9mQmlkaVJ1bih1bnNp
Z25lZCBjaGFyIGJpZGlMZXZlCiAKICAgICBhdXRvIHJ1biA9IG1fcnVuOwogICAgIGRvIHsKLSAg
ICAgICAgYXV0byBuZXh0ID0gcnVuLm5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOworICAg
ICAgICBhdXRvIG5leHQgPSBydW4tPm5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOwogICAg
ICAgICBpZiAoIW5leHQgfHwgbmV4dC0+YmlkaUxldmVsKCkgPCBiaWRpTGV2ZWxPZlJ1bikKICAg
ICAgICAgICAgIHJldHVybiBSZW5kZXJlZFBvc2l0aW9uKCZydW4tPnJlbmRlcmVyKCksIHJ1biwg
cnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgpKTsKICAgICAgICAgcnVuID0gbmV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKaW5kZXggNWMwODdlMDExMGRmNWVk
NjE4MTkwZDkzYmRkZWQ1YTU0NzMxMzM0OS4uYmVlYWM0OTJmNjMyNTkyZjU1YjZkMWRhZDdkMGUx
OWM0MWY3ZDM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBv
c2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IFJl
bmRlcmVkUG9zaXRpb24mKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIW1fcmVuZGVyZXI7IH0KLSAgICBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yIGxp
bmUoKSBjb25zdCB7IHJldHVybiBtX3J1biA/IG1fcnVuLmxpbmUoKSA6IExheW91dEludGVncmF0
aW9uOjpMaW5lSXRlcmF0b3IoKTsgfQorICAgIExheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0
b3IgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuID8gbV9ydW4tPmxpbmUoKSA6IExheW91dElu
dGVncmF0aW9uOjpMaW5lSXRlcmF0b3IoKTsgfQogCiAgICAgdW5zaWduZWQgY2hhciBiaWRpTGV2
ZWxPbkxlZnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbE9uUmlnaHQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCAy
MmUyYmJhY2I1YjU4NDQ3YzJmMzY2OTJjNjIzZjNiZmFhYjVhNmUyLi5lN2E1YWJmYjViNzM1OTY2
NmI0YzYzMzcxMTM1Yzk0ZmQyOWZjOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlUG9zaXRpb24uY3BwCkBAIC0xNTMsMTEgKzE1MywxMSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9z
aXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKIAogICAgICAgICAg
ICAgaWYgKG9mZnNldCAhPSBydW4tPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKSkgewogICAgICAgICAg
ICAgICAgIC8vIE92ZXJzaG90IHRvIHRoZSBsZWZ0LgotICAgICAgICAgICAgICAgIGF1dG8gcHJl
dmlvdXNSdW4gPSBydW4ucHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOworICAgICAg
ICAgICAgICAgIGF1dG8gcHJldmlvdXNSdW4gPSBydW4tPnByZXZpb3VzT25MaW5lSWdub3JpbmdM
aW5lQnJlYWsoKTsKICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUnVuKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25MZWZ0ID0gcHJpbWFyeURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUo
bV9kZWVwUG9zaXRpb24pIDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9z
aXRpb24pOwogICAgICAgICAgICAgICAgICAgICBhdXRvIHJ1bk9uTGVmdCA9IHBvc2l0aW9uT25M
ZWZ0LmlubGluZVJ1bkFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uKS5ydW47
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChydW5PbkxlZnQgJiYgcnVuT25MZWZ0LmxpbmUoKSA9
PSBydW4ubGluZSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAocnVuT25MZWZ0ICYmIHJ1bk9u
TGVmdC0+bGluZSgpID09IHJ1bi0+bGluZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbk9uTGVm
dDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzAsMTEgKzE3MCwxMSBAQCBQb3NpdGlvbiBWaXNp
YmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBsZXZlbCA9IHJ1bi0+YmlkaUxl
dmVsKCk7Ci0gICAgICAgICAgICBhdXRvIHByZXZpb3VzUnVuID0gcnVuLnByZXZpb3VzT25MaW5l
KCk7CisgICAgICAgICAgICBhdXRvIHByZXZpb3VzUnVuID0gcnVuLT5wcmV2aW91c09uTGluZSgp
OwogCiAgICAgICAgICAgICBpZiAocnVuLT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9u
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1J1bikgewotICAgICAgICAgICAgICAg
ICAgICBhdXRvIGxvZ2ljYWxTdGFydCA9IChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUikgPyBydW4ubGluZSgpLmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgOiBydW4ubGlu
ZSgpLmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxv
Z2ljYWxTdGFydCA9IChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgPyBy
dW4tPmxpbmUoKS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKSA6IHJ1bi0+bGluZSgpLT5sb2dp
Y2FsRW5kUnVuV2l0aE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxTdGFy
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcnVuID0gbG9naWNhbFN0YXJ0OwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmcnVuLT5yZW5kZXJlcigpOwpAQCAtMjIxLDcg
KzIyMSw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAv
LyBUcmFpbGluZyBlZGdlIG9mIGEgc2Vjb25kYXJ5IHJ1bi4gU2V0IHRvIHRoZSBsZWFkaW5nIGVk
Z2Ugb2YgdGhlIGVudGlyZSBydW4uCiAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGF1dG8gbmV4dFJ1biA9IHJ1bi5uZXh0T25MaW5lKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGF1dG8gbmV4dFJ1biA9IHJ1bi0+bmV4dE9u
TGluZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFJ1bi0+YmlkaUxldmVs
KCkgPCBsZXZlbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1biA9IG5leHRSdW47CkBAIC0yMjksNyArMjI5LDcgQEAgUG9zaXRp
b24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0
CiAgICAgICAgICAgICAgICAgICAgIGlmIChydW4tPmJpZGlMZXZlbCgpID09IGxldmVsKQogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGxldmVsID0g
cnVuLT5iaWRpTGV2ZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGF1dG8gcHJldmlv
dXNSdW4gPSBydW4ucHJldmlvdXNPbkxpbmUoKSkgeworICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoYXV0byBwcmV2aW91c1J1biA9IHJ1bi0+cHJldmlvdXNPbkxpbmUoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUnVuLT5iaWRpTGV2ZWwoKSA8IGxldmVsKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAg
cnVuID0gcHJldmlvdXNSdW47CkBAIC0zMTUsMTEgKzMxNSwxMSBAQCBQb3NpdGlvbiBWaXNpYmxl
UG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAKICAgICAg
ICAgICAgIGlmIChvZmZzZXQgIT0gcnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gT3ZlcnNob3QgdG8gdGhlIHJpZ2h0LgotICAgICAgICAgICAgICAgIGF1
dG8gbmV4dFJ1biA9IHJ1bi5uZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIG5leHRSdW4gPSBydW4tPm5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygp
OwogICAgICAgICAgICAgICAgIGlmICghbmV4dFJ1bikgewogICAgICAgICAgICAgICAgICAgICBQ
b3NpdGlvbiBwb3NpdGlvbk9uUmlnaHQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUiA/IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6
IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcnVuT25SaWdodCA9IHBvc2l0aW9uT25SaWdodC5pbmxpbmVS
dW5BbmRPZmZzZXQobV9hZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbikucnVuOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocnVuT25SaWdodCAmJiBydW5PblJpZ2h0LmxpbmUoKSA9PSBydW4ubGlu
ZSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAocnVuT25SaWdodCAmJiBydW5PblJpZ2h0LT5s
aW5lKCkgPT0gcnVuLT5saW5lKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUG9z
aXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uT25SaWdodDsKICAg
ICAgICAgICAgICAgICB9CkBAIC0zMzIsMTEgKzMzMiwxMSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9z
aXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwgPSBydW4tPmJpZGlMZXZlbCgp
OwotICAgICAgICAgICAgYXV0byBuZXh0UnVuID0gcnVuLm5leHRPbkxpbmUoKTsKKyAgICAgICAg
ICAgIGF1dG8gbmV4dFJ1biA9IHJ1bi0+bmV4dE9uTGluZSgpOwogCiAgICAgICAgICAgICBpZiAo
cnVuLT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFuZXh0UnVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbEVuZCA9IHBy
aW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcnVuLmxpbmUoKS5sb2dpY2Fs
RW5kUnVuV2l0aE5vZGUoKSA6IHJ1bi5saW5lKCkubG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2Rl
KCkgOiBydW4tPmxpbmUoKS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxvZ2ljYWxFbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biA9
IGxvZ2ljYWxFbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZydW4tPnJl
bmRlcmVyKCk7CkBAIC0zODYsNyArMzg2LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpy
aWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAvLyBUcmFpbGluZyBlZGdlIG9mIGEgc2Vjb25kYXJ5IHJ1bi4g
U2V0IHRvIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIGVudGlyZSBydW4uCiAgICAgICAgICAgICAg
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGF1dG8gcHJldmlv
dXNSdW4gPSBydW4ucHJldmlvdXNPbkxpbmUoKSkgeworICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoYXV0byBwcmV2aW91c1J1biA9IHJ1bi0+cHJldmlvdXNPbkxpbmUoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUnVuLT5iaWRpTGV2ZWwoKSA8IGxldmVsKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAg
cnVuID0gcHJldmlvdXNSdW47CkBAIC0zOTQsNyArMzk0LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBv
c2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAg
ICAgICAgICAgICBpZiAocnVuLT5iaWRpTGV2ZWwoKSA9PSBsZXZlbCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IHJ1bi0+YmlkaUxl
dmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChhdXRvIG5leHRSdW4gPSBydW4ubmV4
dE9uTGluZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhdXRvIG5leHRSdW4gPSBy
dW4tPm5leHRPbkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRSdW4t
PmJpZGlMZXZlbCgpIDwgbGV2ZWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgICAgICBydW4gPSBuZXh0UnVuOwpAQCAtNjU5LDcgKzY1OSw3
IEBAIEZsb2F0UmVjdCBWaXNpYmxlUG9zaXRpb246OmFic29sdXRlU2VsZWN0aW9uQm91bmRzRm9y
TGluZSgpIGNvbnN0CiAgICAgaWYgKCFydW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBh
dXRvIGxpbmUgPSBydW4ubGluZSgpOworICAgIGF1dG8gbGluZSA9IHJ1bi0+bGluZSgpOwogICAg
IGF1dG8gbG9jYWxSZWN0ID0gRmxvYXRSZWN0IHsgRmxvYXRQb2ludCB7IGxpbmUtPmNvbnRlbnRM
b2dpY2FsTGVmdCgpLCBsaW5lLT5zZWxlY3Rpb25Ub3AoKSB9LCBGbG9hdFBvaW50IHsgbGluZS0+
Y29udGVudExvZ2ljYWxSaWdodCgpLCBsaW5lLT5zZWxlY3Rpb25Cb3R0b20oKSB9IH07CiAgICAg
aWYgKCFsaW5lLT5pc0hvcml6b250YWwoKSkKICAgICAgICAgbG9jYWxSZWN0ID0gbG9jYWxSZWN0
LnRyYW5zcG9zZWRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAK
aW5kZXggZGY1NzBmZmQ0NGZjNGRmYmU5YTYzY2VkMzgwNGNlYmNhMjE5M2E3ZS4uYjc0ZDczYmY1
NzQzZGFhNWM0NDM1NmNkYmMzMzdiMmRhMTI0ZDM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBMYXlvdXRJbnRlZ3Jh
dGlvbjo6UnVuSXRlcmF0b3IgbmV4dFRleHRPckxpbmVCcmVha1J1bihMYXlvdXRJbnRlZ3JhdGlv
bjo6CiAKIHN0YXRpYyBMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3Igc3RhcnRUZXh0T3JM
aW5lQnJlYWtSdW4oTGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvciBsaW5lKQogewotICAg
IGF1dG8gcnVuID0gbGluZS5sb2dpY2FsU3RhcnRSdW4oKTsKKyAgICBhdXRvIHJ1biA9IGxpbmUt
PmxvZ2ljYWxTdGFydFJ1bigpOwogICAgIGlmIChpc1RleHRPckxpbmVCcmVha1J1bihydW4pKQog
ICAgICAgICByZXR1cm4gcnVuOwogICAgIHJldHVybiBuZXh0VGV4dE9yTGluZUJyZWFrUnVuKHJ1
bik7CkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIExheW91dEludGVncmF0aW9uOjpSdW5JdGVy
YXRvciBzdGFydFRleHRPckxpbmVCcmVha1J1bihMYXlvdXRJbnRlZ3JhdGlvbjoKIAogc3RhdGlj
IExheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBlbmRUZXh0T3JMaW5lQnJlYWtSdW4oTGF5
b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvciBsaW5lKQogewotICAgIGF1dG8gcnVuID0gbGlu
ZS5sb2dpY2FsRW5kUnVuKCk7CisgICAgYXV0byBydW4gPSBsaW5lLT5sb2dpY2FsRW5kUnVuKCk7
CiAgICAgaWYgKGlzVGV4dE9yTGluZUJyZWFrUnVuKHJ1bikpCiAgICAgICAgIHJldHVybiBydW47
CiAgICAgcmV0dXJuIHByZXZpb3VzVGV4dE9yTGluZUJyZWFrUnVuKHJ1bik7CkBAIC0xNzAsNyAr
MTcwLDcgQEAgc3RhdGljIGNvbnN0IExheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBsb2dp
Y2FsbHlQcmV2aW91c1J1bihjb25zdCBWaXNpYmxlUG8KICAgICBpZiAoYXV0byBwcmV2aW91c1J1
biA9IHByZXZpb3VzVGV4dE9yTGluZUJyZWFrUnVuKHN0YXJ0UnVuKSkKICAgICAgICAgcmV0dXJu
IHByZXZpb3VzUnVuOwogCi0gICAgaWYgKGF1dG8gcHJldmlvdXNMaW5lID0gc3RhcnRSdW4ubGlu
ZSgpLnByZXZpb3VzKCkpIHsKKyAgICBpZiAoYXV0byBwcmV2aW91c0xpbmUgPSBzdGFydFJ1bi0+
bGluZSgpLT5wcmV2aW91cygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlv
dXNCb3hJbkRpZmZlcmVudExpbmUgc2V0IGhlcmU/CiAgICAgICAgIGlmIChhdXRvIHByZXZpb3Vz
UnVuID0gZW5kVGV4dE9yTGluZUJyZWFrUnVuKHByZXZpb3VzTGluZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gcHJldmlvdXNSdW47CkBAIC0xOTAsMTQgKzE5MCwxNCBAQCBzdGF0aWMgY29uc3QgTGF5
b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIGxvZ2ljYWxseVByZXZpb3VzUnVuKGNvbnN0IFZp
c2libGVQbwogICAgICAgICBpZiAoIXByZXZpb3VzTGluZSkKICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIGlmIChwcmV2aW91c0xpbmUgIT0gc3RhcnRSdW4ubGluZSgpKSB7CisgICAgICAg
IGlmIChwcmV2aW91c0xpbmUgIT0gc3RhcnRSdW4tPmxpbmUoKSkgewogICAgICAgICAgICAgaWYg
KGF1dG8gcHJldmlvdXNSdW4gPSBlbmRUZXh0T3JMaW5lQnJlYWtSdW4ocHJldmlvdXNMaW5lKSkg
ewogICAgICAgICAgICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNSdW47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBzdGFydFJ1biA9IHByZXZpb3VzTGluZS5sb2dpY2FsU3RhcnRSdW4oKTsK
KyAgICAgICAgc3RhcnRSdW4gPSBwcmV2aW91c0xpbmUtPmxvZ2ljYWxTdGFydFJ1bigpOwogICAg
IH0KICAgICByZXR1cm4geyB9OwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBjb25zdCBM
YXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3IgbG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNp
YmxlUG9zaXRpCiAgICAgaWYgKGF1dG8gbmV4dFJ1biA9IG5leHRUZXh0T3JMaW5lQnJlYWtSdW4o
c3RhcnRSdW4pKQogICAgICAgICByZXR1cm4gbmV4dFJ1bjsKIAotICAgIGlmIChhdXRvIG5leHRM
aW5lID0gc3RhcnRSdW4ubGluZSgpLm5leHQoKSkgeworICAgIGlmIChhdXRvIG5leHRMaW5lID0g
c3RhcnRSdW4tPmxpbmUoKS0+bmV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3Qg
cHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgc2V0IGhlcmU/CiAgICAgICAgIGlmIChhdXRvIG5l
eHRSdW4gPSBzdGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gbmV4dFJ1bjsKQEAgLTIyOCwxNCArMjI4LDE0IEBAIHN0YXRpYyBjb25zdCBMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3IgbG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNpYmxlUG9z
aXRpCiAgICAgICAgIGlmICghbmV4dExpbmUpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBpZiAobmV4dExpbmUgIT0gc3RhcnRSdW4ubGluZSgpKSB7CisgICAgICAgIGlmIChuZXh0TGlu
ZSAhPSBzdGFydFJ1bi0+bGluZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBuZXh0UnVuID0g
c3RhcnRUZXh0T3JMaW5lQnJlYWtSdW4obmV4dExpbmUpKSB7CiAgICAgICAgICAgICAgICAgbmV4
dEJveEluRGlmZmVyZW50TGluZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRS
dW47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdGFydFJ1biA9IG5leHRM
aW5lLmxvZ2ljYWxFbmRSdW4oKTsKKyAgICAgICAgc3RhcnRSdW4gPSBuZXh0TGluZS0+bG9naWNh
bEVuZFJ1bigpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpAQCAtNzQ2LDggKzc0Niw4IEBA
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKICAgICB9CiAKLSAgICBOb2RlKiBzdGFydE5vZGU7Ci0gICAgTGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yIHN0YXJ0UnVuID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBsaW5l
LmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgOiBsaW5lLmZpcnN0UnVuKCk7CisgICAgTm9kZSog
c3RhcnROb2RlID0gbnVsbHB0cjsKKyAgICBhdXRvIHN0YXJ0UnVuID0gbW9kZSA9PSBVc2VMb2dp
Y2FsT3JkZXJpbmcgPyBsaW5lLT5sb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIDogbGluZS0+Zmly
c3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBsaXN0IG1hcmtlcnMgYW5k
IENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhhdmUgbm8gY29ycmVzcG9u
ZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5
IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgZm9sbG93cyBpbnN0ZWFkLgogICAgIHdo
aWxlICh0cnVlKSB7CkBAIC04MTYsOCArODE2LDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBl
bmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pbnQK
ICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIH0KIAotICAgIE5vZGUqIGVu
ZE5vZGU7Ci0gICAgTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIGVuZFJ1biA9IG1vZGUg
PT0gVXNlTG9naWNhbE9yZGVyaW5nID8gbGluZS5sb2dpY2FsRW5kUnVuV2l0aE5vZGUoKSA6IGxp
bmUubGFzdFJ1bigpOworICAgIE5vZGUqIGVuZE5vZGUgPSBudWxscHRyOworICAgIGF1dG8gZW5k
UnVuID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBsaW5lLT5sb2dpY2FsRW5kUnVuV2l0
aE5vZGUoKSA6IGxpbmUtPmxhc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5n
LiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMp
IGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90
IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgcHJlY2Vk
ZXMgaW5zdGVhZC4KICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtOTYzLDEwICs5NjMsMTAgQEAgVmlz
aWJsZVBvc2l0aW9uIHByZXZpb3VzTGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBpbnQKIAogICAgIExheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0
b3IgbGluZTsKICAgICBpZiAoYXV0byBydW4gPSB2aXNpYmxlUG9zaXRpb24uaW5saW5lUnVuQW5k
T2Zmc2V0KCkucnVuKSB7Ci0gICAgICAgIGxpbmUgPSBydW4ubGluZSgpLnByZXZpb3VzKCk7Cisg
ICAgICAgIGxpbmUgPSBydW4tPmxpbmUoKS0+cHJldmlvdXMoKTsKICAgICAgICAgLy8gV2Ugd2Fu
dCB0byBza2lwIHplcm8gaGVpZ2h0IGJveGVzLgogICAgICAgICAvLyBUaGlzIGNvdWxkIGhhcHBl
biBpbiBjYXNlIGl0IGlzIGEgTGVnYWN5Um9vdElubGluZUJveCB3aXRoIHRyYWlsaW5nIGZsb2F0
cy4KLSAgICAgICAgaWYgKCFsaW5lIHx8ICFsaW5lLT5sb2dpY2FsSGVpZ2h0KCkgfHwgIWxpbmUu
Zmlyc3RSdW4oKSkKKyAgICAgICAgaWYgKCFsaW5lIHx8ICFsaW5lLT5sb2dpY2FsSGVpZ2h0KCkg
fHwgIWxpbmUtPmZpcnN0UnVuKCkpCiAgICAgICAgICAgICBsaW5lID0geyB9OwogICAgIH0KIApA
QCAtOTgzLDcgKzk4Myw3IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50CiAgICAgaWYgKGxpbmUp
IHsKICAgICAgICAgLy8gRklYTUU6IENhbiBiZSB3cm9uZyBmb3IgbXVsdGktY29sdW1uIGxheW91
dCBhbmQgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICBhdXRvIHBvaW50SW5MaW5lID0gYWJzb2x1
dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKGxpbmUsIGxpbmVEaXJlY3Rp
b25Qb2ludCk7Ci0gICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbGluZS5jbG9zZXN0UnVuRm9yUG9p
bnQocG9pbnRJbkxpbmUsIGlzRWRpdGFibGVQb3NpdGlvbihwKSktPnJlbmRlcmVyKCk7CisgICAg
ICAgIGF1dG8mIHJlbmRlcmVyID0gbGluZS0+Y2xvc2VzdFJ1bkZvclBvaW50KHBvaW50SW5MaW5l
LCBpc0VkaXRhYmxlUG9zaXRpb24ocCkpLT5yZW5kZXJlcigpOwogICAgICAgICBOb2RlKiBub2Rl
ID0gcmVuZGVyZXIubm9kZSgpOwogICAgICAgICBpZiAobm9kZSAmJiBlZGl0aW5nSWdub3Jlc0Nv
bnRlbnQoKm5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVO
b2RlKG5vZGUpOwpAQCAtMTAxMywxMCArMTAxMywxMCBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExp
bmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50IGxp
bgogCiAgICAgTGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvciBsaW5lOwogICAgIGlmIChh
dXRvIHJ1biA9IHZpc2libGVQb3NpdGlvbi5pbmxpbmVSdW5BbmRPZmZzZXQoKS5ydW4pIHsKLSAg
ICAgICAgbGluZSA9IHJ1bi5saW5lKCkubmV4dCgpOworICAgICAgICBsaW5lID0gcnVuLT5saW5l
KCktPm5leHQoKTsKICAgICAgICAgLy8gV2Ugd2FudCB0byBza2lwIHplcm8gaGVpZ2h0IGJveGVz
LgogICAgICAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiBpbiBjYXNlIGl0IGlzIGEgTGVnYWN5Um9v
dElubGluZUJveCB3aXRoIHRyYWlsaW5nIGZsb2F0cy4KLSAgICAgICAgaWYgKCFsaW5lIHx8ICFs
aW5lLT5sb2dpY2FsSGVpZ2h0KCkgfHwgIWxpbmUuZmlyc3RSdW4oKSkKKyAgICAgICAgaWYgKCFs
aW5lIHx8ICFsaW5lLT5sb2dpY2FsSGVpZ2h0KCkgfHwgIWxpbmUtPmZpcnN0UnVuKCkpCiAgICAg
ICAgICAgICBsaW5lID0geyB9OwogICAgIH0KIApAQCAtMTAzNiw3ICsxMDM2LDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24sIGludCBsaW4KICAgICBpZiAobGluZSkgewogICAgICAgICAvLyBGSVhNRTogQ2Fu
IGJlIHdyb25nIGZvciBtdWx0aS1jb2x1bW4gbGF5b3V0IGFuZCB3aXRoIHRyYW5zZm9ybXMuCiAg
ICAgICAgIGF1dG8gcG9pbnRJbkxpbmUgPSBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9j
YWxQb2ludEluQmxvY2sobGluZSwgbGluZURpcmVjdGlvblBvaW50KTsKLSAgICAgICAgYXV0byYg
cmVuZGVyZXIgPSBsaW5lLmNsb3Nlc3RSdW5Gb3JQb2ludChwb2ludEluTGluZSwgaXNFZGl0YWJs
ZVBvc2l0aW9uKHApKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBsaW5l
LT5jbG9zZXN0UnVuRm9yUG9pbnQocG9pbnRJbkxpbmUsIGlzRWRpdGFibGVQb3NpdGlvbihwKSkt
PnJlbmRlcmVyKCk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci5ub2RlKCk7CiAgICAg
ICAgIGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbm9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDY2YWNi
OTdhNzE3YjI4ZDgxNmRkNjdkNzhkOTdhNDI4MjAyZjk5ZWYuLjRkNDk5NzI0YTM4OWQ5ZTRiYjQ0
YWFiZTE0NzMyNWU1OTczODVmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC03MDcsNyArNzA3LDcgQEAgU3RyaW5nIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZVdpdGhIYXJkTGluZUJyZWFrcygpIGNvbnN0
CiAKICAgICBhdXRvIHNraXBUb05leHRTb2Z0TGluZUJyZWFrUG9zaXRpb24gPSBbJl0gewogICAg
ICAgICBmb3IgKDsgY3VycmVudExpbmU7IGN1cnJlbnRMaW5lLnRyYXZlcnNlTmV4dCgpKSB7Ci0g
ICAgICAgICAgICBhdXRvIGxhc3RSdW4gPSBjdXJyZW50TGluZS5sYXN0UnVuKCk7CisgICAgICAg
ICAgICBhdXRvIGxhc3RSdW4gPSBjdXJyZW50TGluZS0+bGFzdFJ1bigpOwogICAgICAgICAgICAg
QVNTRVJUKGxhc3RSdW4pOwogICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBsYXN0UnVuLT5y
ZW5kZXJlcigpOwogICAgICAgICAgICAgYXV0byBsaW5lRW5kc1dpdGhCUiA9IGlzPFJlbmRlckxp
bmVCcmVhaz4ocmVuZGVyZXIpICYmICFkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVy
KS5pc1dCUigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5jcHAKaW5kZXggYWZi
ZTdlMjE0N2M1ODQ0ZTVjYmFjMjUzMWRjNTIxYWRiMjg3MTc0Yy4uNDQwYWFiYzY0ZDcyZjBiNTk4
M2FiMTNlMzAzYjhhZDU1MjlkNzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3IuY3BwCkBAIC0zOCw2ICszOCwxMSBAQCBMaW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvcihQYXRo
TGluZTo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKIHsKIH0KIAorTGluZUl0ZXJhdG9yOjpM
aW5lSXRlcmF0b3IoY29uc3QgUGF0aExpbmUmIGxpbmUpCisgICAgOiBtX2xpbmUobGluZSkKK3sK
K30KKwogYm9vbCBMaW5lSXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihtX2xpbmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewpAQCAtNDUs
MTYgKzUwLDYgQEAgYm9vbCBMaW5lSXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKICAgICB9KTsKIH0K
IAotTGluZUl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bmV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IExpbmVJdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0KCk7Ci19Ci0KLUxpbmVJdGVyYXRvciBM
aW5lSXRlcmF0b3I6OnByZXZpb3VzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTGluZUl0ZXJhdG9y
KCp0aGlzKS50cmF2ZXJzZVByZXZpb3VzKCk7Ci19Ci0KIExpbmVJdGVyYXRvciYgTGluZUl0ZXJh
dG9yOjp0cmF2ZXJzZU5leHQoKQogewogICAgIFdURjo6c3dpdGNoT24obV9saW5lLm1fcGF0aFZh
cmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKQEAgLTc2LDMxICs3MSw2NSBAQCBib29sIExpbmVJdGVy
YXRvcjo6b3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgIHJl
dHVybiBtX2xpbmUubV9wYXRoVmFyaWFudCA9PSBvdGhlci5tX2xpbmUubV9wYXRoVmFyaWFudDsK
IH0KIAotUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpmaXJzdFJ1bigpIGNvbnN0CitMaW5lSXRl
cmF0b3IgZmlyc3RMaW5lRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK3sKKyNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBpZiAoYXV0byogbGluZUxheW91
dCA9IGZsb3cubW9kZXJuTGluZUxheW91dCgpKQorICAgICAgICByZXR1cm4gbGluZUxheW91dC0+
Zmlyc3RMaW5lKCk7CisjZW5kaWYKKworICAgIHJldHVybiB7IExpbmVJdGVyYXRvckxlZ2FjeVBh
dGggeyBmbG93LmZpcnN0Um9vdEJveCgpIH0gfTsKK30KKworTGluZUl0ZXJhdG9yIGxhc3RMaW5l
Rm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKIHsKLSAgICByZXR1cm4gbV9saW5lLmZp
cnN0UnVuKCk7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYg
KGF1dG8qIGxpbmVMYXlvdXQgPSBmbG93Lm1vZGVybkxpbmVMYXlvdXQoKSkKKyAgICAgICAgcmV0
dXJuIGxpbmVMYXlvdXQtPmxhc3RMaW5lKCk7CisjZW5kaWYKKworICAgIHJldHVybiB7IExpbmVJ
dGVyYXRvckxlZ2FjeVBhdGggeyBmbG93Lmxhc3RSb290Qm94KCkgfSB9OwogfQogCi1SdW5JdGVy
YXRvciBMaW5lSXRlcmF0b3I6Omxhc3RSdW4oKSBjb25zdAorTGluZUl0ZXJhdG9yIFBhdGhMaW5l
OjpuZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9saW5lLmxhc3RSdW4oKTsKKyAgICByZXR1
cm4gTGluZUl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZU5leHQoKTsKIH0KIAotUnVuSXRlcmF0b3Ig
TGluZUl0ZXJhdG9yOjpsb2dpY2FsU3RhcnRSdW4oKSBjb25zdAorTGluZUl0ZXJhdG9yIFBhdGhM
aW5lOjpwcmV2aW91cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9saW5l
Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKKyAgICByZXR1
cm4gTGluZUl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZVByZXZpb3VzKCk7Cit9CisKK1J1bkl0ZXJh
dG9yIFBhdGhMaW5lOjpmaXJzdFJ1bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gUnVuSXRlcmF0b3IgeworICAgICAg
ICByZXR1cm4geyBwYXRoLmZpcnN0UnVuKCkgfTsKKyAgICB9KTsKK30KKworUnVuSXRlcmF0b3Ig
UGF0aExpbmU6Omxhc3RSdW4oKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKKyAgICAgICAgcmV0
dXJuIHsgcGF0aC5sYXN0UnVuKCkgfTsKKyAgICB9KTsKK30KKworUnVuSXRlcmF0b3IgUGF0aExp
bmU6OmxvZ2ljYWxTdGFydFJ1bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gUnVuSXRlcmF0b3IgewogICAgICAgICBy
ZXR1cm4geyBwYXRoLmxvZ2ljYWxTdGFydFJ1bigpIH07CiAgICAgfSk7CiB9CiAKLVJ1bkl0ZXJh
dG9yIExpbmVJdGVyYXRvcjo6bG9naWNhbEVuZFJ1bigpIGNvbnN0CitSdW5JdGVyYXRvciBQYXRo
TGluZTo6bG9naWNhbEVuZFJ1bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9saW5lLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKKyAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSAtPiBS
dW5JdGVyYXRvciB7CiAgICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbEVuZFJ1bigpIH07CiAg
ICAgfSk7CiB9CiAKLVJ1bkl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bG9naWNhbFN0YXJ0UnVuV2l0
aE5vZGUoKSBjb25zdAorUnVuSXRlcmF0b3IgUGF0aExpbmU6OmxvZ2ljYWxTdGFydFJ1bldpdGhO
b2RlKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8gcnVuID0gbG9naWNhbFN0YXJ0UnVuKCk7IHJ1
bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCkpIHsKICAgICAgICAgaWYg
KHJ1bi0+cmVuZGVyZXIoKS5ub2RlKCkpCkBAIC0xMDksNyArMTM4LDcgQEAgUnVuSXRlcmF0b3Ig
TGluZUl0ZXJhdG9yOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsb2dpY2FsRW5kUnVuV2l0aE5v
ZGUoKSBjb25zdAorUnVuSXRlcmF0b3IgUGF0aExpbmU6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgp
IGNvbnN0CiB7CiAgICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxFbmRSdW4oKTsgcnVuOyBydW4u
dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkpIHsKICAgICAgICAgaWYgKHJ1
bi0+cmVuZGVyZXIoKS5ub2RlKCkpCkBAIC0xMTgsMzQgKzE0NywxMiBAQCBSdW5JdGVyYXRvciBM
aW5lSXRlcmF0b3I6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotTGluZUl0ZXJhdG9yIGZpcnN0TGluZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3cpCitSdW5JdGVyYXRvciBQYXRoTGluZTo6Y2xvc2VzdFJ1bkZvclBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFibGVPbmx5KSBjb25zdAogewotI2lm
IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotICAgIGlmIChhdXRvKiBsaW5lTGF5
b3V0ID0gZmxvdy5tb2Rlcm5MaW5lTGF5b3V0KCkpCi0gICAgICAgIHJldHVybiBsaW5lTGF5b3V0
LT5maXJzdExpbmUoKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHsgTGluZUl0ZXJhdG9yTGVnYWN5
UGF0aCB7IGZsb3cuZmlyc3RSb290Qm94KCkgfSB9OworICAgIHJldHVybiBjbG9zZXN0UnVuRm9y
TG9naWNhbExlZnRQb3NpdGlvbihpc0hvcml6b250YWwoKSA/IHBvaW50SW5Db250ZW50cy54KCkg
OiBwb2ludEluQ29udGVudHMueSgpLCBlZGl0YWJsZU9ubHkpOwogfQogCi1MaW5lSXRlcmF0b3Ig
bGFzdExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQotewotI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQotICAgIGlmIChhdXRvKiBsaW5lTGF5b3V0ID0gZmxv
dy5tb2Rlcm5MaW5lTGF5b3V0KCkpCi0gICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5sYXN0TGlu
ZSgpOwotI2VuZGlmCi0KLSAgICByZXR1cm4geyBMaW5lSXRlcmF0b3JMZWdhY3lQYXRoIHsgZmxv
dy5sYXN0Um9vdEJveCgpIH0gfTsKLX0KLQotUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpjbG9z
ZXN0UnVuRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50cywgYm9vbCBlZGl0
YWJsZU9ubHkpCi17Ci0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0gICAg
cmV0dXJuIGNsb3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0aW9uKG1fbGluZS5pc0hvcml6b250
YWwoKSA/IHBvaW50SW5Db250ZW50cy54KCkgOiBwb2ludEluQ29udGVudHMueSgpLCBlZGl0YWJs
ZU9ubHkpOwotfQotCi1SdW5JdGVyYXRvciBMaW5lSXRlcmF0b3I6OmNsb3Nlc3RSdW5Gb3JMb2dp
Y2FsTGVmdFBvc2l0aW9uKGludCBsZWZ0UG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5KQorUnVu
SXRlcmF0b3IgUGF0aExpbmU6OmNsb3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0aW9uKGludCBs
ZWZ0UG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5KSBjb25zdAogewogICAgIGF1dG8gaXNFZGl0
YWJsZSA9IFsmXShhdXRvIHJ1bikKICAgICB7CkBAIC0xNTcsOSArMTY0LDkgQEAgUnVuSXRlcmF0
b3IgTGluZUl0ZXJhdG9yOjpjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgbGVm
dFBvc2l0aW9uLCBib28KIAogICAgIGlmIChmaXJzdFJ1biAhPSBsYXN0UnVuKSB7CiAgICAgICAg
IGlmIChmaXJzdFJ1bi0+aXNMaW5lQnJlYWsoKSkKLSAgICAgICAgICAgIGZpcnN0UnVuID0gZmly
c3RSdW4ubmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CisgICAgICAgICAgICBmaXJzdFJ1
biA9IGZpcnN0UnVuLT5uZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKICAgICAgICAgZWxz
ZSBpZiAobGFzdFJ1bi0+aXNMaW5lQnJlYWsoKSkKLSAgICAgICAgICAgIGxhc3RSdW4gPSBsYXN0
UnVuLnByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKKyAgICAgICAgICAgIGxhc3RS
dW4gPSBsYXN0UnVuLT5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgfQog
CiAgICAgaWYgKGZpcnN0UnVuID09IGxhc3RSdW4gJiYgKCFlZGl0YWJsZU9ubHkgfHwgaXNFZGl0
YWJsZShmaXJzdFJ1bikpKQpAQCAtMTgzLDIwICsxOTAsNiBAQCBSdW5JdGVyYXRvciBMaW5lSXRl
cmF0b3I6OmNsb3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0aW9uKGludCBsZWZ0UG9zaXRpb24s
IGJvbwogICAgIHJldHVybiBjbG9zZXN0UnVuOwogfQogCi1SdW5JdGVyYXRvciBQYXRoTGluZTo6
Zmlyc3RSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKLSAgICAgICAgcmV0dXJuIHsgcGF0
aC5maXJzdFJ1bigpIH07Ci0gICAgfSk7Ci19Ci0KLVJ1bkl0ZXJhdG9yIFBhdGhMaW5lOjpsYXN0
UnVuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSAtPiBSdW5JdGVyYXRvciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgubGFz
dFJ1bigpIH07Ci0gICAgfSk7Ci19Ci0KIGludCBQYXRoTGluZTo6YmxvY2tEaXJlY3Rpb25Qb2lu
dEluTGluZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFjb250YWluaW5nQmxvY2soKS5zdHlsZSgp
LmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBzdGQ6Om1heCh0b3AoKSwgc2VsZWN0aW9u
VG9wKCkpIDogc3RkOjptaW4oYm90dG9tKCksIHNlbGVjdGlvbkJvdHRvbSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKaW5kZXggMTBmMDg3ODE0NzBiZjZlODQzYTVjYmQwMDkx
YTMzZTg1MjYyNDM1MS4uNWNlYWE2YzJhMjkzNjZmYWI1MDBiYzM3NDI4Nzk4ZGMxOGE3ZTVjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKQEAgLTc3LDEwICs3NywyMyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25z
dDsKICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94KiBsZWdhY3lSb290SW5saW5lQm94KCkg
Y29uc3Q7CiAKLXByaXZhdGU6CisgICAgYm9vbCBpc0ZpcnN0KCkgY29uc3Q7CisKICAgICBSdW5J
dGVyYXRvciBmaXJzdFJ1bigpIGNvbnN0OwogICAgIFJ1bkl0ZXJhdG9yIGxhc3RSdW4oKSBjb25z
dDsKIAorICAgIExpbmVJdGVyYXRvciBuZXh0KCkgY29uc3Q7CisgICAgTGluZUl0ZXJhdG9yIHBy
ZXZpb3VzKCkgY29uc3Q7CisKKyAgICBSdW5JdGVyYXRvciBjbG9zZXN0UnVuRm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50cywgYm9vbCBlZGl0YWJsZU9ubHkpIGNvbnN0Owor
ICAgIFJ1bkl0ZXJhdG9yIGNsb3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0aW9uKGludCBwb3Np
dGlvbiwgYm9vbCBlZGl0YWJsZU9ubHkgPSBmYWxzZSkgY29uc3Q7CisKKyAgICBSdW5JdGVyYXRv
ciBsb2dpY2FsU3RhcnRSdW4oKSBjb25zdDsKKyAgICBSdW5JdGVyYXRvciBsb2dpY2FsRW5kUnVu
KCkgY29uc3Q7CisgICAgUnVuSXRlcmF0b3IgbG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKSBjb25z
dDsKKyAgICBSdW5JdGVyYXRvciBsb2dpY2FsRW5kUnVuV2l0aE5vZGUoKSBjb25zdDsKKworcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGluZUl0ZXJhdG9yOwogCiAgICAgUGF0aFZhcmlhbnQg
bV9wYXRoVmFyaWFudDsKQEAgLTkxLDE2ICsxMDQsMTIgQEAgcHVibGljOgogICAgIExpbmVJdGVy
YXRvcigpIDogbV9saW5lKExpbmVJdGVyYXRvckxlZ2FjeVBhdGggeyBudWxscHRyIH0pIHsgfTsK
ICAgICBMaW5lSXRlcmF0b3IoY29uc3QgTGVnYWN5Um9vdElubGluZUJveCogcm9vdElubGluZUJv
eCkgOiBtX2xpbmUoTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCB7IHJvb3RJbmxpbmVCb3ggfSkgeyB9
OwogICAgIExpbmVJdGVyYXRvcihQYXRoTGluZTo6UGF0aFZhcmlhbnQmJik7CisgICAgTGluZUl0
ZXJhdG9yKGNvbnN0IFBhdGhMaW5lJik7CiAKICAgICBMaW5lSXRlcmF0b3ImIG9wZXJhdG9yKyso
KSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQogICAgIExpbmVJdGVyYXRvciYgdHJhdmVyc2VO
ZXh0KCk7CiAgICAgTGluZUl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzKCk7CiAKLSAgICBMaW5l
SXRlcmF0b3IgbmV4dCgpIGNvbnN0OwotICAgIExpbmVJdGVyYXRvciBwcmV2aW91cygpIGNvbnN0
OwotCi0gICAgYm9vbCBpc0ZpcnN0KCkgY29uc3QgeyByZXR1cm4gIXByZXZpb3VzKCk7IH0KLQog
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQog
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVJdGVyYXRvciYpIGNvbnN0OwpAQCAtMTE0
LDE3ICsxMjMsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKLSAgICBS
dW5JdGVyYXRvciBmaXJzdFJ1bigpIGNvbnN0OwotICAgIFJ1bkl0ZXJhdG9yIGxhc3RSdW4oKSBj
b25zdDsKLQotICAgIFJ1bkl0ZXJhdG9yIGNsb3Nlc3RSdW5Gb3JQb2ludChjb25zdCBJbnRQb2lu
dCYgcG9pbnRJbkNvbnRlbnRzLCBib29sIGVkaXRhYmxlT25seSk7Ci0gICAgUnVuSXRlcmF0b3Ig
Y2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24oaW50IHBvc2l0aW9uLCBib29sIGVkaXRh
YmxlT25seSA9IGZhbHNlKTsKLQotICAgIFJ1bkl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bigpIGNv
bnN0OwotICAgIFJ1bkl0ZXJhdG9yIGxvZ2ljYWxFbmRSdW4oKSBjb25zdDsKLSAgICBSdW5JdGVy
YXRvciBsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0OwotICAgIFJ1bkl0ZXJhdG9yIGxv
Z2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIFBhdGhMaW5lIG1f
bGluZTsKIH07CkBAIC0yNTQsNiArMjUyLDExIEBAIGlubGluZSBjb25zdCBMZWdhY3lSb290SW5s
aW5lQm94KiBQYXRoTGluZTo6bGVnYWN5Um9vdElubGluZUJveCgpIGNvbnN0CiAgICAgfSk7CiB9
CiAKK2lubGluZSBib29sIFBhdGhMaW5lOjppc0ZpcnN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
IXByZXZpb3VzKCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3Iu
Y3BwCmluZGV4IDUzMjI1ZmU4MjAzMzk4YjRiMGIxN2I4M2U0YmI1ZmI0NGFkNzliYzkuLjZjOTg5
N2JlZjE2Njk0ZTFmYmFkM2UyM2ZmNzljMGI4YTIwMzJlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvci5jcHAKQEAgLTQwLDYgKzQwLDExIEBAIFJ1bkl0ZXJhdG9yOjpSdW5JdGVy
YXRvcihQYXRoUnVuOjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQogewogfQogCitSdW5JdGVy
YXRvcjo6UnVuSXRlcmF0b3IoY29uc3QgUGF0aFJ1biYgcnVuKQorICAgIDogbV9ydW4ocnVuKQor
eworfQorCiBib29sIFJ1bkl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IFJ1bkl0ZXJhdG9yJiBv
dGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9ydW4ubV9wYXRoVmFyaWFudCA9PSBvdGhlci5t
X3J1bi5tX3BhdGhWYXJpYW50OwpAQCAtNTIsMzEgKzU3LDI2IEBAIGJvb2wgUnVuSXRlcmF0b3I6
OmF0RW5kKCkgY29uc3QKICAgICB9KTsKIH0KIAotUnVuSXRlcmF0b3IgUnVuSXRlcmF0b3I6Om5l
eHRPbkxpbmUoKSBjb25zdAorUnVuSXRlcmF0b3IgUGF0aFJ1bjo6bmV4dE9uTGluZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFJ1bkl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZU5leHRPbkxpbmUoKTsK
IH0KIAotUnVuSXRlcmF0b3IgUnVuSXRlcmF0b3I6OnByZXZpb3VzT25MaW5lKCkgY29uc3QKK1J1
bkl0ZXJhdG9yIFBhdGhSdW46OnByZXZpb3VzT25MaW5lKCkgY29uc3QKIHsKICAgICByZXR1cm4g
UnVuSXRlcmF0b3IoKnRoaXMpLnRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKIH0KIAotUnVuSXRl
cmF0b3IgUnVuSXRlcmF0b3I6Om5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpIGNvbnN0CitS
dW5JdGVyYXRvciBQYXRoUnVuOjpuZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdAog
ewogICAgIHJldHVybiBSdW5JdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0T25MaW5lSWdub3Jp
bmdMaW5lQnJlYWsoKTsKIH0KIAotUnVuSXRlcmF0b3IgUnVuSXRlcmF0b3I6OnByZXZpb3VzT25M
aW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdAorUnVuSXRlcmF0b3IgUGF0aFJ1bjo6cHJldmlv
dXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJ1bkl0ZXJh
dG9yKCp0aGlzKS50cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKIH0K
IAotTGluZUl0ZXJhdG9yIFJ1bkl0ZXJhdG9yOjpsaW5lKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9ydW4ubGluZSgpOwotfQotCiBMaW5lSXRlcmF0b3IgUGF0aFJ1bjo6bGluZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgUnVuSXRl
cmF0b3JMZWdhY3lQYXRoJiBwYXRoKSB7CkBAIC05Miw3ICs5MiwxNyBAQCBMaW5lSXRlcmF0b3Ig
UGF0aFJ1bjo6bGluZSgpIGNvbnN0CiAKIGNvbnN0IFJlbmRlclN0eWxlJiBQYXRoUnVuOjpzdHls
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGxpbmUoKS5pc0ZpcnN0KCkgPyByZW5kZXJlcigpLmZp
cnN0TGluZVN0eWxlKCkgOiByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgcmV0dXJuIGxpbmUoKS0+
aXNGaXJzdCgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHls
ZSgpOworfQorCitUZXh0UnVuSXRlcmF0b3IgUGF0aFRleHRSdW46Om5leHRUZXh0UnVuKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gVGV4dFJ1bkl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZU5leHRUZXh0
UnVuKCk7Cit9CisKK1RleHRSdW5JdGVyYXRvciBQYXRoVGV4dFJ1bjo6bmV4dFRleHRSdW5JblRl
eHRPcmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRleHRSdW5JdGVyYXRvcigqdGhpcykudHJh
dmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCk7CiB9CiAKIFJlbmRlck9iamVjdDo6SGlnaGxp
Z2h0U3RhdGUgUGF0aFJ1bjo6c2VsZWN0aW9uU3RhdGUoKSBjb25zdApAQCAtMTEwLDYgKzEyMCwx
MSBAQCBUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRvcihQYXRoUnVuOjpQYXRoVmFyaWFu
dCYmIHBhdGhWYXJpYW50KQogewogfQogCitUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRv
cihjb25zdCBQYXRoUnVuJiBydW4pCisgICAgOiBSdW5JdGVyYXRvcihydW4pCit7Cit9CisKIFRl
eHRSdW5JdGVyYXRvciYgVGV4dFJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0UnVuKCkKIHsK
ICAgICBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCmluZGV4IDlkMTk2ZGNiMzQ4NGE1OTE4YmEw
NWU5MjgyZWU5NGU2M2Q4ZTYwNTEuLjJkMGEzMDA0MzE2OWZmMDNiMzQ3YzQ2NDExZDEwMzg4OTY4
NGUwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaApAQCAtNDAsNiArNDAsNyBA
QCBjbGFzcyBSZW5kZXJUZXh0OwogbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAogY2xh
c3MgTGluZUl0ZXJhdG9yOworY2xhc3MgUnVuSXRlcmF0b3I7CiBjbGFzcyBUZXh0UnVuSXRlcmF0
b3I7CiAKIHN0cnVjdCBFbmRJdGVyYXRvciB7IH07CkBAIC04NywxMiArODgsMTcgQEAgcHVibGlj
OgogICAgIC8vIEZvciBpbnRlcm1lZGlhdGUgcG9ydGluZyBzdGVwcyBvbmx5LgogICAgIExlZ2Fj
eUlubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3Q7CiAKKyAgICBSdW5JdGVyYXRvciBu
ZXh0T25MaW5lKCkgY29uc3Q7CisgICAgUnVuSXRlcmF0b3IgcHJldmlvdXNPbkxpbmUoKSBjb25z
dDsKKyAgICBSdW5JdGVyYXRvciBuZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdDsK
KyAgICBSdW5JdGVyYXRvciBwcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgY29uc3Q7
CisKKyAgICBMaW5lSXRlcmF0b3IgbGluZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZnJp
ZW5kIGNsYXNzIFJ1bkl0ZXJhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBUZXh0UnVuSXRlcmF0b3I7
CiAKLSAgICBMaW5lSXRlcmF0b3IgbGluZSgpIGNvbnN0OwotCiAgICAgLy8gVG8gaGVscCB3aXRo
IGRlYnVnZ2luZy4KICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBj
b25zdCBSdW5JdGVyYXRvck1vZGVyblBhdGgmIG1vZGVyblBhdGgoKSBjb25zdDsKQEAgLTEyMSwx
MiArMTI3LDE2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyKCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4oUGF0aFJ1bjo6cmVuZGVyZXIoKSk7
IH0KICAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihQYXRoUnVuOjpsZWdhY3lJbmxpbmVC
b3goKSk7IH0KKworICAgIFRleHRSdW5JdGVyYXRvciBuZXh0VGV4dFJ1bigpIGNvbnN0OworICAg
IFRleHRSdW5JdGVyYXRvciBuZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCkgY29uc3Q7CiB9OwogCiBj
bGFzcyBSdW5JdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgUnVuSXRlcmF0b3IoKSA6IG1fcnVuKFJ1
bkl0ZXJhdG9yTGVnYWN5UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07CiAgICAgUnVuSXRlcmF0
b3IoUGF0aFJ1bjo6UGF0aFZhcmlhbnQmJik7CisgICAgUnVuSXRlcmF0b3IoY29uc3QgUGF0aFJ1
biYpOwogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFhdEVu
ZCgpOyB9CiAKQEAgLTE0MSwxMSArMTUxLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdEVuZCgp
IGNvbnN0OwogCi0gICAgUnVuSXRlcmF0b3IgbmV4dE9uTGluZSgpIGNvbnN0OwotICAgIFJ1bkl0
ZXJhdG9yIHByZXZpb3VzT25MaW5lKCkgY29uc3Q7Ci0gICAgUnVuSXRlcmF0b3IgbmV4dE9uTGlu
ZUlnbm9yaW5nTGluZUJyZWFrKCkgY29uc3Q7Ci0gICAgUnVuSXRlcmF0b3IgcHJldmlvdXNPbkxp
bmVJZ25vcmluZ0xpbmVCcmVhaygpIGNvbnN0OwotCiAgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNl
TmV4dE9uTGluZSgpOwogICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7
CiAgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7
CkBAIC0xNTMsOCArMTU4LDYgQEAgcHVibGljOgogICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZU5l
eHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOwogICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZp
b3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKIAotICAgIExpbmVJdGVyYXRvciBsaW5lKCkgY29u
c3Q7Ci0KIHByb3RlY3RlZDoKICAgICBQYXRoUnVuIG1fcnVuOwogfTsKQEAgLTE2Myw2ICsxNjYs
NyBAQCBjbGFzcyBUZXh0UnVuSXRlcmF0b3IgOiBwdWJsaWMgUnVuSXRlcmF0b3IgewogcHVibGlj
OgogICAgIFRleHRSdW5JdGVyYXRvcigpIHsgfQogICAgIFRleHRSdW5JdGVyYXRvcihQYXRoUnVu
OjpQYXRoVmFyaWFudCYmKTsKKyAgICBUZXh0UnVuSXRlcmF0b3IoY29uc3QgUGF0aFJ1biYpOwog
CiAgICAgVGV4dFJ1bkl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0
VGV4dFJ1bigpOyB9CiAKQEAgLTE3Miw5ICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgVGV4dFJ1bkl0
ZXJhdG9yJiB0cmF2ZXJzZU5leHRUZXh0UnVuKCk7CiAgICAgVGV4dFJ1bkl0ZXJhdG9yJiB0cmF2
ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKTsKIAotICAgIFRleHRSdW5JdGVyYXRvciBuZXh0
VGV4dFJ1bigpIGNvbnN0IHsgcmV0dXJuIFRleHRSdW5JdGVyYXRvcigqdGhpcykudHJhdmVyc2VO
ZXh0VGV4dFJ1bigpOyB9Ci0gICAgVGV4dFJ1bkl0ZXJhdG9yIG5leHRUZXh0UnVuSW5UZXh0T3Jk
ZXIoKSBjb25zdCB7IHJldHVybiBUZXh0UnVuSXRlcmF0b3IoKnRoaXMpLnRyYXZlcnNlTmV4dFRl
eHRSdW5JblRleHRPcmRlcigpOyB9Ci0KIHByaXZhdGU6CiAgICAgUnVuSXRlcmF0b3ImIHRyYXZl
cnNlTmV4dE9uTGluZSgpID0gZGVsZXRlOwogICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZp
b3VzT25MaW5lKCkgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Nh
cmV0UmVjdENvbXB1dGF0aW9uLmNwcAppbmRleCA0YTk4NjE5YjJkY2Q3OWI3NjI1MTQyNWE2Yzk4
OGNjMjc0MWYxNmZjLi5lMmZkMjk5ZTFiNzI2MTI4NWU2MWQ3ZTMwNDcyZDRkY2UyMjdkMWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5j
cHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0
Rm9yVGV4dChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldAogICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgYXV0byYgdGV4dFJ1biA9IGRvd25jYXN0PExheW91dEludGVncmF0
aW9uOjpUZXh0UnVuSXRlcmF0b3I+KHJ1bkFuZE9mZnNldC5ydW4pOwotICAgIGF1dG8gbGluZSA9
IHRleHRSdW4ubGluZSgpOworICAgIGF1dG8gbGluZSA9IHRleHRSdW4tPmxpbmUoKTsKIAogICAg
IGZsb2F0IHBvc2l0aW9uID0gdGV4dFJ1bi0+cG9zaXRpb25Gb3JPZmZzZXQocnVuQW5kT2Zmc2V0
Lm9mZnNldCk7CiAgICAgcmV0dXJuIGNvbXB1dGVDYXJldFJlY3RGb3JMaW5lUG9zaXRpb24obGlu
ZSwgcG9zaXRpb24sIGNhcmV0UmVjdE1vZGUpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyBM
YXlvdXRSZWN0IGNvbXB1dGVDYXJldFJlY3RGb3JMaW5lQnJlYWsoY29uc3QgSW5saW5lUnVuQW5k
T2Zmc2V0JiBydW5BbmRPCiAgICAgaWYgKCFydW5BbmRPZmZzZXQucnVuKQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgYXV0byBsaW5lID0gcnVuQW5kT2Zmc2V0LnJ1bi5saW5lKCk7CisgICAg
YXV0byBsaW5lID0gcnVuQW5kT2Zmc2V0LnJ1bi0+bGluZSgpOwogICAgIHJldHVybiBjb21wdXRl
Q2FyZXRSZWN0Rm9yTGluZVBvc2l0aW9uKGxpbmUsIGxpbmUtPmNvbnRlbnRMb2dpY2FsTGVmdCgp
LCBjYXJldFJlY3RNb2RlKTsKIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBMYXlvdXRS
ZWN0IGNvbXB1dGVDYXJldFJlY3RGb3JCb3goY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29u
c3QgSW5saW5lCiAgICAgICAgIHJlY3QubW92ZShMYXlvdXRTaXplKHJlbmRlcmVyLndpZHRoKCkg
LSBjYXJldFdpZHRoLCAwX2x1KSk7CiAKICAgICBpZiAocnVuQW5kT2Zmc2V0LnJ1bikgewotICAg
ICAgICBhdXRvIGxpbmUgPSBydW5BbmRPZmZzZXQucnVuLmxpbmUoKTsKKyAgICAgICAgYXV0byBs
aW5lID0gcnVuQW5kT2Zmc2V0LnJ1bi0+bGluZSgpOwogICAgICAgICBMYXlvdXRVbml0IHRvcCA9
IGxpbmUtPnRvcCgpOwogICAgICAgICByZWN0LnNldFkodG9wKTsKICAgICAgICAgcmVjdC5zZXRI
ZWlnaHQobGluZS0+Ym90dG9tKCkgLSB0b3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBhYTE5NWM5NjgyZTNhODdlYTljMjA2ODNlN2RmYjg0
ODcwNWQ3OTk4Li4yMGRkNjE3YTlmMzRlODhmNWU2ZWUzMDg3MzNhZjQwMmVkNWRmOTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzUxNiwx
MCArMzUxNiwxMCBAQCBSZW5kZXJUZXh0KiBSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4
dEF0QWJzb2x1dGVQb2ludChjb25zdCBGbG9hdFBvaW50JiBwbwogICAgICAgICBpZiAobG9jYWxQ
b2ludC55KCkgPCBjdXJyZW50Qm90dG9tKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIAotICAgICAgICBhdXRvIG5leHQgPSBjdXJyZW50Lm5leHQoKTsKKyAgICAgICAgYXV0
byBuZXh0ID0gY3VycmVudC0+bmV4dCgpOwogICAgICAgICBmbG9hdCBuZXh0VG9wID0gbmV4dC0+
eSgpOwogICAgICAgICBpZiAobG9jYWxQb2ludC55KCkgPCBuZXh0VG9wKSB7Ci0gICAgICAgICAg
ICBhdXRvIHJ1biA9IGN1cnJlbnQuY2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24obG9j
YWxQb2ludC54KCkpOworICAgICAgICAgICAgYXV0byBydW4gPSBjdXJyZW50LT5jbG9zZXN0UnVu
Rm9yTG9naWNhbExlZnRQb3NpdGlvbihsb2NhbFBvaW50LngoKSk7CiAgICAgICAgICAgICBpZiAo
cnVuICYmIGlzPFJlbmRlclRleHQ+KHJ1bi0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyVGV4dCo+KCZkb3duY2FzdDxSZW5kZXJUZXh0PihydW4t
PnJlbmRlcmVyKCkpKTsKICAgICAgICAgfQpAQCAtMzU0Nyw3ICszNTQ3LDcgQEAgVmlzaWJsZVBv
c2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJl
bihjb25zdCBMYXlvdXQKICAgICAgICAgaWYgKGZyYWdtZW50ICYmIGxpbmUtPmxlZ2FjeVJvb3RJ
bmxpbmVCb3goKSAmJiBsaW5lLT5sZWdhY3lSb290SW5saW5lQm94KCktPmNvbnRhaW5pbmdGcmFn
bWVudCgpICE9IGZyYWdtZW50KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYg
KCFsaW5lLmZpcnN0UnVuKCkpCisgICAgICAgIGlmICghbGluZS0+Zmlyc3RSdW4oKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWZpcnN0TGluZVdpdGhDaGlsZHJlbikKICAg
ICAgICAgICAgIGZpcnN0TGluZVdpdGhDaGlsZHJlbiA9IGxpbmU7CkBAIC0zNTYxLDE1ICszNTYx
LDE1IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRX
aXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMg
cm9vdCBsaW5lIGJveCBpcyBsb2NhdGVkIGF0IHRoaXMgeSBjb29yZGluYXRlCiAgICAgICAgIGlm
IChwb2ludEluTG9naWNhbENvbnRlbnRzLnkoKSA8IGxpbmUtPnNlbGVjdGlvbkJvdHRvbSgpIHx8
IChibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID09IGxpbmUt
PnNlbGVjdGlvbkJvdHRvbSgpKSkgewogICAgICAgICAgICAgaWYgKGxpbmVzQXJlRmxpcHBlZCkg
ewotICAgICAgICAgICAgICAgIGF1dG8gbmV4dExpbmVXaXRoQ2hpbGRyZW4gPSBsaW5lLm5leHQo
KTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmV4dExpbmVXaXRoQ2hpbGRyZW4gJiYgIW5leHRM
aW5lV2l0aENoaWxkcmVuLmZpcnN0UnVuKCkpCisgICAgICAgICAgICAgICAgYXV0byBuZXh0TGlu
ZVdpdGhDaGlsZHJlbiA9IGxpbmUtPm5leHQoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAobmV4
dExpbmVXaXRoQ2hpbGRyZW4gJiYgIW5leHRMaW5lV2l0aENoaWxkcmVuLT5maXJzdFJ1bigpKQog
ICAgICAgICAgICAgICAgICAgICBuZXh0TGluZVdpdGhDaGlsZHJlbi50cmF2ZXJzZU5leHQoKTsK
IAogICAgICAgICAgICAgICAgIGlmIChuZXh0TGluZVdpdGhDaGlsZHJlbiAmJiBuZXh0TGluZVdp
dGhDaGlsZHJlbi0+bGVnYWN5Um9vdElubGluZUJveCgpICYmIG5leHRMaW5lV2l0aENoaWxkcmVu
LT5sZWdhY3lSb290SW5saW5lQm94KCktPmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpCiAgICAgICAg
ICAgICAgICAgICAgICYmIChwb2ludEluTG9naWNhbENvbnRlbnRzLnkoKSA+IG5leHRMaW5lV2l0
aENoaWxkcmVuLT5saW5lQm94VG9wKCkgfHwgKCFibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50SW5M
b2dpY2FsQ29udGVudHMueSgpID09IG5leHRMaW5lV2l0aENoaWxkcmVuLT5saW5lQm94VG9wKCkp
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBjbG9zZXN0UnVuID0gbGluZS5jbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihw
b2ludEluTG9naWNhbENvbnRlbnRzLngoKSk7CisgICAgICAgICAgICBjbG9zZXN0UnVuID0gbGlu
ZS0+Y2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24ocG9pbnRJbkxvZ2ljYWxDb250ZW50
cy54KCkpOwogICAgICAgICAgICAgaWYgKGNsb3Nlc3RSdW4pCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTM1NzksNyArMzU3OSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5k
ZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5
b3V0CiAKICAgICBpZiAoIW1vdmVDYXJldFRvQm91bmRhcnkgJiYgIWNsb3Nlc3RSdW4gJiYgbGFz
dExpbmVXaXRoQ2hpbGRyZW4pIHsKICAgICAgICAgLy8geSBjb29yZGluYXRlIGlzIGJlbG93IGxh
c3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKLSAgICAgICAgY2xvc2VzdFJ1biA9
IGxhc3RMaW5lV2l0aENoaWxkcmVuLmNsb3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0aW9uKHBv
aW50SW5Mb2dpY2FsQ29udGVudHMueCgpKTsKKyAgICAgICAgY2xvc2VzdFJ1biA9IGxhc3RMaW5l
V2l0aENoaWxkcmVuLT5jbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihwb2ludEluTG9n
aWNhbENvbnRlbnRzLngoKSk7CiAgICAgfQogCiAgICAgaWYgKGNsb3Nlc3RSdW4pIHsKQEAgLTM1
ODcsOSArMzU4Nyw5IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9u
Rm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgICAgICBMYXlv
dXRVbml0IGZpcnN0TGluZVdpdGhDaGlsZHJlblRvcCA9IHN0ZDo6bWluKGZpcnN0TGluZVdpdGhD
aGlsZHJlbi0+c2VsZWN0aW9uVG9wRm9ySGl0VGVzdGluZygpLCBMYXlvdXRVbml0KGZpcnN0TGlu
ZVdpdGhDaGlsZHJlbi0+dG9wKCkpKTsKICAgICAgICAgICAgIGlmIChwb2ludEluTG9naWNhbENv
bnRlbnRzLnkoKSA8IGZpcnN0TGluZVdpdGhDaGlsZHJlblRvcAogICAgICAgICAgICAgICAgIHx8
IChibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID09IGZpcnN0
TGluZVdpdGhDaGlsZHJlblRvcCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJ1biA9IGZpcnN0
TGluZVdpdGhDaGlsZHJlbi5maXJzdFJ1bigpOworICAgICAgICAgICAgICAgIGF1dG8gcnVuID0g
Zmlyc3RMaW5lV2l0aENoaWxkcmVuLT5maXJzdFJ1bigpOwogICAgICAgICAgICAgICAgIGlmIChy
dW4tPmlzTGluZUJyZWFrKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbmV4dCA9
IHJ1bi5uZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gbmV4dCA9IHJ1bi0+bmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBydW4gPSBuZXh0OwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAvLyB5IGNvb3JkaW5hdGUgaXMgYWJvdmUgZmlyc3Qgcm9vdCBsaW5lIGJveCwg
c28gcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZmlyc3QKQEAgLTM1OTgsNyArMzU5OCw3IEBAIFZp
c2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5l
Q2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgIH0KIAogICAgICAgICAvLyBwYXNzIHRoZSBi
b3ggYSB0b3AgcG9zaXRpb24gdGhhdCBpcyBpbnNpZGUgaXQKLSAgICAgICAgTGF5b3V0UG9pbnQg
cG9pbnQocG9pbnRJbkxvZ2ljYWxDb250ZW50cy54KCksIGNsb3Nlc3RSdW4ubGluZSgpLT5ibG9j
a0RpcmVjdGlvblBvaW50SW5MaW5lKCkpOworICAgICAgICBMYXlvdXRQb2ludCBwb2ludChwb2lu
dEluTG9naWNhbENvbnRlbnRzLngoKSwgY2xvc2VzdFJ1bi0+bGluZSgpLT5ibG9ja0RpcmVjdGlv
blBvaW50SW5MaW5lKCkpOwogICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
CiAgICAgICAgICAgICBwb2ludCA9IHBvaW50LnRyYW5zcG9zZWRQb2ludCgpOwogICAgICAgICBp
ZiAoY2xvc2VzdFJ1bi0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpCkBAIC0zNjA5LDcgKzM2MDks
NyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0
aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAgIGlmIChsYXN0TGluZVdpdGhDaGlsZHJl
bikgewogICAgICAgICAvLyBXZSBoaXQgdGhpcyBjYXNlIGZvciBNYWMgYmVoYXZpb3Igd2hlbiB0
aGUgWSBjb29yZGluYXRlIGlzIGJlbG93IHRoZSBsYXN0IGJveC4KICAgICAgICAgQVNTRVJUKG1v
dmVDYXJldFRvQm91bmRhcnkpOwotICAgICAgICBpZiAoYXV0byBsb2dpY2FsbHlMYXN0UnVuID0g
bGFzdExpbmVXaXRoQ2hpbGRyZW4ubG9naWNhbEVuZFJ1bldpdGhOb2RlKCkpCisgICAgICAgIGlm
IChhdXRvIGxvZ2ljYWxseUxhc3RSdW4gPSBsYXN0TGluZVdpdGhDaGlsZHJlbi0+bG9naWNhbEVu
ZFJ1bldpdGhOb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JSdW4oKnRoaXMs
IGxvZ2ljYWxseUxhc3RSdW4sIGZhbHNlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAxYjFiMDIxZmY0M2ViYTNkZmFkMWI5MWQzNWQ0
NzRhNzc2NGI3YjAwLi5iM2E3Yzg3MWRjM2Q0MTdmYzE2MzkyNGU1ZTVkZGIzYWM5N2EzOTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xNjU1LDcg
KzE2NTUsNyBAQCBib29sIFJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2lu
dCYgcG9pbnQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdAogICAgICAgICAgICAgaWYgKGlzPFJl
bmRlclRleHQ+KCpvKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRv
d25jYXN0PFJlbmRlclRleHQ+KCpvKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBydW4gPSBM
YXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVuRm9yKHRleHRSZW5kZXJlcikpCi0gICAgICAg
ICAgICAgICAgICAgIHBvaW50Lm1vdmUodGV4dFJlbmRlcmVyLmxpbmVzQm91bmRpbmdCb3goKS54
KCksIHJ1bi5saW5lKCktPnRvcCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcG9pbnQubW92ZSh0
ZXh0UmVuZGVyZXIubGluZXNCb3VuZGluZ0JveCgpLngoKSwgcnVuLT5saW5lKCktPnRvcCgpKTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyQm94PigqbykpCiAgICAgICAgICAgICAg
ICAgcG9pbnQubW92ZUJ5KGRvd25jYXN0PFJlbmRlckJveD4oKm8pLmxvY2F0aW9uKCkpOwogICAg
ICAgICAgICAgcG9pbnQgPSBvLT5jb250YWluZXIoKS0+bG9jYWxUb0Fic29sdXRlKHBvaW50LCBV
c2VUcmFuc2Zvcm1zLCAmaW5zaWRlRml4ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKaW5kZXggZWM0ZjhmZmJlNzAwODkyOWEyM2UwOWZjMmFmZWRhMjVkZmUzOWYw
Zi4uNDE3NmE0MTg1Y2E2ZTA4MWJjMDVlNWQyMjgxN2Y2MGE1OWMwY2ZhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lk
IFJlbmRlckltYWdlOjpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9u
R2VvbWV0cnk+JiBnZW9tZXRyaQogICAgICAgICAgICAgbGluZUV4dGVudFJlY3Quc2V0SGVpZ2h0
KGNvbnRhaW5pbmdCbG9jay0+aGVpZ2h0KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgYXV0byBsaW5lID0gcnVuLmxpbmUoKTsKKyAgICAgICAgYXV0byBsaW5lID0gcnVuLT5s
aW5lKCk7CiAgICAgICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9wID0gIWNvbnRhaW5pbmdCbG9j
ay0+c3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gbGluZS0+c2VsZWN0aW9u
VG9wKCkgLSBsb2dpY2FsVG9wKCkgOiBsb2dpY2FsQm90dG9tKCkgLSBsaW5lLT5zZWxlY3Rpb25C
b3R0b20oKTsKICAgICAgICAgaW1hZ2VSZWN0ID0gSW50UmVjdCgwLCAgc2VsZWN0aW9uVG9wLCBs
b2dpY2FsV2lkdGgoKSwgbGluZS0+c2VsZWN0aW9uSGVpZ2h0KCkpOwotICAgICAgICBpc0ZpcnN0
T25MaW5lID0gIXJ1bi5wcmV2aW91c09uTGluZSgpOwotICAgICAgICBpc0xhc3RPbkxpbmUgPSAh
cnVuLm5leHRPbkxpbmUoKTsKKyAgICAgICAgaXNGaXJzdE9uTGluZSA9ICFydW4tPnByZXZpb3Vz
T25MaW5lKCk7CisgICAgICAgIGlzTGFzdE9uTGluZSA9ICFydW4tPm5leHRPbkxpbmUoKTsKICAg
ICAgICAgTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcyBjYWNoZSgqY29udGFpbmluZ0Jsb2Nr
KTsKICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0T2Zmc2V0ID0gY29udGFpbmluZ0Jsb2NrLT5sb2dp
Y2FsTGVmdFNlbGVjdGlvbk9mZnNldCgqY29udGFpbmluZ0Jsb2NrLCBMYXlvdXRVbml0KHJ1bi0+
bG9naWNhbFRvcCgpKSwgY2FjaGUpOwogICAgICAgICBMYXlvdXRVbml0IHJpZ2h0T2Zmc2V0ID0g
Y29udGFpbmluZ0Jsb2NrLT5sb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQoKmNvbnRhaW5pbmdC
bG9jaywgTGF5b3V0VW5pdChydW4tPmxvZ2ljYWxUb3AoKSksIGNhY2hlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYTUyOWI5YjFjZTRhNTg4
NDViMTAyMDlmMThkZWFlMDhmNzQ2OTZjMy4uYWJjOWZiNmUxMWVhZWU4NDJlMDViZGRmNmI5NzVl
NDdhYTE5NGEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFJlbmRlckxpbmVCcmVhazo6Y29sbGVjdFNl
bGVjdGlvbkdlb21ldHJpZXMoVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiYgcmVjdAogCiAgICAg
aWYgKCFydW4pCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGxpbmUgPSBydW4ubGluZSgpOwor
ICAgIGF1dG8gbGluZSA9IHJ1bi0+bGluZSgpOwogCiAgICAgYXV0byBsaW5lU2VsZWN0aW9uUmVj
dCA9IGxpbmUtPnNlbGVjdGlvblJlY3QoKTsKICAgICBMYXlvdXRSZWN0IHJlY3QgPSBJbnRSZWN0
KHJ1bi0+bG9naWNhbExlZnQoKSwgbGluZVNlbGVjdGlvblJlY3QueSgpLCAwLCBsaW5lU2VsZWN0
aW9uUmVjdC5oZWlnaHQoKSk7CkBAIC0yMTQsOCArMjE0LDggQEAgdm9pZCBSZW5kZXJMaW5lQnJl
YWs6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4m
IHJlY3QKICAgICBleHRlbnRzUmVjdCA9IGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGV4
dGVudHNSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKICAgICBpZiAoIXJ1bi0+aXNIb3Jp
em9udGFsKCkpCiAgICAgICAgIGV4dGVudHNSZWN0ID0gZXh0ZW50c1JlY3QudHJhbnNwb3NlZFJl
Y3QoKTsKLSAgICBib29sIGlzRmlyc3RPbkxpbmUgPSAhcnVuLnByZXZpb3VzT25MaW5lKCk7Ci0g
ICAgYm9vbCBpc0xhc3RPbkxpbmUgPSAhcnVuLm5leHRPbkxpbmUoKTsKKyAgICBib29sIGlzRmly
c3RPbkxpbmUgPSAhcnVuLT5wcmV2aW91c09uTGluZSgpOworICAgIGJvb2wgaXNMYXN0T25MaW5l
ID0gIXJ1bi0+bmV4dE9uTGluZSgpOwogICAgIGlmIChjb250YWluaW5nQmxvY2stPmlzUnVieUJh
c2UoKSB8fCBjb250YWluaW5nQmxvY2stPmlzUnVieVRleHQoKSkKICAgICAgICAgaXNMYXN0T25M
aW5lID0gIWNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCktPmlubGluZUJveFdyYXBw
ZXIoKS0+bmV4dE9uTGluZUV4aXN0cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAppbmRleCA2MmM3YmRiNzkyOTJlZjUzYjY5YWExNWFlMzhkZDEyOGZk
NDI1NDMxLi4yYjUxMzRkMjg4ODJlNDE3ZmRhNTM3MDgxZDRiZTRjZGZkYzYzY2FhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTY5MCw3ICs2OTAs
NyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdAogewogICAgIGF1dG8gW3RvcCwgYm90dG9tXSA9
IFsmXSB7CiAgICAgICAgIGlmIChhdXRvIHJ1biA9IExheW91dEludGVncmF0aW9uOjpydW5Gb3Io
KnRoaXMpKSB7Ci0gICAgICAgICAgICBhdXRvIGxpbmUgPSBydW4ubGluZSgpOworICAgICAgICAg
ICAgYXV0byBsaW5lID0gcnVuLT5saW5lKCk7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIobGluZS0+c2VsZWN0aW9uVG9wRm9ySGl0VGVzdGluZygpLCBsaW5lLT5zZWxlY3Rpb25C
b3R0b20oKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGxvZ2lj
YWxUb3AoKSwgbG9naWNhbEJvdHRvbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAppbmRleCAzNTI3OTY2YzZiOWVmMjgzZjlhNDE4NjdkNjBmMDgyMGMxZGQxZDUyLi40
NTYzZjU3ZWE1NTE2NTViNzIwYjgyYTQyNDg3Mzc2ZDgzM2I0NTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0zMzcsMTEgKzMzNywxMSBAQCB2b2lkIFJlbmRl
clRleHQ6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRy
eT4mIHJlY3RzLCB1bgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHJ1bi5saW5lKCktPmxlZ2FjeVJvb3RJbmxpbmVCb3goKSAmJiBydW4ubGluZSgp
LT5sZWdhY3lSb290SW5saW5lQm94KCktPmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpKSB7CisgICAg
ICAgIGlmIChydW4tPmxpbmUoKS0+bGVnYWN5Um9vdElubGluZUJveCgpICYmIHJ1bi0+bGluZSgp
LT5sZWdhY3lSb290SW5saW5lQm94KCktPmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpKSB7CiAgICAg
ICAgICAgICBpZiAocnVuLT5pc0hvcml6b250YWwoKSkKLSAgICAgICAgICAgICAgICByZWN0LnNo
aWZ0WUVkZ2VUbyhydW4ubGluZSgpLT5saW5lQm94VG9wKCkpOworICAgICAgICAgICAgICAgIHJl
Y3Quc2hpZnRZRWRnZVRvKHJ1bi0+bGluZSgpLT5saW5lQm94VG9wKCkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHJlY3Quc2hpZnRYRWRnZVRvKHJ1bi5saW5lKCktPmxpbmVC
b3hUb3AoKSk7CisgICAgICAgICAgICAgICAgcmVjdC5zaGlmdFhFZGdlVG8ocnVuLT5saW5lKCkt
PmxpbmVCb3hUb3AoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBSZW5kZXJCbG9jayogY29udGFp
bmluZ0Jsb2NrID0gdGhpcy0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zNjAsOCArMzYwLDggQEAg
dm9pZCBSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0
aW9uR2VvbWV0cnk+JiByZWN0cywgdW4KICAgICAgICAgZXh0ZW50c1JlY3QgPSBsb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UmVjdChleHRlbnRzUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7
CiAgICAgICAgIGlmICghcnVuLT5pc0hvcml6b250YWwoKSkKICAgICAgICAgICAgIGV4dGVudHNS
ZWN0ID0gZXh0ZW50c1JlY3QudHJhbnNwb3NlZFJlY3QoKTsKLSAgICAgICAgYm9vbCBpc0ZpcnN0
T25MaW5lID0gIXJ1bi5wcmV2aW91c09uTGluZSgpOwotICAgICAgICBib29sIGlzTGFzdE9uTGlu
ZSA9ICFydW4ubmV4dE9uTGluZSgpOworICAgICAgICBib29sIGlzRmlyc3RPbkxpbmUgPSAhcnVu
LT5wcmV2aW91c09uTGluZSgpOworICAgICAgICBib29sIGlzTGFzdE9uTGluZSA9ICFydW4tPm5l
eHRPbkxpbmUoKTsKICAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay0+aXNSdWJ5QmFzZSgpIHx8
IGNvbnRhaW5pbmdCbG9jay0+aXNSdWJ5VGV4dCgpKQogICAgICAgICAgICAgaXNMYXN0T25MaW5l
ID0gIWNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCktPmlubGluZUJveFdyYXBwZXIo
KS0+bmV4dE9uTGluZUV4aXN0cygpOwogCkBAIC01MzEsNyArNTMxLDcgQEAgc3RhdGljIGJvb2wg
bGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KGludCBwb2ludExpbmVEaXJlY3Rpb24sIGNvbnN0
IExheW91dEludGUKICAgICAvLyB0aGUgYWZmaW5pdHkgbXVzdCBiZSBkb3duc3RyZWFtIHNvIHRo
ZSBwb3NpdGlvbiBkb2Vzbid0IGp1bXAgYmFjayB0byB0aGUgcHJldmlvdXMgbGluZQogICAgIC8v
IGV4Y2VwdCB3aGVuIGJveCBpcyB0aGUgZmlyc3QgYm94IGluIHRoZSBsaW5lCiAgICAgaWYgKHBv
aW50TGluZURpcmVjdGlvbiA8PSB0ZXh0UnVuLT5sb2dpY2FsTGVmdCgpKSB7Ci0gICAgICAgIHNo
b3VsZEFmZmluaXR5QmVEb3duc3RyZWFtID0gIXRleHRSdW4ucHJldmlvdXNPbkxpbmUoKSA/IFVw
c3RyZWFtSWZQb3NpdGlvbklzTm90QXRTdGFydCA6IEFsd2F5c0Rvd25zdHJlYW07CisgICAgICAg
IHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtID0gIXRleHRSdW4tPnByZXZpb3VzT25MaW5lKCkg
PyBVcHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0U3RhcnQgOiBBbHdheXNEb3duc3RyZWFtOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTU0NiwxMCArNTQ2LDEwIEBAIHN0YXRpYyBi
b29sIGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChpbnQgcG9pbnRMaW5lRGlyZWN0aW9uLCBj
b25zdCBMYXlvdXRJbnRlCiAKICAgICAvLyBib3ggaXMgZmlyc3Qgb24gbGluZQogICAgIC8vIGFu
ZCB0aGUgeCBjb29yZGluYXRlIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCB0ZXh0IGJveCBs
ZWZ0IGVkZ2UKLSAgICBpZiAoIXRleHRSdW4ucHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVh
aygpICYmIHBvaW50TGluZURpcmVjdGlvbiA8IHRleHRSdW4tPmxvZ2ljYWxMZWZ0KCkpCisgICAg
aWYgKCF0ZXh0UnVuLT5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgJiYgcG9pbnRM
aW5lRGlyZWN0aW9uIDwgdGV4dFJ1bi0+bG9naWNhbExlZnQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAoIXRleHRSdW4ubmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkpIHsK
KyAgICBpZiAoIXRleHRSdW4tPm5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpKSB7CiAgICAg
ICAgIC8vIGJveCBpcyBsYXN0IG9uIGxpbmUKICAgICAgICAgLy8gYW5kIHRoZSB4IGNvb3JkaW5h
dGUgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBsYXN0IHRleHQgYm94IHJpZ2h0IGVkZ2UKICAgICAg
ICAgLy8gZ2VuZXJhdGUgVmlzaWJsZVBvc2l0aW9uLCB1c2UgQWZmaW5pdHk6OlVwc3RyZWFtIGFm
ZmluaXR5IGlmIHBvc3NpYmxlCkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIFZpc2libGVQb3Np
dGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb25BZnRlckFkanVzdGluZ09mZnNldEZvckJpRGkoY29u
c3QgTGEKICAgICBpZiAocG9zaXRpb25Jc0F0U3RhcnRPZkJveCA9PSBydW4tPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkgewogICAgICAgICAvLyBvZmZzZXQgaXMgb24gdGhlIGxlZnQgZWRnZQog
Ci0gICAgICAgIGF1dG8gcHJldmlvdXNSdW4gPSBydW4ucHJldmlvdXNPbkxpbmVJZ25vcmluZ0xp
bmVCcmVhaygpOworICAgICAgICBhdXRvIHByZXZpb3VzUnVuID0gcnVuLT5wcmV2aW91c09uTGlu
ZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgICAgIGlmICgocHJldmlvdXNSdW4gJiYgcHJldmlv
dXNSdW4tPmJpZGlMZXZlbCgpID09IHJ1bi0+YmlkaUxldmVsKCkpCiAgICAgICAgICAgICB8fCBy
dW4tPnJlbmRlcmVyKCkuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0g
cnVuLT5kaXJlY3Rpb24oKSkgLy8gRklYTUU6IGxlZnQgb24gMTJDQkEKICAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3gocnVuLCBydW4tPmxlZnRtb3N0Q2FyZXRP
ZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOwpAQCAtNjA1LDcgKzYwNSw3IEBA
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3Rp
bmdPZmZzZXRGb3JCaURpKGNvbnN0IExhCiAgICAgICAgIGlmICghcHJldmlvdXNSdW4gfHwgcHJl
dmlvdXNSdW4tPmJpZGlMZXZlbCgpIDwgcnVuLT5iaWRpTGV2ZWwoKSkgewogICAgICAgICAgICAg
Ly8gZS5nLiBsZWZ0IG9mIEQgaW4gYURDMTJCQWIKICAgICAgICAgICAgIExheW91dEludGVncmF0
aW9uOjpSdW5JdGVyYXRvciByaWdodG1vc3RSdW4gPSBydW47Ci0gICAgICAgICAgICBmb3IgKGF1
dG8gbmV4dFJ1biA9IHJ1bi5uZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsgbmV4dFJ1bjsg
bmV4dFJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gbmV4dFJ1biA9IHJ1bi0+bmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFr
KCk7IG5leHRSdW47IG5leHRSdW4udHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWso
KSkgewogICAgICAgICAgICAgICAgIGlmIChuZXh0UnVuLT5iaWRpTGV2ZWwoKSA8IHJ1bi0+Ymlk
aUxldmVsKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJp
Z2h0bW9zdFJ1biA9IG5leHRSdW47CkBAIC02MTcsNyArNjE3LDcgQEAgc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb25BZnRlckFkanVzdGluZ09mZnNldEZvckJpRGko
Y29uc3QgTGEKICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChydW4s
IHJ1bi0+cmlnaHRtb3N0Q2FyZXRPZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0p
OwogICAgIH0KIAotICAgIGF1dG8gbmV4dFJ1biA9IHJ1bi5uZXh0T25MaW5lSWdub3JpbmdMaW5l
QnJlYWsoKTsKKyAgICBhdXRvIG5leHRSdW4gPSBydW4tPm5leHRPbkxpbmVJZ25vcmluZ0xpbmVC
cmVhaygpOwogICAgIGlmICgobmV4dFJ1biAmJiBuZXh0UnVuLT5iaWRpTGV2ZWwoKSA9PSBydW4t
PmJpZGlMZXZlbCgpKQogICAgICAgICB8fCBydW4tPnJlbmRlcmVyKCkuY29udGFpbmluZ0Jsb2Nr
KCktPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gcnVuLT5kaXJlY3Rpb24oKSkKICAgICAgICAgcmV0
dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChydW4sIHJ1bi0+cmlnaHRtb3N0Q2FyZXRP
ZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOwpAQCAtNjM4LDcgKzYzOCw3IEBA
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3Rp
bmdPZmZzZXRGb3JCaURpKGNvbnN0IExhCiAgICAgaWYgKCFuZXh0UnVuIHx8IG5leHRSdW4tPmJp
ZGlMZXZlbCgpIDwgcnVuLT5iaWRpTGV2ZWwoKSkgewogICAgICAgICAvLyBlLmcuIHJpZ2h0IG9m
IEEgaW4gYURDMTJCQWIKICAgICAgICAgTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIGxl
ZnRtb3N0UnVuID0gcnVuOwotICAgICAgICBmb3IgKGF1dG8gcHJldmlvdXNSdW4gPSBydW4ucHJl
dmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOyBwcmV2aW91c1J1bjsgcHJldmlvdXNSdW4u
dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIHByZXZpb3VzUnVuID0gcnVuLT5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFr
KCk7IHByZXZpb3VzUnVuOyBwcmV2aW91c1J1bi50cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3Jp
bmdMaW5lQnJlYWsoKSkgewogICAgICAgICAgICAgaWYgKHByZXZpb3VzUnVuLT5iaWRpTGV2ZWwo
KSA8IHJ1bi0+YmlkaUxldmVsKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBsZWZ0bW9zdFJ1biA9IHByZXZpb3VzUnVuOwpAQCAtNjY1LDE0ICs2NjUsMTQgQEAgVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBjb25zdCBSZW4KIAogICAgIExheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0
b3IgbGFzdFJ1bjsKICAgICBmb3IgKGF1dG8gcnVuID0gZmlyc3RSdW47IHJ1bjsgcnVuLnRyYXZl
cnNlTmV4dFRleHRSdW4oKSkgewotICAgICAgICBpZiAocnVuLT5pc0xpbmVCcmVhaygpICYmICFy
dW4ucHJldmlvdXNPbkxpbmUoKSAmJiBydW4ubmV4dE9uTGluZSgpICYmICFydW4ubmV4dE9uTGlu
ZSgpLT5pc0xpbmVCcmVhaygpKQorICAgICAgICBpZiAocnVuLT5pc0xpbmVCcmVhaygpICYmICFy
dW4tPnByZXZpb3VzT25MaW5lKCkgJiYgcnVuLT5uZXh0T25MaW5lKCkgJiYgIXJ1bi0+bmV4dE9u
TGluZSgpLT5pc0xpbmVCcmVhaygpKQogICAgICAgICAgICAgcnVuLnRyYXZlcnNlTmV4dFRleHRS
dW4oKTsKIAotICAgICAgICBhdXRvIGxpbmUgPSBydW4ubGluZSgpOworICAgICAgICBhdXRvIGxp
bmUgPSBydW4tPmxpbmUoKTsKICAgICAgICAgTGF5b3V0VW5pdCB0b3AgPSBzdGQ6Om1pbihsaW5l
LT5zZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nKCksIGxpbmUtPnRvcCgpKTsKICAgICAgICAgaWYg
KHBvaW50QmxvY2tEaXJlY3Rpb24gPiB0b3AgfHwgKCFibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50
QmxvY2tEaXJlY3Rpb24gPT0gdG9wKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b20g
PSBsaW5lLT5zZWxlY3Rpb25Cb3R0b20oKTsKLSAgICAgICAgICAgIGlmIChhdXRvIG5leHRMaW5l
ID0gbGluZS5uZXh0KCkpCisgICAgICAgICAgICBpZiAoYXV0byBuZXh0TGluZSA9IGxpbmUtPm5l
eHQoKSkKICAgICAgICAgICAgICAgICBib3R0b20gPSBzdGQ6Om1pbihib3R0b20sIG5leHRMaW5l
LT50b3AoKSk7CiAKICAgICAgICAgICAgIGlmIChwb2ludEJsb2NrRGlyZWN0aW9uIDwgYm90dG9t
IHx8IChibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50QmxvY2tEaXJlY3Rpb24gPT0gYm90dG9tKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggZmZl
ODc2YTc2YzcwNjg0ODcxOTgxZjQ2YTU3MmZkNGRkNmQ4OTQ2Yi4uMWM0ZTRlYTFjYjU4M2QwZmFl
NmM5ZDZiMjcyY2Y2OThkZDBiZDhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
SW5saW5lVGV4dEJveFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVU
ZXh0Qm94U3R5bGUuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29sIGlzQW5jZXN0b3JB
bmRXaXRoaW5CbG9jayhjb25zdCBSZW5kZXJJbmxpbmUmIGFuY2VzdG9yLCBjb25zdCBSZW5kZXJP
CiAKIHN0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3Qg
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvciYgbGluZSwgZmxvYXQmIG1pbkxvZ2ljYWxU
b3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbikKIHsKLSAgICBmb3IgKGF1dG8gcnVuID0gbGlu
ZS5maXJzdFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgeworICAgIGZvciAo
YXV0byBydW4gPSBsaW5lLT5maXJzdFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUo
KSkgewogICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0
IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgbWlu
TG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUl0ZXIKIAogc3RhdGljIHZvaWQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9u
TGluZShjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yJiBsaW5lLCBmbG9hdCYg
bWF4TG9naWNhbEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVy
LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uKQogewotICAgIGZvciAo
YXV0byBydW4gPSBsaW5lLmZpcnN0UnVuKCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgp
KSB7CisgICAgZm9yIChhdXRvIHJ1biA9IGxpbmUtPmZpcnN0UnVuKCk7IHJ1bjsgcnVuLnRyYXZl
cnNlTmV4dE9uTGluZSgpKSB7CiAgICAgICAgIGlmIChydW4tPnJlbmRlcmVyKCkuaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFj
ZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KIApAQCAtMTE5LDcgKzExOSw3IEBA
IGZsb2F0IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVy
bGluZVBvc2l0aW9uLCBUZXh0VW5kZXJsCiAgICAgYXV0byByZXNvbHZlZFVuZGVybGluZVBvc2l0
aW9uID0gdW5kZXJsaW5lUG9zaXRpb247CiAgICAgaWYgKHJlc29sdmVkVW5kZXJsaW5lUG9zaXRp
b24gPT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvICYmIHVuZGVybGluZU9mZnNldC5pc0F1
dG8oKSkgewogICAgICAgICBpZiAodGV4dFJ1bikKLSAgICAgICAgICAgIHJlc29sdmVkVW5kZXJs
aW5lUG9zaXRpb24gPSB0ZXh0UnVuLmxpbmUoKS0+YmFzZWxpbmVUeXBlKCkgPT0gSWRlb2dyYXBo
aWNCYXNlbGluZSA/IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXIgOiBUZXh0VW5kZXJsaW5l
UG9zaXRpb246OkF1dG87CisgICAgICAgICAgICByZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID0g
dGV4dFJ1bi0+bGluZSgpLT5iYXNlbGluZVR5cGUoKSA9PSBJZGVvZ3JhcGhpY0Jhc2VsaW5lID8g
VGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlciA6IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0
bzsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbiA9
IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bzsKICAgICB9CkBAIC0xMzQsOCArMTM0LDggQEAg
ZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRpb24gdW5kZXJs
aW5lUG9zaXRpb24sIFRleHRVbmRlcmwKICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6
VW5kZXI6IHsKICAgICAgICAgQVNTRVJUKHRleHRSdW4pOwogICAgICAgICAvLyBQb3NpdGlvbiB1
bmRlcmxpbmUgcmVsYXRpdmUgdG8gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsb3dlc3QgZWxlbWVu
dCdzIGNvbnRlbnQgYm94LgotICAgICAgICBhdXRvIGxpbmUgPSB0ZXh0UnVuLmxpbmUoKTsKLSAg
ICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4
dERlY29yYXRpb24odGV4dFJ1bi0+cmVuZGVyZXIoKSwgVGV4dERlY29yYXRpb246OlVuZGVybGlu
ZSwgbGluZS5pc0ZpcnN0KCkpOworICAgICAgICBhdXRvIGxpbmUgPSB0ZXh0UnVuLT5saW5lKCk7
CisgICAgICAgIGF1dG8qIGRlY29yYXRpb25SZW5kZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0
aFRleHREZWNvcmF0aW9uKHRleHRSdW4tPnJlbmRlcmVyKCksIFRleHREZWNvcmF0aW9uOjpVbmRl
cmxpbmUsIGxpbmUtPmlzRmlyc3QoKSk7CiAgICAgICAgIAogICAgICAgICBmbG9hdCBvZmZzZXQ7
CiAgICAgICAgIGlmICh0ZXh0UnVuLT5yZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNX
cml0aW5nTW9kZSgpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>