<?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>226533</bug_id>
          
          <creation_ts>2021-06-02 07:03:33 -0700</creation_ts>
          <short_desc>Rename RootInlineBox to LegacyRootInlineBox</short_desc>
          <delta_ts>2021-06-02 09:21:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</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>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</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>1765964</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-02 07:03:33 -0700</bug_when>
    <thetext>More legacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765965</commentid>
    <comment_count>1</comment_count>
      <attachid>430344</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-02 07:08:07 -0700</bug_when>
    <thetext>Created attachment 430344
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765970</commentid>
    <comment_count>2</comment_count>
      <attachid>430346</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-02 07:18:07 -0700</bug_when>
    <thetext>Created attachment 430346
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766011</commentid>
    <comment_count>3</comment_count>
      <attachid>430346</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-02 08:46:32 -0700</bug_when>
    <thetext>Comment on attachment 430346
patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766022</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-02 09:20:22 -0700</bug_when>
    <thetext>Committed r278354 (238386@main): &lt;https://commits.webkit.org/238386@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430346.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766023</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-02 09:21:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/78767214&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430344</attachid>
            <date>2021-06-02 07:08:07 -0700</date>
            <delta_ts>2021-06-02 07:25:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-root-inline-box-rename.patch</filename>
            <type>text/plain</type>
            <size>143140</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMjAxNjU5ZTg4NDguLjJkMTNlNGU3NDcxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzNSBAQAorMjAyMS0wNi0wMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIFJvb3RJbmxpbmVCb3ggdG8gTGVnYWN5Um9vdElubGluZUJv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9yZSBs
ZWdhY3kgbGluZSBsYXlvdXQgcGF0aCByZW5hbWluZy4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldE5leHRTb2Z0QnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnZhbHVlV2l0aEhhcmRMaW5lQnJlYWtzIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRv
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aExpbmU6OmxlZ2Fj
eVJvb3RJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpMaW5lSXRlcmF0b3JM
ZWdhY3lQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRl
cmF0b3JMZWdhY3lQYXRoOjpzZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjps
ZWdhY3lSb290SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bGVnYWN5Um9v
dElubGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JMZWdhY3lQYXRoOjpSdW5JdGVyYXRvckxlZ2FjeVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aDo6cm9vdElubGluZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0VsbGlw
c2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjptYXJrdXBCb3ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRp
bmdPYmplY3RzLmg6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6b3JpZ2luYXRp
bmdMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpzZXRPcmln
aW5hdGluZ0xpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmlubmVyVGV4dElmVHJ1bmNhdGVkIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlTG9naWNhbEJveEhlaWdodHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
cGFpbnRNYXJrZWRUZXh0QmFja2dyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OnJvb3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94Ojpyb290KToKKyAgICAgICAg
KiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2Fj
eUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91dDo6Y3Jl
YXRlUm9vdElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpj
cmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxp
bmVMYXlvdXQ6OmNvbnN0cnVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdp
ZHRoRm9yVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojp1cGRh
dGVSdWJ5Rm9ySnVzdGlmaWVkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5
b3V0Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVj
dGlvblBvc2l0aW9uc0ZvclNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxh
eW91dDo6cmVtb3ZlSW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxp
bmVMYXlvdXQ6OmNvbXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91dDo6Y3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5z
KToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUxpbmVSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lMaW5lTGF5b3V0OjpsYXlvdXRSdW5zQW5kRmxvYXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OnJlYXR0YWNoQ2xlYW5MaW5lRmxvYXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNoZWNrRmxvYXRJbkNsZWFuTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpkZXRlcm1pbmVTdGFydFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmRldGVybWluZUVu
ZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNoZWNrUGFn
aW5hdGlvbkFuZEZsb2F0c0F0RW5kTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5l
TGF5b3V0OjpsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5lQ2hhbmdlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjptYXRjaGVkRW5kTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpsaW5lQ291bnRVbnRpbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpkZWxldGVFbGxpcHNpc0xp
bmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpjaGVja0xpbmVz
Rm9yVGV4dE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OnVw
ZGF0ZUZyYWdtZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUxp
bmVMYXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmZpcnN0Um9v
dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpsYXN0Um9v
dEJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OkxlZ2FjeVJvb3RJbmxpbmVCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6fkxlZ2FjeVJvb3RJbmxpbmVCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6ZGV0YWNoRWxsaXBzaXNCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmlzSHlwaGVuYXRlZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpiYXNlbGluZVBv
c2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6Omxp
bmVIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6
bGluZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9v
dElubGluZUJveDo6cGxhY2VFbGxpcHNpcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290
SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJv
b3RJbmxpbmVCb3g6OnBhaW50RWxsaXBzaXNCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Um9vdElubGluZUJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9v
dElubGluZUJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElu
bGluZUJveDo6YWRqdXN0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElu
bGluZUJveDo6Y2hpbGRSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxp
bmVCb3g6OmNvbnRhaW5pbmdGcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94OjpjbGVhckNvbnRhaW5pbmdGcmFnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpzZXRDb250YWluaW5nRnJhZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6YWxpZ25Cb3hlc0luQmxvY2tEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6YmVmb3JlQW5ub3Rh
dGlvbnNBZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxp
bmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVJvb3RJbmxpbmVCb3g6OmZpcnN0U2VsZWN0ZWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Um9vdElubGluZUJveDo6bGFzdFNlbGVjdGVkQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpibG9ja0JlZm9yZVdpdGhpblNlbGVjdGlvblJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9j
ayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpzZWxlY3Rp
b25Cb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6
YmxvY2tGbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6
OmxpbmVCcmVha0JpZGlTdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9v
dElubGluZUJveDo6c2V0TGluZUJyZWFrSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lS
b290SW5saW5lQm94OjplbGxpcHNpc0JveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94OjpyZW1vdmVMaW5lQm94RnJvbVJlbmRlck9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpleHRyYWN0TGluZUJveEZyb21SZW5kZXJP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6YXR0YWNoTGlu
ZUJveFRvUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVC
b3g6OnBhZGRlZExheW91dE92ZXJmbG93UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRBc2NlbnRBbmREZXNjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVC
b3g6OmFzY2VudEFuZERlc2NlbnRGb3JCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5Um9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlRm9udEZvckJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlR2x5
cGhzRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6
OmluY2x1ZGVJbml0aWFsTGV0dGVyRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVNYXJnaW5Gb3JCb3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6Zml0c1RvR2x5cGhzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVzUm9vdExpbmVCb3hGb250
T3JMZWFkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6
Om91dHB1dExpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGlu
ZUJveDo6Ym94TmFtZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxp
bmVCb3guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmguCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpsaW5lVG9wIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmxpbmVCb3R0b20g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6bGluZUJveFRv
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpsaW5lQm94
Qm90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6Omxp
bmVCb3hIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJv
eDo6cGFnaW5hdGlvblN0cnV0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJ
bmxpbmVCb3g6OnNldFBhZ2luYXRpb25TdHJ1dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lS
b290SW5saW5lQm94Ojppc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6c2V0SXNGaXJzdEFmdGVyUGFnZUJyZWFrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnBhZ2luYXRlZExpbmVXaWR0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpzZXRQYWdpbmF0
ZWRMaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6c2Vs
ZWN0aW9uSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVC
b3g6OnNlbGVjdGlvbkhlaWdodEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6c2V0TGluZVRvcEJvdHRvbVBvc2l0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpsaW5lQnJlYWtP
YmogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6bGluZUJy
ZWFrUG9zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnNl
dExpbmVCcmVha1Bvcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojph
cHBlbmRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpyZW1v
dmVGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpmbG9hdHNQ
dHIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6YmFzZWxpbmVUeXBl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6Omhhc0Fubm90
YXRpb25zQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVC
b3g6Omhhc0Fubm90YXRpb25zQWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
Um9vdElubGluZUJveDo6bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojpsb2dpY2Fs
VG9wTGF5b3V0T3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElu
bGluZUJveDo6bG9naWNhbEJvdHRvbUxheW91dE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmlzVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6Om5leHRSb290
Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnByZXZS
b290Qm94IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhbGN1bGF0ZU1pbmltdW1QYWdlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Om5lZWRz
QXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Rmxvdzo6YWRqdXN0TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKToKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZENoZWNrTGluZXNGb3JMaW5lQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2tGbG93OjpsaW5lQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpjbGVhclRydW5jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjphZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6b3V0cHV0TGluZVRyZWVBbmRNYXJrIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZENoZWNrTGluZXMpOiBEZWxldGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6bGluZUdyaWRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpzZXRMaW5lR3JpZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmZpcnN0Um9vdEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6Omxhc3RSb290Qm94IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cG9zaXRpb25MaW5lQm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmxpbmVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEhlaWdodEZv
ckxpbmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3g6OmFwcGx5TGluZUNsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZENoZWNrTGluZXMp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y2hlY2tMaW5lc0NvbnNp
c3RlbmN5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcklubGluZTo6Z2VuZXJhdGVDdWxsZWRMaW5lQm94UmVjdHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92
ZXJmbG93Qm91bmRpbmdCb3hJbkZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcklubGluZTo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmFueUxp
bmVJbnRlcnNlY3RzUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94
TGlzdDo6bGluZUludGVyc2VjdHNEaXJ0eVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGluZUJveExpc3Q6OnBhaW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpbmVCb3hMaXN0OjpoaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
bmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6bG9jYWxTZWxl
Y3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OmFkZE92ZXJm
bG93RnJvbUxpc3RNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6
c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmxvY2FsU2VsZWN0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUnVieVJ1bjo6Z2V0T3ZlcmhhbmcgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5l
Qm94ZXM6OmRpcnR5UmFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jv
b3RJbmxpbmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0U3RhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6ZW5kTGluZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnNldEVuZExpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjp1cGRhdGVSZXBhaW50UmFuZ2VGcm9tQm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxp
bmVCb3g6OlNWR1Jvb3RJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUm9v
dElubGluZUJveC5oOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KToKKwogMjAyMS0wNi0wMiAg
QW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
Mjc2ODgyKTogU3R5bGUgbm90IGludmFsaWRhdGVkIGNvcnJlY3RseSBmb3IgbWVkaWEgcXVlcmll
cyBpbiBzaGFkb3cgdHJlZXMgdGhhdCBzaGFyZSBzdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
ZGEyN2I0MTkxMWYxLi44OWUyOTk2NmI5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTUzMSw2
ICsxNTMxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJl
bmRlcmluZy9MYXllckZyYWdtZW50LmgKICAgICByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmgK
ICAgICByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5oCisgICAgcmVuZGVyaW5nL0xlZ2FjeVJv
b3RJbmxpbmVCb3guaAogICAgIHJlbmRlcmluZy9NYXJrZWRUZXh0LmgKICAgICByZW5kZXJpbmcv
T3JkZXJJdGVyYXRvci5oCiAgICAgcmVuZGVyaW5nL092ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5o
CkBAIC0xNTc2LDcgKzE1NzcsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKICAgICByZW5kZXJpbmcvUmVuZGVyVmll
dy5oCiAgICAgcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCi0gICAgcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaAogICAgIHJlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaAogICAgIHJlbmRlcmluZy9T
ZWxlY3Rpb25SYW5nZURhdGEuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDRjNDYzOWZhZTc4Mi4uMmZi
MTNmMjNlYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjI2Niw2ICsyMjY2LDcgQEAgcmVuZGVyaW5n
L0xheW91dERpc2FsbG93ZWRTY29wZS5jcHAKIHJlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuY3Bw
CiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcAogcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlv
dXQuY3BwCityZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKIHJlbmRlcmluZy9NYXJr
ZWRUZXh0LmNwcAogcmVuZGVyaW5nL01hcmtlZFRleHRTdHlsZS5jcHAKIHJlbmRlcmluZy9PcmRl
ckl0ZXJhdG9yLmNwcApAQCAtMjM1Myw3ICsyMzU0LDYgQEAgcmVuZGVyaW5nL1JlbmRlclZUVEN1
ZS5jcHAKIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cAogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKLXJlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cAogcmVuZGVyaW5nL1Njcm9sbEFsaWdubWVudC5jcHAKIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5n
ZURhdGEuY3BwCiByZW5kZXJpbmcvVGFibGVMYXlvdXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjM3OGQ5ZDlmNjNmLi5i
MTdjZDkwNWY2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTM1NzIsNyArMzU3Miw3IEBACiAJCUE4Q0ZGMDRFMEExNTRGMDkw
MDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGMDQ5MEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVM
YXlvdXQuaCAqLzsgfTsKIAkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVM
YXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
Q0ZGMDRBMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmggKi87IH07CiAJCUE4
Q0ZGMDUxMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkYwNEMwQTE1NEYwOTAwMEE0MjM0IC8q
IFRhYmxlTGF5b3V0LmggKi87IH07Ci0JCUE4Q0ZGNUUxMEExNTVBMDUwMDBBNDIzNCAvKiBSb290
SW5saW5lQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOENGRjVEQTBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE4Q0ZGNUUxMEExNTVBMDUw
MDBBNDIzNCAvKiBMZWdhY3lSb290SW5saW5lQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjVEQTBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5
Um9vdElubGluZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE4Q0ZGNUUzMEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVGbG93Qm94LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjVEQzBBMTU1
QTA1MDAwQTQyMzQgLyogSW5saW5lRmxvd0JveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4Q0ZGNUU1MEExNTVBMDUwMDBBNDIzNCAvKiBMZWdh
Y3lJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4Q0ZGNURFMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVCb3guaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOENGRjZCRTBBMTU2
MTE4MDAwQTQyMzQgLyogRWxsaXBzaXNCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNkJEMEExNTYxMTgwMDBBNDIzNCAvKiBFbGxpcHNpc0Jv
eC5oICovOyB9OwpAQCAtMTMxNjAsMTIgKzEzMTYwLDEyIEBACiAJCUE4Q0ZGMDRBMEExNTRGMDkw
MDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGaXhlZFRhYmxlTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4Q0ZGMDRCMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9UYWJsZUxheW91dC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGMDRDMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJs
ZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFibGVMYXlvdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThDRkY1REEwQTE1NUEwNTAwMEE0MjM0
IC8qIFJvb3RJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJv
b3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDRkY1REEwQTE1
NUEwNTAwMEE0MjM0IC8qIExlZ2FjeVJvb3RJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExlZ2FjeVJvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThDRkY1REMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUZsb3dCb3guaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkY1REQwQTE1NUEwNTAwMEE0MjM0IC8qIElubGlu
ZUZsb3dCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGlu
ZUZsb3dCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENGRjVERTBBMTU1
QTA1MDAwQTQyMzQgLyogTGVnYWN5SW5saW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMZWdhY3lJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThDRkY1REYwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5SW5saW5lQm94LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThDRkY1RTAwQTE1NUEwNTAwMEE0MjM0IC8qIFJv
b3RJbmxpbmVCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJv
b3RJbmxpbmVCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOENGRjVFMDBB
MTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5Um9vdElubGluZUJveC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5Um9vdElubGluZUJveC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGNkJEMEExNTYxMTgwMDBBNDIzNCAvKiBFbGxpcHNp
c0JveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxsaXBzaXNCb3guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkY2Q0EwQTE1NjFDRDAwMEE0MjM0IC8q
IEVsbGlwc2lzQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
bGxpcHNpc0JveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGNzk4MEEx
NTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGb250RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMDIxMCw2ICszMDIxMCw4IEBACiAJCQkJQTEyMEFDQTAxM0Y5OTgzNzAw
RkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5oICovLAogCQkJCUJDRUE0ODEzMDk3RDkzMDIwMDk0
QzlFNCAvKiBMZWdhY3lMaW5lTGF5b3V0LmNwcCAqLywKIAkJCQlFNEExQUM3ODIyRkFGRDUwMDAx
N0I3NUIgLyogTGVnYWN5TGluZUxheW91dC5oICovLAorCQkJCUE4Q0ZGNUUwMEExNTVBMDUwMDBB
NDIzNCAvKiBMZWdhY3lSb290SW5saW5lQm94LmNwcCAqLywKKwkJCQlBOENGRjVEQTBBMTU1QTA1
MDAwQTQyMzQgLyogTGVnYWN5Um9vdElubGluZUJveC5oICovLAogCQkJCTlCQTI3M0YzMTcyMjA2
QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggKi8sCiAJCQkJQ0Ux
ODY2NDIxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuY3BwICovLAogCQkJCUNFMTg2NjQz
MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8sCkBAIC0zMDQwNCw4ICszMDQwNiw2
IEBACiAJCQkJQkUyMDUwN0MxOEE0NThCMTAwODA2NDdFIC8qIFJlbmRlclZUVEN1ZS5oICovLAog
CQkJCUE4NzFERkUxMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwICovLAogCQkJ
CUE4NzFERkUwMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuaCAqLywKLQkJCQlBOENG
RjVFMDBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5jcHAgKi8sCi0JCQkJQThDRkY1
REEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCAqLywKIAkJCQk1RDkyNUI2NTBG
NjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50LmNwcCAqLywKIAkJCQk1RDkyNUI2NjBG
NjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50LmggKi8sCiAJCQkJNDRCMzhCRjkyNTM2
OUE4ODAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8sCkBAIC0zNTAzNyw3ICsz
NTAzNyw3IEBACiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQUIxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVy
YkNvbnZvbHZlclN0YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBRDEyQjAyNkY3MDBD
MUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4Q0ZGNUUx
MEExNTVBMDUwMDBBNDIzNCAvKiBSb290SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKKwkJCQlB
OENGRjVFMTBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5Um9vdElubGluZUJveC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDlFOTExQzkwRUY4NkQ0NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczRjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8q
IFJvdW5kZWRSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0UyMzM2MzFEQzdEQTI0MDBGMjhE
MDEgLyogUnNhT3RoZXJQcmltZXNJbmZvLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcAppbmRleCBmY2JiZjVlNmI4MmIuLmE1YjQzMDIzODRjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1
ZGUgIkxhYmVsc05vZGVMaXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgog
I2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKICNp
bmNsdWRlICJOb2RlUmFyZURhdGEuaCIKQEAgLTUxLDcgKzUyLDYgQEAKICNpbmNsdWRlICJSZW5k
ZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyV2lkZ2V0LmgiCi0jaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcAppbmRleCAwNDdjOTNkN2RlNDAuLjA3Y2FhOWI4YjMxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTY4MSw5ICs2ODEsOSBAQCB1bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5k
ZXhGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcGFzc2VkUG9zaQogICAgIHJldHVybiBpbmRl
eDsKIH0KIAotc3RhdGljIHZvaWQgZ2V0TmV4dFNvZnRCcmVhayhSb290SW5saW5lQm94KiYgbGlu
ZSwgTm9kZSomIGJyZWFrTm9kZSwgdW5zaWduZWQmIGJyZWFrT2Zmc2V0KQorc3RhdGljIHZvaWQg
Z2V0TmV4dFNvZnRCcmVhayhMZWdhY3lSb290SW5saW5lQm94KiYgbGluZSwgTm9kZSomIGJyZWFr
Tm9kZSwgdW5zaWduZWQmIGJyZWFrT2Zmc2V0KQogewotICAgIFJvb3RJbmxpbmVCb3gqIG5leHQ7
CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbmV4dDsKICAgICBmb3IgKDsgbGluZTsgbGluZSA9
IG5leHQpIHsKICAgICAgICAgbmV4dCA9IGxpbmUtPm5leHRSb290Qm94KCk7CiAgICAgICAgIGlm
IChuZXh0ICYmICFsaW5lLT5lbmRzV2l0aEJyZWFrKCkpIHsKQEAgLTcxNSw3ICs3MTUsNyBAQCBT
dHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbHVlV2l0aEhhcmRMaW5lQnJlYWtz
KCkgY29uc3QKIAogICAgIE5vZGUqIGJyZWFrTm9kZTsKICAgICB1bnNpZ25lZCBicmVha09mZnNl
dDsKLSAgICBSb290SW5saW5lQm94KiBsaW5lID0gcmVuZGVyZXItPmZpcnN0Um9vdEJveCgpOwor
ICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmUgPSByZW5kZXJlci0+Zmlyc3RSb290Qm94KCk7
CiAgICAgaWYgKCFsaW5lKQogICAgICAgICByZXR1cm4gdmFsdWUoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lSXRlcmF0b3IuaAppbmRleCA2MTA1MjM3ZDE1MWEuLjhlYjQ0MTUyYjg5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3Q7CiAKICAgICBjb25zdCBSZW5kZXJCbG9j
a0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0OwotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gq
IGxlZ2FjeVJvb3RJbmxpbmVCb3goKSBjb25zdDsKKyAgICBjb25zdCBMZWdhY3lSb290SW5saW5l
Qm94KiBsZWdhY3lSb290SW5saW5lQm94KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBmcmll
bmQgY2xhc3MgTGluZUl0ZXJhdG9yOwpAQCAtODIsNyArODIsNyBAQCBwcm90ZWN0ZWQ6CiBjbGFz
cyBMaW5lSXRlcmF0b3IgewogcHVibGljOgogICAgIExpbmVJdGVyYXRvcigpIDogbV9saW5lKExp
bmVJdGVyYXRvckxlZ2FjeVBhdGggeyBudWxscHRyIH0pIHsgfTsKLSAgICBMaW5lSXRlcmF0b3Io
Y29uc3QgUm9vdElubGluZUJveCogcm9vdElubGluZUJveCkgOiBtX2xpbmUoTGluZUl0ZXJhdG9y
TGVnYWN5UGF0aCB7IHJvb3RJbmxpbmVCb3ggfSkgeyB9OworICAgIExpbmVJdGVyYXRvcihjb25z
dCBMZWdhY3lSb290SW5saW5lQm94KiByb290SW5saW5lQm94KSA6IG1fbGluZShMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoIHsgcm9vdElubGluZUJveCB9KSB7IH07CiAgICAgTGluZUl0ZXJhdG9yKFBh
dGhMaW5lOjpQYXRoVmFyaWFudCYmKTsKIAogICAgIExpbmVJdGVyYXRvciYgb3BlcmF0b3IrKygp
IHsgcmV0dXJuIHRyYXZlcnNlTmV4dCgpOyB9CkBAIC0yMzEsNyArMjMxLDcgQEAgaW5saW5lIGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgUGF0aExpbmU6OmNvbnRhaW5pbmdCbG9jaygpIGNvbnN0CiAg
ICAgfSk7CiB9CiAKLWlubGluZSBjb25zdCBSb290SW5saW5lQm94KiBQYXRoTGluZTo6bGVnYWN5
Um9vdElubGluZUJveCgpIGNvbnN0CitpbmxpbmUgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCog
UGF0aExpbmU6OmxlZ2FjeVJvb3RJbmxpbmVCb3goKSBjb25zdAogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsKICAgICAgICAg
cmV0dXJuIHBhdGgubGVnYWN5Um9vdElubGluZUJveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVn
YWN5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oCmluZGV4IGFhZDhiZjkyNmU0OC4uY2UyMDFj
YzQzZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5
UGF0aC5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbklu
bGluZUNvbnRlbnQuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aC5oIgotI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lS
b290SW5saW5lQm94LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCiBjbGFzcyBMaW5lSXRlcmF0b3JMZWdh
Y3lQYXRoIHsKIHB1YmxpYzoKLSAgICBMaW5lSXRlcmF0b3JMZWdhY3lQYXRoKGNvbnN0IFJvb3RJ
bmxpbmVCb3gqIHJvb3RJbmxpbmVCb3gpCisgICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aChjb25z
dCBMZWdhY3lSb290SW5saW5lQm94KiByb290SW5saW5lQm94KQogICAgICAgICA6IG1fcm9vdElu
bGluZUJveChyb290SW5saW5lQm94KQogICAgIHsKICAgICB9CkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBMYXlvdXRVbml0IHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJv
eC0+bGluZVRvcCgpOyB9CiAgICAgTGF5b3V0VW5pdCBib3R0b20oKSBjb25zdCB7IHJldHVybiBt
X3Jvb3RJbmxpbmVCb3gtPmxpbmVCb3R0b20oKTsgfQogICAgIExheW91dFVuaXQgc2VsZWN0aW9u
VG9wKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5zZWxlY3Rpb25Ub3AoKTsgfQot
ICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9wRm9ySGl0VGVzdGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcm9vdElubGluZUJveC0+c2VsZWN0aW9uVG9wKFJvb3RJbmxpbmVCb3g6OkZvckhpdFRlc3Rp
bmc6Olllcyk7IH0KKyAgICBMYXlvdXRVbml0IHNlbGVjdGlvblRvcEZvckhpdFRlc3RpbmcoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPnNlbGVjdGlvblRvcChMZWdhY3lSb290SW5s
aW5lQm94OjpGb3JIaXRUZXN0aW5nOjpZZXMpOyB9CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25C
b3R0b20oKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPnNlbGVjdGlvbkJvdHRvbSgp
OyB9CiAgICAgTGF5b3V0VW5pdCBsaW5lQm94VG9wKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5s
aW5lQm94LT5saW5lQm94VG9wKCk7IH0KICAgICBMYXlvdXRVbml0IGxpbmVCb3hCb3R0b20oKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmxpbmVCb3hCb3R0b20oKTsgfQpAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVy
biBtX3Jvb3RJbmxpbmVCb3gtPmlzSG9yaXpvbnRhbCgpOyB9CiAKICAgICBjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJv
eC0+YmxvY2tGbG93KCk7IH0KLSAgICBjb25zdCBSb290SW5saW5lQm94KiBsZWdhY3lSb290SW5s
aW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94OyB9CisgICAgY29uc3QgTGVn
YWN5Um9vdElubGluZUJveCogbGVnYWN5Um9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdElubGluZUJveDsgfQogCiAgICAgdm9pZCB0cmF2ZXJzZU5leHQoKQogICAgIHsKQEAgLTk3
LDcgKzk3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBSb290SW5s
aW5lQm94KiBtX3Jvb3RJbmxpbmVCb3g7CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCog
bV9yb290SW5saW5lQm94OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4IDlmZjgwMWJmZmZjNS4uYTgyMTA0NjFlYzkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Js
b2NrKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5jb250YWluaW5nQmxvY2soKTsg
fQotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIGxlZ2FjeVJvb3RJbmxpbmVCb3goKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCogbGVnYWN5
Um9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgdHJh
dmVyc2VOZXh0KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
TGVnYWN5UGF0aC5oCmluZGV4IDQ2YWNhOWMxNTQ4NS4uNDA1MjMyZWU3NjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvckxlZ2FjeVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaApAQCAtMjYsOCArMjYs
OCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVk
ZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNpbmNs
dWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
eyB9CiAKICAgICBlbnVtIGNsYXNzIExvZ2ljYWxPcmRlciB7IFN0YXJ0LCBFbmQgfTsKLSAgICBS
dW5JdGVyYXRvckxlZ2FjeVBhdGgoY29uc3QgUm9vdElubGluZUJveCYgcm9vdCwgTG9naWNhbE9y
ZGVyIG9yZGVyKQorICAgIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5s
aW5lQm94JiByb290LCBMb2dpY2FsT3JkZXIgb3JkZXIpCiAgICAgICAgIDogbV9sb2dpY2FsT3Jk
ZXJDYWNoZShpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKHJvb3QpKQogICAgIHsKICAgICAgICAg
aWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSkgewpAQCAtMTIwLDEyICsxMjAsMTIg
QEAgcHVibGljOgogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9pbmxpbmVCb3g7
IH0KIAogICAgIExlZ2FjeUlubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxMZWdhY3lJbmxpbmVCb3gqPihtX2lubGluZUJveCk7IH0KLSAgICBjb25z
dCBSb290SW5saW5lQm94JiByb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVC
b3gtPnJvb3QoKTsgfQorICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RJbmxpbmVC
b3goKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PElubGluZVRleHRCb3g+KG1faW5saW5lQm94KTsgfQogCi0gICAgc3RhdGljIFZlY3Rv
cjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKGNvbnN0
IFJvb3RJbmxpbmVCb3gmIHJvb3QpCisgICAgc3RhdGljIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxp
bmVCb3gqPiBpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVC
b3gmIHJvb3QpCiAgICAgewogICAgICAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gaW5saW5l
Qm94ZXM7CiAgICAgICAgIHJvb3QuY29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGlubGlu
ZUJveGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4IGY4
NTlhMWQyNWQxMC4uYmM5OWNmYmFkNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxp
cHNpc0JveC5jcHAKQEAgLTI1LDggKzI1LDggQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgorI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJQYWludEluZm8u
aCIKLSNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTg3LDcgKzg3LDcgQEAgTGVnYWN5
SW5saW5lQm94KiBFbGxpcHNpc0JveDo6bWFya3VwQm94KCkgY29uc3QKICAgICBpZiAoIW1fc2hv
dWxkUGFpbnRNYXJrdXBCb3gpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUm9vdElubGluZUJv
eCogbGFzdExpbmUgPSBibG9ja0Zsb3coKS5sYXN0Um9vdEJveCgpOworICAgIExlZ2FjeVJvb3RJ
bmxpbmVCb3gqIGxhc3RMaW5lID0gYmxvY2tGbG93KCkubGFzdFJvb3RCb3goKTsKICAgICBpZiAo
IWxhc3RMaW5lKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTE2LDcgKzExNiw3IEBAIEludFJl
Y3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QoKQogewogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpOwotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gm
IHJvb3RCb3ggPSByb290KCk7CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJv
eCA9IHJvb3QoKTsKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5
IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KICAgICBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3QgeyBMYXlvdXRVbml0KHgoKSksIExheW91dFVuaXQoeSgpICsgcm9vdEJveC5z
ZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkpLCAwX2x1LCByb290Qm94LnNl
bGVjdGlvbkhlaWdodEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSB9OwogICAgIGZvbnQuYWRq
dXN0U2VsZWN0aW9uUmVjdEZvclRleHQoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9z
dHIsIGxpbmVTdHlsZSwgQWxsb3dSaWdodEV4cGFuc2lvbiksIHNlbGVjdGlvblJlY3QpOwpAQCAt
MTM2LDcgKzEzNiw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgaWYgKHRleHRDb2xv
ciA9PSBjKQogICAgICAgICBjID0gYy5pbnZlcnRlZENvbG9yV2l0aEFscGhhKDEuMCk7CiAKLSAg
ICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOworICAgIGNvbnN0IExlZ2Fj
eVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBh
bHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93Lgog
ICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCB7IExheW91dFVuaXQoeCgpICsgcGFpbnRPZmZz
ZXQueCgpKSwgTGF5b3V0VW5pdCh5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVj
dGlvblRvcCgpKSwgMF9sdSwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHQoKSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCAzM2UxNzZlMzFiNDku
LmY1OTYyYWI5NDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0
aW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2Jq
ZWN0cy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
U2FtZVNpemVBc0Zsb2F0aW5nT2JqZWN0IHsKICAgICBXZWFrUHRyPFJlbmRlckJveD4gcmVuZGVy
ZXI7Ci0gICAgV2Vha1B0cjxSb290SW5saW5lQm94PiBvcmlnaW5hdGluZ0xpbmU7CisgICAgV2Vh
a1B0cjxMZWdhY3lSb290SW5saW5lQm94PiBvcmlnaW5hdGluZ0xpbmU7CiAgICAgTGF5b3V0UmVj
dCByZWN0OwogICAgIGludCBwYWdpbmF0aW9uU3RydXQ7CiAgICAgTGF5b3V0U2l6ZSBzaXplOwpA
QCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgU2FtZVNpemVBc0Zsb2F0aW5nT2JqZWN0IHsKIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihGbG9hdGluZ09iamVjdCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNGbG9h
dGluZ09iamVjdCksIEZsb2F0aW5nT2JqZWN0X3Nob3VsZF9zdGF5X3NtYWxsKTsKICNpZiAhQVNT
RVJUX0VOQUJMRUQKIENPTVBJTEVfQVNTRVJUKHNpemVvZihXZWFrUHRyPFJlbmRlckJveD4pID09
IHNpemVvZih2b2lkKiksIFdlYWtQdHJfc2hvdWxkX2JlX3NhbWVfc2l6ZV9hc19yYXdfcG9pbnRl
cik7Ci1DT01QSUxFX0FTU0VSVChzaXplb2YoV2Vha1B0cjxSb290SW5saW5lQm94PikgPT0gc2l6
ZW9mKHZvaWQqKSwgV2Vha1B0cl9zaG91bGRfYmVfc2FtZV9zaXplX2FzX3Jhd19wb2ludGVyKTsK
K0NPTVBJTEVfQVNTRVJUKHNpemVvZihXZWFrUHRyPExlZ2FjeVJvb3RJbmxpbmVCb3g+KSA9PSBz
aXplb2Yodm9pZCopLCBXZWFrUHRyX3Nob3VsZF9iZV9zYW1lX3NpemVfYXNfcmF3X3BvaW50ZXIp
OwogI2VuZGlmCiAKIEZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmIHJl
bmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2Jq
ZWN0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCmluZGV4
IGY4M2NmOTQwM2Q3NS4uZmFjZDBiMmU1YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb2F0aW5nT2JqZWN0cy5oCkBAIC0yMyw3ICsyMyw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3gu
aCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCkBAIC04OCw5ICs4OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzRGVzY2VuZGFudChi
b29sIGlzRGVzY2VuZGFudCkgeyBtX2lzRGVzY2VuZGFudCA9IGlzRGVzY2VuZGFudDsgfQogCiAg
ICAgLy8gRklYTUU6IENhbGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBhcmUgZGFuZ2Vyb3VzIGFuZCBz
aG91bGQgYmUgYWxsb3dlZCBleHBsaWNpdGx5IG9yIHJlbW92ZWQuCi0gICAgUm9vdElubGluZUJv
eCogb3JpZ2luYXRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hdGluZ0xpbmUuZ2V0
KCk7IH0KKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBvcmlnaW5hdGluZ0xpbmUoKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbmF0aW5nTGluZS5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJPcmlnaW5h
dGluZ0xpbmUoKSB7IG1fb3JpZ2luYXRpbmdMaW5lID0gbnVsbHB0cjsgfQotICAgIHZvaWQgc2V0
T3JpZ2luYXRpbmdMaW5lKFJvb3RJbmxpbmVCb3gmIGxpbmUpIHsgbV9vcmlnaW5hdGluZ0xpbmUg
PSBtYWtlV2Vha1B0cihsaW5lKTsgfQorICAgIHZvaWQgc2V0T3JpZ2luYXRpbmdMaW5lKExlZ2Fj
eVJvb3RJbmxpbmVCb3gmIGxpbmUpIHsgbV9vcmlnaW5hdGluZ0xpbmUgPSBtYWtlV2Vha1B0cihs
aW5lKTsgfQogCiAgICAgTGF5b3V0U2l6ZSBsb2NhdGlvbk9mZnNldE9mQm9yZGVyQm94KCkgY29u
c3QKICAgICB7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdl
YWtQdHI8UmVuZGVyQm94PiBtX3JlbmRlcmVyOwotICAgIFdlYWtQdHI8Um9vdElubGluZUJveD4g
bV9vcmlnaW5hdGluZ0xpbmU7CisgICAgV2Vha1B0cjxMZWdhY3lSb290SW5saW5lQm94PiBtX29y
aWdpbmF0aW5nTGluZTsKICAgICBMYXlvdXRSZWN0IG1fZnJhbWVSZWN0OwogICAgIExheW91dFVu
aXQgbV9wYWdpbmF0aW9uU3RydXQ7CiAgICAgTGF5b3V0U2l6ZSBtX21hcmdpbk9mZnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA5MGQwNzVmODlk
MDUuLmM2ZGQzNjhjYzIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0Ojppbm5lclRl
eHRJZlRydW5jYXRlZChUZXh0RGlyZWN0aW9uJiBkaXIpIGNvbnN0CiAgICAgICAgICAgICBpZiAo
aXM8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVy
QmxvY2tGbG93JiBibG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKTsK
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2suc3R5bGUoKS50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0
T3ZlcmZsb3c6OkVsbGlwc2lzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoUm9vdElubGlu
ZUJveCogbGluZSA9IGJsb2NrLmZpcnN0Um9vdEJveCgpOyBsaW5lOyBsaW5lID0gbGluZS0+bmV4
dFJvb3RCb3goKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGxpbmUgPSBibG9j
ay5maXJzdFJvb3RCb3goKTsgbGluZTsgbGluZSA9IGxpbmUtPm5leHRSb290Qm94KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lLT5oYXNFbGxpcHNpc0JveCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlyID0gYmxvY2suc3R5bGUoKS5kaXJlY3Rpb24oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4oKnRy
dW5jYXRlZE5vZGUpLmlubmVyVGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwCmluZGV4IDg5NDU2ZDEyNTFkNi4uNGI2Y2U1ZGI2MmJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIK
ICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpAQCAtMzgsNyArMzksNiBAQAogI2luY2x1ZGUgIlJl
bmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgotI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDxtYXRoLmg+CkBAIC01MjcsNyArNTI3
LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjphZGp1c3RNYXhBc2NlbnRBbmREZXNjZW50KExheW91
dFVuaXQmIG1heEFzY2VudCwgTGF5b3V0VW5pdCYKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxv
d0JveDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gmIHJvb3RCb3gsIExh
eW91dFVuaXQmIG1heFBvc2l0aW9uVG9wLCBMYXlvdXRVbml0JiBtYXhQb3NpdGlvbkJvdHRvbSwK
K3ZvaWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKExlZ2FjeVJvb3RJ
bmxpbmVCb3gmIHJvb3RCb3gsIExheW91dFVuaXQmIG1heFBvc2l0aW9uVG9wLCBMYXlvdXRVbml0
JiBtYXhQb3NpdGlvbkJvdHRvbSwKICAgICBMYXlvdXRVbml0JiBtYXhBc2NlbnQsIExheW91dFVu
aXQmIG1heERlc2NlbnQsIGJvb2wmIHNldE1heEFzY2VudCwgYm9vbCYgc2V0TWF4RGVzY2VudCwK
ICAgICBib29sIHN0cmljdE1vZGUsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0
ZXh0Qm94RGF0YU1hcCwKICAgICBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSkKQEAgLTExNTcsNyArMTE1Nyw3IEBA
IGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgLy8gQ29uc3RyYWluIG91ciBoaXQgdGVzdGlu
ZyB0byB0aGUgbGluZSB0b3AgYW5kIGJvdHRvbSBpZiBuZWNlc3NhcnkuCiAgICAgYm9vbCBub1F1
aXJrc01vZGUgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuaW5Ob1F1aXJrc01vZGUoKTsKICAgICBp
ZiAoIW5vUXVpcmtzTW9kZSAmJiAhaGFzVGV4dENoaWxkcmVuKCkgJiYgIShkZXNjZW5kYW50c0hh
dmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCkgJiYgaGFzVGV4dERlc2NlbmRhbnRzKCkpKSB7
Ci0gICAgICAgIFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7CisgICAgICAgIExlZ2Fj
eVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7CiAgICAgICAgIExheW91dFVuaXQgdG9w
IHsgaXNIb3Jpem9udGFsKCkgPyB5KCkgOiB4KCl9OwogICAgICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQgeyBpc0hvcml6b250YWwoKSA/IGhlaWdodCgpIDogd2lkdGgoKSB9OwogICAgICAg
ICBMYXlvdXRVbml0IGJvdHRvbSA9IHN0ZDo6bWluKHJvb3RCb3gubGluZUJvdHRvbSgpLCB0b3Ag
KyBsb2dpY2FsSGVpZ2h0KTsKQEAgLTEzMzAsNyArMTMzMCw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYgcmVjdCkg
Y29uc3QKIHsKICAgICBib29sIG5vUXVpcmtzTW9kZSA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5p
bk5vUXVpcmtzTW9kZSgpOwogICAgIGlmICghbm9RdWlya3NNb2RlICYmICFoYXNUZXh0Q2hpbGRy
ZW4oKSAmJiAhKGRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiBo
YXNUZXh0RGVzY2VuZGFudHMoKSkpIHsKLSAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9v
dEJveCA9IHJvb3QoKTsKKyAgICAgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJv
eCA9IHJvb3QoKTsKICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wID0gaXNIb3Jpem9udGFs
KCkgPyByZWN0LnkoKSA6IHJlY3QueCgpOwogICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQgPSBpc0hvcml6b250YWwoKSA/IHJlY3QuaGVpZ2h0KCkgOiByZWN0LndpZHRoKCk7CiAgICAg
ICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjptaW4ocm9vdEJveC5saW5lQm90dG9tKCksIGxv
Z2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oCmluZGV4IGMyNWU5MDUwZWU5Zi4uZTcxYTdmY2Y4OGU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwogICAgIH0KIAotICAg
IHZvaWQgY29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gmLCBMYXlvdXRVbml0
JiBtYXhQb3NpdGlvblRvcCwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Cb3R0b20sCisgICAgdm9p
ZCBjb21wdXRlTG9naWNhbEJveEhlaWdodHMoTGVnYWN5Um9vdElubGluZUJveCYsIExheW91dFVu
aXQmIG1heFBvc2l0aW9uVG9wLCBMYXlvdXRVbml0JiBtYXhQb3NpdGlvbkJvdHRvbSwKICAgICAg
ICAgTGF5b3V0VW5pdCYgbWF4QXNjZW50LCBMYXlvdXRVbml0JiBtYXhEZXNjZW50LCBib29sJiBz
ZXRNYXhBc2NlbnQsIGJvb2wmIHNldE1heERlc2NlbnQsCiAgICAgICAgIGJvb2wgc3RyaWN0TW9k
ZSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBGb250QmFzZWxpbmUsIFZlcnRp
Y2FsUG9zaXRpb25DYWNoZSYpOwogICAgIHZvaWQgYWRqdXN0TWF4QXNjZW50QW5kRGVzY2VudChM
YXlvdXRVbml0JiBtYXhBc2NlbnQsIExheW91dFVuaXQmIG1heERlc2NlbnQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggYzhiYWQ5NjhkN2VmLi5hODE4
ZDMxM2ZiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAK
QEAgLTk3Myw3ICs5NzMsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJh
Y2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UAogICAgIC8vIGRyYXcg
aXRzIG93biBoaWdobGlnaHQuCiAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigp
OwogCi0gICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IHJvb3QoKTsKKyAgICBjb25z
dCBMZWdhY3lSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOwogICAgIExheW91dFVuaXQg
c2VsZWN0aW9uQm90dG9tID0gcm9vdEJveC5zZWxlY3Rpb25Cb3R0b20oKTsKICAgICBMYXlvdXRV
bml0IHNlbGVjdGlvblRvcCA9IHJvb3RCb3guc2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRp
bmdCbG9jaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3gu
Y3BwCmluZGV4IGMwMjI4Y2Y5ZThmNC4uN2I3NGU4MGI5MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcApAQCAtMjQsOSArMjQsOSBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIklubGlu
ZUZsb3dCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAi
UmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCi0jaW5jbHVk
ZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xODQsMTggKzE4NCwxOCBAQCB2
b2lkIExlZ2FjeUlubGluZUJveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZsb2F0IGR5KQog
ICAgICAgICBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpLm1vdmUoTGF5b3V0VW5pdChk
eCksIExheW91dFVuaXQoZHkpKTsKIH0KIAotY29uc3QgUm9vdElubGluZUJveCYgTGVnYWN5SW5s
aW5lQm94Ojpyb290KCkgY29uc3QKK2NvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIExlZ2FjeUlu
bGluZUJveDo6cm9vdCgpIGNvbnN0CiB7IAogICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAgcmV0
dXJuIHBhcmVudCgpLT5yb290KCk7Ci0gICAgcmV0dXJuIGRvd25jYXN0PFJvb3RJbmxpbmVCb3g+
KCp0aGlzKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8TGVnYWN5Um9vdElubGluZUJveD4oKnRoaXMp
OwogfQogCi1Sb290SW5saW5lQm94JiBMZWdhY3lJbmxpbmVCb3g6OnJvb3QoKQorTGVnYWN5Um9v
dElubGluZUJveCYgTGVnYWN5SW5saW5lQm94Ojpyb290KCkKIHsgCiAgICAgaWYgKHBhcmVudCgp
KQogICAgICAgICByZXR1cm4gcGFyZW50KCktPnJvb3QoKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8
Um9vdElubGluZUJveD4oKnRoaXMpOworICAgIHJldHVybiBkb3duY2FzdDxMZWdhY3lSb290SW5s
aW5lQm94PigqdGhpcyk7CiB9CiAKIGJvb2wgTGVnYWN5SW5saW5lQm94OjpuZXh0T25MaW5lRXhp
c3RzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJ
bmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guaApp
bmRleCBmYWMwY2JmODczYTIuLjk0ZWNlMzExYTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MZWdhY3lJbmxpbmVCb3guaApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIaXRUZXN0UmVzdWx0OwotY2xhc3MgUm9vdElubGluZUJveDsKK2NsYXNz
IExlZ2FjeVJvb3RJbmxpbmVCb3g7CiAKIC8vIExlZ2FjeUlubGluZUJveCByZXByZXNlbnRzIGEg
cmVjdGFuZ2xlIHRoYXQgb2NjdXJzIG9uIGEgbGluZS4gSXQgY29ycmVzcG9uZHMgdG8KIC8vIHNv
bWUgUmVuZGVyT2JqZWN0IChpLmUuLCBpdCByZXByZXNlbnRzIGEgcG9ydGlvbiBvZiB0aGF0IFJl
bmRlck9iamVjdCkuCkBAIC0xNDYsOCArMTQ2LDggQEAgcHVibGljOgogICAgIH0KICAgICB2b2lk
IHNldFBhcmVudChJbmxpbmVGbG93Qm94KiBwYXIpIHsgbV9wYXJlbnQgPSBwYXI7IH0KIAotICAg
IGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3QoKSBjb25zdDsKLSAgICBSb290SW5saW5lQm94JiBy
b290KCk7CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCgpIGNvbnN0OworICAg
IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3QoKTsKIAogICAgIC8vIHgoKSBpcyB0aGUgbGVmdCBz
aWRlIG9mIHRoZSBib3ggaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGluYXRlIHN5c3Rl
bS4KICAgICB2b2lkIHNldFgoZmxvYXQgeCkgeyBtX3RvcExlZnQuc2V0WCh4KTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCmluZGV4IGM1Y2Y2Zjg0
YjExZS4uYTZjNGM0ZjAyZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUxpbmVMYXlvdXQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0
OjphcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBpbnQgc3Rh
cnQKICAgICB9CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBMZWdhY3lMaW5l
TGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KCkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lSb290
SW5saW5lQm94PiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KCkKIHsKICAg
ICBpZiAoaXM8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSkgewogICAgICAgICBhdXRvIGJveCA9IG1h
a2VVbmlxdWU8U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4obV9mbG93
KSk7CkBAIC0xNDEsMTMgKzE0MSwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4g
TGVnYWN5TGluZUxheW91dDo6Y3JlYXRlUm9vdElubGluZUJveCgpCiAgICAgICAgIHJldHVybiBi
b3g7CiAgICAgfQogICAgICAgICAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxSb290SW5saW5lQm94
PihtX2Zsb3cpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeVJvb3RJbmxpbmVCb3g+KG1f
Zmxvdyk7CiB9CiAKLVJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlvdXQ6OmNyZWF0ZUFuZEFw
cGVuZFJvb3RJbmxpbmVCb3goKQorTGVnYWN5Um9vdElubGluZUJveCogTGVnYWN5TGluZUxheW91
dDo6Y3JlYXRlQW5kQXBwZW5kUm9vdElubGluZUJveCgpCiB7CiAgICAgYXV0byBuZXdSb290Qm94
ID0gY3JlYXRlUm9vdElubGluZUJveCgpOwotICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBu
ZXdSb290Qm94LmdldCgpOworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBuZXdS
b290Qm94LmdldCgpOwogICAgIG1fbGluZUJveGVzLmFwcGVuZExpbmVCb3goV1RGTW92ZShuZXdS
b290Qm94KSk7CiAKICAgICBpZiAoVU5MSUtFTFkoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKSkgJiYgZmlyc3RSb290Qm94KCkgPT0gcm9vdEJveCkgewpAQCAtMjkwLDcgKzI5
MCw3IEBAIHN0YXRpYyBib29sIHJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcihjb25zdCBCaWRpUnVu
TGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMpCiAgICAgcmV0dXJuIGVuZHNXaXRoSFRNTFNwYWNlcyh0
ZXh0LmNoYXJhY3RlcnMxNigpLCBwb3NpdGlvbiwgbGVuZ3RoKTsKIH0KIAotUm9vdElubGluZUJv
eCogTGVnYWN5TGluZUxheW91dDo6Y29uc3RydWN0TGluZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYg
YmlkaVJ1bnMsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbykKK0xlZ2FjeVJvb3RJbmxpbmVCb3gq
IExlZ2FjeUxpbmVMYXlvdXQ6OmNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJp
ZGlSdW5zLCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8pCiB7CiAgICAgQVNTRVJUKGJpZGlSdW5z
LmZpcnN0UnVuKCkpOwogCkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0
OjpzZXRNYXJnaW5zRm9yUnVieVJ1bihCaWRpUnVuKiBydW4sIFJlbmRlclJ1YnlSdW4mIHJlbmRl
cmUKICAgICBtX2Zsb3cuc2V0TWFyZ2luRW5kRm9yQ2hpbGQocmVuZGVyZXIsIExheW91dFVuaXQo
LWVuZE92ZXJoYW5nKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lkdGhG
b3JUZXh0UnVuKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSdW4qIHJ1biwgUmVuZGVyVGV4
dCYgcmVuZGVyZXIsIGZsb2F0IHhQb3MsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywKK3N0YXRp
YyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVC
b3gqIGxpbmVCb3gsIEJpZGlSdW4qIHJ1biwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGZsb2F0IHhQ
b3MsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJh
Y2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGlj
YWxQb3NpdGlvbkNhY2hlLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogewog
ICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+IGZhbGxiYWNrRm9udHM7CkBAIC01ODYsNyArNTg2LDcg
QEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0Ojp1cGRhdGVSdWJ5Rm9ySnVzdGlmaWVkVGV4dChSZW5k
ZXJSdWJ5UnVuJiBydWJ5UnVuLCBCaWRpUnUKICAgICBydWJ5UnVuLnNldE5lZWRzTGF5b3V0KE1h
cmtPbmx5VGhpcyk7CiAgICAgcm9vdEJveC5tYXJrRGlydHkoKTsKICAgICBpZiAoUmVuZGVyUnVi
eVRleHQqIHJ1YnlUZXh0ID0gcnVieVJ1bi5ydWJ5VGV4dCgpKSB7Ci0gICAgICAgIGlmIChSb290
SW5saW5lQm94KiB0ZXh0Um9vdEJveCA9IHJ1YnlUZXh0LT5maXJzdFJvb3RCb3goKSkKKyAgICAg
ICAgaWYgKExlZ2FjeVJvb3RJbmxpbmVCb3gqIHRleHRSb290Qm94ID0gcnVieVRleHQtPmZpcnN0
Um9vdEJveCgpKQogICAgICAgICAgICAgdGV4dFJvb3RCb3gtPm1hcmtEaXJ0eSgpOwogICAgIH0K
ICAgICBydWJ5UnVuLmxheW91dEJsb2NrKHRydWUpOwpAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQg
TGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1
biogZmlyc3RSdW4sIEJpZGlSCiAgICAgfQogfQogCi12b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OnVw
ZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0
IFRleHRBbGlnbk1vZGUmIHRleHRBbGlnbiwgY29uc3QgUm9vdElubGluZUJveCogcm9vdElubGlu
ZUJveCwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9h
dCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGludCBl
eHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQordm9pZCBMZWdhY3lMaW5lTGF5b3V0Ojp1cGRhdGVM
b2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQoUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBUZXh0
QWxpZ25Nb2RlJiB0ZXh0QWxpZ24sIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIHJvb3RJbmxp
bmVCb3gsIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxv
YXQmIHRvdGFsTG9naWNhbFdpZHRoLCBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpbnQg
ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCkKIHsKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bjsKICAgICBpZiAocm9vdElubGluZUJveCAmJiBmbG93LnN0eWxlKCkudW5pY29kZUJpZGkoKSA9
PSBQbGFpbnRleHQpCkBAIC02ODksNyArNjg5LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlTG9naWNh
bElubGluZVBvc2l0aW9ucyhSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBmbG9hdCYgbGluZUxvZ2kK
ICAgICBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2lj
YWxMZWZ0OwogfQogCi12b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rp
b25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZv
JiBsaW5lSW5mbywgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4s
IGJvb2wgcmVhY2hlZEVuZCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRC
b3hEYXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwg
V29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKK3ZvaWQgTGVnYWN5TGluZUxheW91
dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoTGVnYWN5Um9vdElubGlu
ZUJveCogbGluZUJveCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBCaWRpUnVuKiBmaXJzdFJ1
biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgYm9vbCByZWFjaGVkRW5kLCBHbHlwaE92ZXJm
bG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25D
YWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzKQogewogICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gdGV4dEFsaWdubWVudEZv
ckxpbmUoIXJlYWNoZWRFbmQgJiYgIWxpbmVCb3gtPmVuZHNXaXRoQnJlYWsoKSk7CiAgICAgCkBA
IC04NDEsNyArODQxLDcgQEAgc3RhdGljIGJvb2wgaXNMYXN0SW5GbG93UnVuKEJpZGlSdW4mIHJ1
blRvQ2hlY2spCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUJpZGlSdW4qIExlZ2FjeUxpbmVMYXlv
dXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVC
b3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24sIGZsb2F0JiBsaW5lTG9naWNhbExlZnQsCitCaWRpUnVuKiBMZWdhY3lMaW5lTGF5b3V0
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChMZWdhY3lSb290SW5s
aW5lQm94KiBsaW5lQm94LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIFRleHRBbGlnbk1vZGUg
dGV4dEFsaWduLCBmbG9hdCYgbGluZUxvZ2ljYWxMZWZ0LAogICAgIGZsb2F0JiBhdmFpbGFibGVM
b2dpY2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVu
LCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRp
Y2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlLAogICAgIFdvcmRNZWFzdXJl
bWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCiB7CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCBCaWRpUnVu
KiBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2Vn
bWVudChSb290SW5saW5lQgogICAgIHJldHVybiBydW47CiB9CiAKLXZvaWQgTGVnYWN5TGluZUxh
eW91dDo6cmVtb3ZlSW5saW5lQm94KEJpZGlSdW4mIHJ1biwgY29uc3QgUm9vdElubGluZUJveCYg
cm9vdExpbmVCb3gpIGNvbnN0Cit2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OnJlbW92ZUlubGluZUJv
eChCaWRpUnVuJiBydW4sIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RMaW5lQm94KSBj
b25zdAogewogICAgIGF1dG8qIGlubGluZUJveCA9IHJ1bi5ib3goKTsKICNpZiBBU1NFUlRfRU5B
QkxFRApAQCAtMTAzMSw3ICsxMDMxLDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0OjpyZW1vdmVJ
bmxpbmVCb3goQmlkaVJ1biYgcnVuLCBjb25zdCBSb290SW5saW5lQm94JiByb290TGkKICAgICB9
CiB9CiAKLXZvaWQgTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRp
b25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBmaXJzdFJ1biwgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSkKK3ZvaWQgTGVnYWN5TGluZUxheW91
dDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShMZWdhY3lSb290SW5saW5l
Qm94KiBsaW5lQm94LCBCaWRpUnVuKiBmaXJzdFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2Fs
UG9zaXRpb25DYWNoZSkKIHsKICAgICBtX2Zsb3cuc2V0TG9naWNhbEhlaWdodChsaW5lQm94LT5h
bGlnbkJveGVzSW5CbG9ja0RpcmVjdGlvbihtX2Zsb3cubG9naWNhbEhlaWdodCgpLCB0ZXh0Qm94
RGF0YU1hcCwgdmVydGljYWxQb3NpdGlvbkNhY2hlKSk7CiAKQEAgLTEyMzYsNyArMTIzNiw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQoSW5saW5lQmlk
aVJlc29sdmVyJiB0b3BSZXNvbHZlciwKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjb25zdHJ1Y3Rz
IGxpbmUgYm94ZXMgZm9yIGFsbCBvZiB0aGUgdGV4dCBydW5zIGluIHRoZSByZXNvbHZlciBhbmQg
Y29tcHV0ZXMgdGhlaXIgcG9zaXRpb24uCi1Sb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0
OjpjcmVhdGVMaW5lQm94ZXNGcm9tQmlkaVJ1bnModW5zaWduZWQgYmlkaUxldmVsLCBCaWRpUnVu
TGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBlbmQsIExpbmVJ
bmZvJiBsaW5lSW5mbywgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2Fj
aGUsIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFz
dXJlbWVudHMpCitMZWdhY3lSb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVM
aW5lQm94ZXNGcm9tQmlkaVJ1bnModW5zaWduZWQgYmlkaUxldmVsLCBCaWRpUnVuTGlzdDxCaWRp
UnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBlbmQsIExpbmVJbmZvJiBsaW5l
SW5mbywgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIEJpZGlS
dW4qIHRyYWlsaW5nU3BhY2VSdW4sIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMp
CiB7CiAgICAgaWYgKCFiaWRpUnVucy5ydW5Db3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTEyNDQsNyArMTI0NCw3IEBAIFJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlvdXQ6
OmNyZWF0ZUxpbmVCb3hlc0Zyb21CaWRpUnVucyh1bnNpZ25lZCBiaWRpTGV2ZWwsCiAgICAgLy8g
RklYTUU6IFdoeSBpcyB0aGlzIG9ubHkgZG9uZSB3aGVuIHdlIGhhZCBydW5zPwogICAgIGxpbmVJ
bmZvLnNldExhc3RMaW5lKCFlbmQucmVuZGVyZXIoKSk7CiAKLSAgICBSb290SW5saW5lQm94KiBs
aW5lQm94ID0gY29uc3RydWN0TGluZShiaWRpUnVucywgbGluZUluZm8pOworICAgIExlZ2FjeVJv
b3RJbmxpbmVCb3gqIGxpbmVCb3ggPSBjb25zdHJ1Y3RMaW5lKGJpZGlSdW5zLCBsaW5lSW5mbyk7
CiAgICAgaWYgKCFsaW5lQm94KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTI3OCwx
NCArMTI3OCwxNCBAQCBSb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5l
Qm94ZXNGcm9tQmlkaVJ1bnModW5zaWduZWQgYmlkaUxldmVsLAogICAgIHJldHVybiBsaW5lQm94
OwogfQogCi1zdGF0aWMgdm9pZCBkZWxldGVMaW5lUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgUm9vdElubGluZUJveCogc3RhcnRMaW5lLCBSb290SW5saW5lQm94KiBzdG9wTGlu
ZSA9IDApCitzdGF0aWMgdm9pZCBkZWxldGVMaW5lUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgTGVnYWN5Um9vdElubGluZUJveCogc3RhcnRMaW5lLCBMZWdhY3lSb290SW5saW5l
Qm94KiBzdG9wTGluZSA9IDApCiB7Ci0gICAgUm9vdElubGluZUJveCogYm94VG9EZWxldGUgPSBz
dGFydExpbmU7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogYm94VG9EZWxldGUgPSBzdGFydExp
bmU7CiAgICAgd2hpbGUgKGJveFRvRGVsZXRlICYmIGJveFRvRGVsZXRlICE9IHN0b3BMaW5lKSB7
CiAgICAgICAgIGxheW91dFN0YXRlLnVwZGF0ZVJlcGFpbnRSYW5nZUZyb21Cb3goYm94VG9EZWxl
dGUpOwogICAgICAgICAvLyBOb3RlOiBkZWxldGVMaW5lUmFuZ2UoZmlyc3RSb290Qm94KCkpIGlz
IG5vdCBpZGVudGljYWwgdG8gZGVsZXRlTGluZUJveFRyZWUoKS4KICAgICAgICAgLy8gZGVsZXRl
TGluZUJveFRyZWUgdXNlcyBuZXh0TGluZUJveCgpIGluc3RlYWQgb2YgbmV4dFJvb3RCb3goKSB3
aGVuIHRyYXZlcnNpbmcuCi0gICAgICAgIFJvb3RJbmxpbmVCb3gqIG5leHQgPSBib3hUb0RlbGV0
ZS0+bmV4dFJvb3RCb3goKTsKKyAgICAgICAgTGVnYWN5Um9vdElubGluZUJveCogbmV4dCA9IGJv
eFRvRGVsZXRlLT5uZXh0Um9vdEJveCgpOwogICAgICAgICBib3hUb0RlbGV0ZS0+ZGVsZXRlTGlu
ZSgpOwogICAgICAgICBib3hUb0RlbGV0ZSA9IG5leHQ7CiAgICAgfQpAQCAtMTMwOSwxMSArMTMw
OSwxMSBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dFJ1bnNBbmRGbG9hdHMoTGluZUxh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYm9vbCBoYQogewogICAgIC8vIFdlIHdhbnQgdG8gc2tp
cCBhaGVhZCB0byB0aGUgZmlyc3QgZGlydHkgbGluZQogICAgIElubGluZUJpZGlSZXNvbHZlciBy
ZXNvbHZlcjsKLSAgICBSb290SW5saW5lQm94KiBzdGFydExpbmUgPSBkZXRlcm1pbmVTdGFydFBv
c2l0aW9uKGxheW91dFN0YXRlLCByZXNvbHZlcik7CisgICAgTGVnYWN5Um9vdElubGluZUJveCog
c3RhcnRMaW5lID0gZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihsYXlvdXRTdGF0ZSwgcmVzb2x2ZXIp
OwogICAgIAogICAgIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzID0gMDsKICAg
ICBpZiAoc3RhcnRMaW5lKSB7Ci0gICAgICAgIGZvciAoUm9vdElubGluZUJveCogbGluZSA9IHN0
YXJ0TGluZS0+cHJldlJvb3RCb3goKTsgbGluZSAmJiBsaW5lLT5pc0h5cGhlbmF0ZWQoKTsgbGlu
ZSA9IGxpbmUtPnByZXZSb290Qm94KCkpCisgICAgICAgIGZvciAoYXV0byogbGluZSA9IHN0YXJ0
TGluZS0+cHJldlJvb3RCb3goKTsgbGluZSAmJiBsaW5lLT5pc0h5cGhlbmF0ZWQoKTsgbGluZSA9
IGxpbmUtPnByZXZSb290Qm94KCkpCiAgICAgICAgICAgICBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRM
aW5lcysrOwogICAgIH0KIApAQCAtMTQ1NSw3ICsxNDU1LDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5
b3V0OjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLAogICAgICAgICAgICAgLy8gaW5saW5lIGZsb3cgYm94ZXMuCiAKICAgICAgICAgICAgIExh
eW91dFVuaXQgb2xkTG9naWNhbEhlaWdodCA9IG1fZmxvdy5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAg
ICAgICAgICBSb290SW5saW5lQm94KiBsaW5lQm94ID0gY3JlYXRlTGluZUJveGVzRnJvbUJpZGlS
dW5zKHJlc29sdmVyLnN0YXR1cygpLmNvbnRleHQtPmxldmVsKCksIGJpZGlSdW5zLCBlbmQsIGxh
eW91dFN0YXRlLmxpbmVJbmZvKCksIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgdHJhaWxpbmdTcGFj
ZVJ1biwgd29yZE1lYXN1cmVtZW50cyk7CisgICAgICAgICAgICBMZWdhY3lSb290SW5saW5lQm94
KiBsaW5lQm94ID0gY3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5zKHJlc29sdmVyLnN0YXR1cygp
LmNvbnRleHQtPmxldmVsKCksIGJpZGlSdW5zLCBlbmQsIGxheW91dFN0YXRlLmxpbmVJbmZvKCks
IHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgdHJhaWxpbmdTcGFjZVJ1biwgd29yZE1lYXN1cmVtZW50
cyk7CiAKICAgICAgICAgICAgIGJpZGlSdW5zLmNsZWFyKCk7CiAgICAgICAgICAgICByZXNvbHZl
ci5tYXJrQ3VycmVudFJ1bkVtcHR5KCk7IC8vIEZJWE1FOiBUaGlzIGNhbiBwcm9iYWJseSBiZSBy
ZXBsYWNlZCBieSBhbiBBU1NFUlQgKG9yIGp1c3QgcmVtb3ZlZCkuCkBAIC0xNTM3LDExICsxNTM3
LDExIEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2Uo
TGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwKICAgICAgICAgLy8gSG93ZXZlciwgd2UnbGwg
cHJpb3JpdGl6ZSBvcnBoYW5zIC0gc28gbm90aGluZyB3ZSBkbyBoZXJlIHNob3VsZCBjcmVhdGUK
ICAgICAgICAgLy8gYSBuZXcgb3JwaGFuLgogCi0gICAgICAgIFJvb3RJbmxpbmVCb3gqIGxpbmVC
b3ggPSBsYXN0Um9vdEJveCgpOworICAgICAgICBMZWdhY3lSb290SW5saW5lQm94KiBsaW5lQm94
ID0gbGFzdFJvb3RCb3goKTsKIAogICAgICAgICAvLyBDb3VudCBmcm9tIHRoZSBlbmQgb2YgdGhl
IGJsb2NrIGJhY2t3YXJkcywgdG8gc2VlIGhvdyBtYW55IGhhbmdpbmcKICAgICAgICAgLy8gbGlu
ZXMgd2UgaGF2ZS4KLSAgICAgICAgUm9vdElubGluZUJveCogZmlyc3RMaW5lSW5CbG9jayA9IGZp
cnN0Um9vdEJveCgpOworICAgICAgICBMZWdhY3lSb290SW5saW5lQm94KiBmaXJzdExpbmVJbkJs
b2NrID0gZmlyc3RSb290Qm94KCk7CiAgICAgICAgIGludCBudW1MaW5lc0hhbmdpbmcgPSAxOwog
ICAgICAgICB3aGlsZSAobGluZUJveCAmJiBsaW5lQm94ICE9IGZpcnN0TGluZUluQmxvY2sgJiYg
IWxpbmVCb3gtPmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpKSB7CiAgICAgICAgICAgICArK251bUxp
bmVzSGFuZ2luZzsKQEAgLTE1NjYsNyArMTU2Niw3IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6
bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwK
ICAgICAgICAgICAgIC8vIGxpbmVzIHRoZXJlIGFyZSBvbiB0aGUgcHJldmlvdXMgcGFnZSwgYW5k
IGhvdyBtYW55IHdlIG5lZWQKICAgICAgICAgICAgIC8vIHRvIHN0ZWFsLgogICAgICAgICAgICAg
aW50IG51bUxpbmVzTmVlZGVkID0gc3R5bGUoKS53aWRvd3MoKSAtIG51bUxpbmVzSGFuZ2luZzsK
LSAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIGN1cnJlbnRGaXJzdExpbmVPZk5ld1BhZ2UgPSBs
aW5lQm94OworICAgICAgICAgICAgTGVnYWN5Um9vdElubGluZUJveCogY3VycmVudEZpcnN0TGlu
ZU9mTmV3UGFnZSA9IGxpbmVCb3g7CiAKICAgICAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIg
b2YgbGluZXMgaW4gdGhlIHByZXZpb3VzIHBhZ2UuCiAgICAgICAgICAgICBsaW5lQm94ID0gbGlu
ZUJveC0+cHJldlJvb3RCb3goKTsKQEAgLTE2MDAsNyArMTYwMCw3IEBAIHZvaWQgTGVnYWN5TGlu
ZUxheW91dDo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwKICAgICBtX2Zsb3cuY2xlYXJEaWRCcmVha0F0TGluZVRvQXZvaWRXaWRvdygpOwog
fQogCi12b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OnJlYXR0YWNoQ2xlYW5MaW5lRmxvYXRzKFJvb3RJ
bmxpbmVCb3gmIGNsZWFuTGluZSwgTGF5b3V0VW5pdCBkZWx0YSwgYm9vbCBpc0ZpcnN0Q2xlYW5M
aW5lKQordm9pZCBMZWdhY3lMaW5lTGF5b3V0OjpyZWF0dGFjaENsZWFuTGluZUZsb2F0cyhMZWdh
Y3lSb290SW5saW5lQm94JiBjbGVhbkxpbmUsIExheW91dFVuaXQgZGVsdGEsIGJvb2wgaXNGaXJz
dENsZWFuTGluZSkKIHsKICAgICBhdXRvKiBjbGVhbkxpbmVGbG9hdHMgPSBjbGVhbkxpbmUuZmxv
YXRzUHRyKCk7CiAgICAgaWYgKCFjbGVhbkxpbmVGbG9hdHMpCkBAIC0xODA4LDcgKzE4MDgsNyBA
QCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dExpbmVCb3hlcyhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQmIHJlcGFpbgogICAgICAgICBjaGVja0xpbmVzRm9yVGV4dE92ZXJm
bG93KCk7CiB9CiAKLXZvaWQgTGVnYWN5TGluZUxheW91dDo6Y2hlY2tGbG9hdEluQ2xlYW5MaW5l
KFJvb3RJbmxpbmVCb3gmIGNsZWFuTGluZSwgUmVuZGVyQm94JiBmbG9hdEJveE9uQ2xlYW5MaW5l
LCBGbG9hdFdpdGhSZWN0JiBtYXRjaGluZ0Zsb2F0V2l0aFJlY3QsCit2b2lkIExlZ2FjeUxpbmVM
YXlvdXQ6OmNoZWNrRmxvYXRJbkNsZWFuTGluZShMZWdhY3lSb290SW5saW5lQm94JiBjbGVhbkxp
bmUsIFJlbmRlckJveCYgZmxvYXRCb3hPbkNsZWFuTGluZSwgRmxvYXRXaXRoUmVjdCYgbWF0Y2hp
bmdGbG9hdFdpdGhSZWN0LAogICAgIGJvb2wmIGVuY291bnRlcmVkTmV3RmxvYXQsIGJvb2wmIGRp
cnRpZWRCeUZsb2F0KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFm
bG9hdEJveE9uQ2xlYW5MaW5lLnN0eWxlKCkuZGVsZXRpb25IYXNCZWd1bigpKTsKQEAgLTE4Mzgs
MTAgKzE4MzgsMTAgQEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0OjpjaGVja0Zsb2F0SW5DbGVhbkxp
bmUoUm9vdElubGluZUJveCYgY2xlYW5MaW5lLCBSZW5kZXJCb3gKICAgICBkaXJ0aWVkQnlGbG9h
dCA9IHRydWU7CiB9CiAKLVJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlvdXQ6OmRldGVybWlu
ZVN0YXJ0UG9zaXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5saW5lQmlkaVJl
c29sdmVyJiByZXNvbHZlcikKK0xlZ2FjeVJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlvdXQ6
OmRldGVybWluZVN0YXJ0UG9zaXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKIHsKLSAgICBSb290SW5saW5lQm94KiBjdXJyZW50
TGluZSA9IG51bGxwdHI7Ci0gICAgUm9vdElubGluZUJveCogbGFzdExpbmUgPSBudWxscHRyOwor
ICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGN1cnJlbnRMaW5lID0gbnVsbHB0cjsKKyAgICBMZWdh
Y3lSb290SW5saW5lQm94KiBsYXN0TGluZSA9IG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTogVGhp
cyBlbnRpcmUgZmxvYXQtY2hlY2tpbmcgYmxvY2sgbmVlZHMgdG8gYmUgYnJva2VuIGludG8gYSBu
ZXcgZnVuY3Rpb24uCiAgICAgYXV0byYgZmxvYXRzID0gbGF5b3V0U3RhdGUuZmxvYXRMaXN0KCk7
CkBAIC0xOTE2LDcgKzE5MTYsNyBAQCBSb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0Ojpk
ZXRlcm1pbmVTdGFydFBvc2l0aW9uKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0UwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmIChjdXJyZW50TGluZSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSBh
IGRpcnR5IGxpbmUuCi0gICAgICAgICAgICBpZiAoUm9vdElubGluZUJveCogcHJldlJvb3RCb3gg
PSBjdXJyZW50TGluZS0+cHJldlJvb3RCb3goKSkgeworICAgICAgICAgICAgaWYgKExlZ2FjeVJv
b3RJbmxpbmVCb3gqIHByZXZSb290Qm94ID0gY3VycmVudExpbmUtPnByZXZSb290Qm94KCkpIHsK
ICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgcHJldmlvdXMgbGluZS4KICAgICAgICAgICAg
ICAgICBpZiAoIWRpcnRpZWRCeUZsb2F0ICYmICghcHJldlJvb3RCb3gtPmVuZHNXaXRoQnJlYWso
KQogICAgICAgICAgICAgICAgICAgICB8fCAhcHJldlJvb3RCb3gtPmxpbmVCcmVha09iaigpCkBA
IC0xOTM1LDcgKzE5MzUsNyBAQCBSb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0OjpkZXRl
cm1pbmVTdGFydFBvc2l0aW9uKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0UwogICAgIGlmICghZmxv
YXRzLmlzRW1wdHkoKSkgewogICAgICAgICBMYXlvdXRVbml0IHNhdmVkTG9naWNhbEhlaWdodCA9
IG1fZmxvdy5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIC8vIFJlc3RvcmUgZmxvYXRzIGZyb20g
Y2xlYW4gbGluZXMuCi0gICAgICAgIFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBmaXJzdFJvb3RCb3go
KTsKKyAgICAgICAgTGVnYWN5Um9vdElubGluZUJveCogbGluZSA9IGZpcnN0Um9vdEJveCgpOwog
ICAgICAgICB3aGlsZSAobGluZSAhPSBjdXJyZW50TGluZSkgewogICAgICAgICAgICAgaWYgKGF1
dG8qIGNsZWFuTGluZUZsb2F0cyA9IGxpbmUtPmZsb2F0c1B0cigpKSB7CiAgICAgICAgICAgICAg
ICAgZm9yIChhdXRvJiBmbG9hdGluZ0JveCA6ICpjbGVhbkxpbmVGbG9hdHMpIHsKQEAgLTE5NzMs
NyArMTk3Myw3IEBAIFJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlvdXQ6OmRldGVybWluZVN0
YXJ0UG9zaXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTCiAgICAgcmV0dXJuIGN1cnJlbnRM
aW5lOwogfQogCi12b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmRldGVybWluZUVuZFBvc2l0aW9uKExp
bmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIFJvb3RJbmxpbmVCb3gqIHN0YXJ0TGluZSwgSW5s
aW5lSXRlcmF0b3ImIGNsZWFuTGluZVN0YXJ0LCBCaWRpU3RhdHVzJiBjbGVhbkxpbmVCaWRpU3Rh
dHVzKQordm9pZCBMZWdhY3lMaW5lTGF5b3V0OjpkZXRlcm1pbmVFbmRQb3NpdGlvbihMaW5lTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBMZWdhY3lSb290SW5saW5lQm94KiBzdGFydExpbmUsIElu
bGluZUl0ZXJhdG9yJiBjbGVhbkxpbmVTdGFydCwgQmlkaVN0YXR1cyYgY2xlYW5MaW5lQmlkaVN0
YXR1cykKIHsKICAgICBhdXRvIGl0ZXJhdG9yRm9yRmlyc3REaXJ0eUZsb2F0ID0gW10oTGluZUxh
eW91dFN0YXRlOjpGbG9hdExpc3QmIGZsb2F0cykgewogICAgICAgICBhdXRvIGxhc3RDbGVhbkZs
b2F0ID0gZmxvYXRzLmxhc3RDbGVhbkZsb2F0KCk7CkBAIC0xOTg3LDggKzE5ODcsOCBAQCB2b2lk
IExlZ2FjeUxpbmVMYXlvdXQ6OmRldGVybWluZUVuZFBvc2l0aW9uKExpbmVMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIFJvb3RJbgogICAgIEFTU0VSVCghbGF5b3V0U3RhdGUuZW5kTGluZSgpKTsK
ICAgICBhdXRvIGZsb2F0c0l0ZXJhdG9yID0gaXRlcmF0b3JGb3JGaXJzdERpcnR5RmxvYXQobGF5
b3V0U3RhdGUuZmxvYXRMaXN0KCkpOwogICAgIGF1dG8gZW5kID0gbGF5b3V0U3RhdGUuZmxvYXRM
aXN0KCkuZW5kKCk7Ci0gICAgUm9vdElubGluZUJveCogbGFzdExpbmUgPSBudWxscHRyOwotICAg
IGZvciAoUm9vdElubGluZUJveCogY3VycmVudExpbmUgPSBzdGFydExpbmUtPm5leHRSb290Qm94
KCk7IGN1cnJlbnRMaW5lOyBjdXJyZW50TGluZSA9IGN1cnJlbnRMaW5lLT5uZXh0Um9vdEJveCgp
KSB7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbGFzdExpbmUgPSBudWxscHRyOworICAgIGZv
ciAoYXV0byogY3VycmVudExpbmUgPSBzdGFydExpbmUtPm5leHRSb290Qm94KCk7IGN1cnJlbnRM
aW5lOyBjdXJyZW50TGluZSA9IGN1cnJlbnRMaW5lLT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAg
IGlmICghY3VycmVudExpbmUtPmlzRGlydHkoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGNs
ZWFuTGluZUZsb2F0cyA9IGN1cnJlbnRMaW5lLT5mbG9hdHNQdHIoKSkgewogICAgICAgICAgICAg
ICAgIGJvb2wgZW5jb3VudGVyZWROZXdGbG9hdCA9IGZhbHNlOwpAQCAtMjAxNSwxMiArMjAxNSwx
MiBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmRldGVybWluZUVuZFBvc2l0aW9uKExpbmVMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIFJvb3RJbgogCiAgICAgLy8gQXQgdGhpcyBwb2ludCwgfGxh
c3R8IGlzIHRoZSBmaXJzdCBsaW5lIGluIGEgcnVuIG9mIGNsZWFuIGxpbmVzIHRoYXQgZW5kcyB3
aXRoIHRoZSBsYXN0IGxpbmUKICAgICAvLyBpbiB0aGUgYmxvY2suCi0gICAgUm9vdElubGluZUJv
eCogcHJldmlvdXNMaW5lID0gbGFzdExpbmUtPnByZXZSb290Qm94KCk7CisgICAgTGVnYWN5Um9v
dElubGluZUJveCogcHJldmlvdXNMaW5lID0gbGFzdExpbmUtPnByZXZSb290Qm94KCk7CiAgICAg
Y2xlYW5MaW5lU3RhcnQgPSBJbmxpbmVJdGVyYXRvcigmbV9mbG93LCBwcmV2aW91c0xpbmUtPmxp
bmVCcmVha09iaigpLCBwcmV2aW91c0xpbmUtPmxpbmVCcmVha1BvcygpKTsKICAgICBjbGVhbkxp
bmVCaWRpU3RhdHVzID0gcHJldmlvdXNMaW5lLT5saW5lQnJlYWtCaWRpU3RhdHVzKCk7CiAgICAg
bGF5b3V0U3RhdGUuc2V0RW5kTGluZUxvZ2ljYWxUb3AocHJldmlvdXNMaW5lLT5saW5lQm94Qm90
dG9tKCkpOwogCi0gICAgZm9yIChSb290SW5saW5lQm94KiBsaW5lID0gbGFzdExpbmU7IGxpbmU7
IGxpbmUgPSBsaW5lLT5uZXh0Um9vdEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBsaW5lID0gbGFz
dExpbmU7IGxpbmU7IGxpbmUgPSBsaW5lLT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgIC8vIERp
c2Nvbm5lY3QgYWxsIGxpbmUgYm94ZXMgZnJvbSB0aGVpciByZW5kZXIgb2JqZWN0cyB3aGlsZSBw
cmVzZXJ2aW5nIHRoZWlyIGNvbm5lY3Rpb25zIHRvIG9uZSBhbm90aGVyLgogICAgICAgICBsaW5l
LT5leHRyYWN0TGluZSgpOwogICAgIH0KQEAgLTIwMzUsNyArMjAzNSw3IEBAIGJvb2wgTGVnYWN5
TGluZUxheW91dDo6Y2hlY2tQYWdpbmF0aW9uQW5kRmxvYXRzQXRFbmRMaW5lKExpbmVMYXlvdXRT
dGF0ZSYgbGF5b3V0CiAgICAgaWYgKHBhZ2luYXRlZCAmJiBsYXlvdXRTdGF0ZS5mcmFnbWVudGVk
RmxvdygpKSB7CiAgICAgICAgIC8vIENoZWNrIGFsbCBsaW5lcyBmcm9tIGhlcmUgdG8gdGhlIGVu
ZCwgYW5kIHNlZSBpZiB0aGUgaHlwb3RoZXRpY2FsIG5ldyBwb3NpdGlvbiBmb3IgdGhlIGxpbmVz
IHdpbGwgcmVzdWx0CiAgICAgICAgIC8vIGluIGEgZGlmZmVyZW50IGF2YWlsYWJsZSBsaW5lIHdp
ZHRoLgotICAgICAgICBmb3IgKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3ggPSBsYXlvdXRTdGF0ZS5l
bmRMaW5lKCk7IGxpbmVCb3g7IGxpbmVCb3ggPSBsaW5lQm94LT5uZXh0Um9vdEJveCgpKSB7Cisg
ICAgICAgIGZvciAoYXV0byogbGluZUJveCA9IGxheW91dFN0YXRlLmVuZExpbmUoKTsgbGluZUJv
eDsgbGluZUJveCA9IGxpbmVCb3gtPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgICAgIGlmIChw
YWdpbmF0ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzbid0IHRoZSByZWFsIG1vdmUg
d2UncmUgZ29pbmcgdG8gZG8sIHNvIGRvbid0IHVwZGF0ZSB0aGUgbGluZSBib3gncyBwYWdpbmF0
aW9uCiAgICAgICAgICAgICAgICAgLy8gc3RydXQgeWV0LgpAQCAtMjA1Niw4ICsyMDU2LDggQEAg
Ym9vbCBMZWdhY3lMaW5lTGF5b3V0OjpjaGVja1BhZ2luYXRpb25BbmRGbG9hdHNBdEVuZExpbmUo
TGluZUxheW91dFN0YXRlJiBsYXlvdXQKICAgICAvLyBTZWUgaWYgYW55IGZsb2F0cyBlbmQgaW4g
dGhlIHJhbmdlIGFsb25nIHdoaWNoIHdlIHdhbnQgdG8gc2hpZnQgdGhlIGxpbmVzIHZlcnRpY2Fs
bHkuCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wID0gc3RkOjptaW4obV9mbG93LmxvZ2ljYWxI
ZWlnaHQoKSwgbGF5b3V0U3RhdGUuZW5kTGluZUxvZ2ljYWxUb3AoKSk7CiAKLSAgICBSb290SW5s
aW5lQm94KiBsYXN0TGluZSA9IGxheW91dFN0YXRlLmVuZExpbmUoKTsKLSAgICB3aGlsZSAoUm9v
dElubGluZUJveCogbmV4dExpbmUgPSBsYXN0TGluZS0+bmV4dFJvb3RCb3goKSkKKyAgICBMZWdh
Y3lSb290SW5saW5lQm94KiBsYXN0TGluZSA9IGxheW91dFN0YXRlLmVuZExpbmUoKTsKKyAgICB3
aGlsZSAoTGVnYWN5Um9vdElubGluZUJveCogbmV4dExpbmUgPSBsYXN0TGluZS0+bmV4dFJvb3RC
b3goKSkKICAgICAgICAgbGFzdExpbmUgPSBuZXh0TGluZTsKIAogICAgIExheW91dFVuaXQgbG9n
aWNhbEJvdHRvbSA9IGxhc3RMaW5lLT5saW5lQm94Qm90dG9tKCkgKyBhYnNvbHV0ZVZhbHVlKGxp
bmVEZWx0YSk7CkBAIC0yMDczLDcgKzIwNzMsNyBAQCBib29sIExlZ2FjeUxpbmVMYXlvdXQ6OmNo
ZWNrUGFnaW5hdGlvbkFuZEZsb2F0c0F0RW5kTGluZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIExlZ2FjeUxpbmVMYXlvdXQ6OmxpbmVXaWR0aEZv
clBhZ2luYXRlZExpbmVDaGFuZ2VkKFJvb3RJbmxpbmVCb3gqIHJvb3RCb3gsIExheW91dFVuaXQg
bGluZURlbHRhLCBSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cpIGNvbnN0Citi
b29sIExlZ2FjeUxpbmVMYXlvdXQ6OmxpbmVXaWR0aEZvclBhZ2luYXRlZExpbmVDaGFuZ2VkKExl
Z2FjeVJvb3RJbmxpbmVCb3gqIHJvb3RCb3gsIExheW91dFVuaXQgbGluZURlbHRhLCBSZW5kZXJG
cmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cpIGNvbnN0CiB7CiAgICAgaWYgKCFmcmFnbWVu
dGVkRmxvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA5Niw4ICsyMDk2LDggQEAgYm9v
bCBMZWdhY3lMaW5lTGF5b3V0OjptYXRjaGVkRW5kTGluZShMaW5lTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBJbmxpbmUKICAgICAvLyBUaGUgZmlyc3QgY2xlYW4gbGluZSBkb2Vzbid0
IG1hdGNoLCBidXQgd2UgY2FuIGNoZWNrIGEgaGFuZGZ1bCBvZiBmb2xsb3dpbmcgbGluZXMgdG8g
dHJ5CiAgICAgLy8gdG8gbWF0Y2ggYmFjayB1cC4KICAgICBzdGF0aWMgY29uc3QgaW50IG51bUxp
bmVzID0gODsgLy8gVGhlICMgb2YgbGluZXMgd2UncmUgd2lsbGluZyB0byBtYXRjaCBhZ2FpbnN0
LgotICAgIFJvb3RJbmxpbmVCb3gqIG9yaWdpbmFsRW5kTGluZSA9IGxheW91dFN0YXRlLmVuZExp
bmUoKTsKLSAgICBSb290SW5saW5lQm94KiBsaW5lID0gb3JpZ2luYWxFbmRMaW5lOworICAgIExl
Z2FjeVJvb3RJbmxpbmVCb3gqIG9yaWdpbmFsRW5kTGluZSA9IGxheW91dFN0YXRlLmVuZExpbmUo
KTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBsaW5lID0gb3JpZ2luYWxFbmRMaW5lOwogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtTGluZXMgJiYgbGluZTsgaSsrLCBsaW5lID0gbGluZS0+
bmV4dFJvb3RCb3goKSkgewogICAgICAgICBpZiAobGluZS0+bGluZUJyZWFrT2JqKCkgPT0gcmVz
b2x2ZXIucG9zaXRpb24oKS5yZW5kZXJlcigpICYmIGxpbmUtPmxpbmVCcmVha1BvcygpID09IHJl
c29sdmVyLnBvc2l0aW9uKCkub2Zmc2V0KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBt
YXRjaC4KQEAgLTIxMDUsNyArMjEwNSw3IEBAIGJvb2wgTGVnYWN5TGluZUxheW91dDo6bWF0Y2hl
ZEVuZExpbmUoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyAuLi5idXQgdGhlIGJpZGkgc3RhdGUgZG9lc24n
dCBtYXRjaC4KICAgICAgICAgICAgIAogICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7
Ci0gICAgICAgICAgICBSb290SW5saW5lQm94KiByZXN1bHQgPSBsaW5lLT5uZXh0Um9vdEJveCgp
OworICAgICAgICAgICAgTGVnYWN5Um9vdElubGluZUJveCogcmVzdWx0ID0gbGluZS0+bmV4dFJv
b3RCb3goKTsKICAgICAgICAgICAgIGxheW91dFN0YXRlLnNldEVuZExpbmUocmVzdWx0KTsKICAg
ICAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBsYXlvdXRTdGF0ZS5zZXRF
bmRMaW5lTG9naWNhbFRvcChsaW5lLT5saW5lQm94Qm90dG9tKCkpOwpAQCAtMjEyOSw3ICsyMTI5
LDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJl
bigpCiAgICAgICAgIGVuZFBhZGRpbmcgPSBtX2Zsb3cuZW5kUGFkZGluZ1dpZHRoRm9yQ2FyZXQo
KTsKICAgICBpZiAobV9mbG93Lmhhc092ZXJmbG93Q2xpcCgpICYmICFlbmRQYWRkaW5nICYmIG1f
Zmxvdy5lbGVtZW50KCkgJiYgbV9mbG93LmVsZW1lbnQoKS0+aXNSb290RWRpdGFibGVFbGVtZW50
KCkgJiYgc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgIGVuZFBhZGRp
bmcgPSAxOwotICAgIGZvciAoUm9vdElubGluZUJveCogY3VyciA9IGZpcnN0Um9vdEJveCgpOyBj
dXJyOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkgeworICAgIGZvciAoYXV0byogY3VyciA9
IGZpcnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkgewogICAg
ICAgICBtX2Zsb3cuYWRkTGF5b3V0T3ZlcmZsb3coY3Vyci0+cGFkZGVkTGF5b3V0T3ZlcmZsb3dS
ZWN0KGVuZFBhZGRpbmcpKTsKICAgICAgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdt
ZW50ID0gbV9mbG93LmVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCkgPyBjdXJyLT5jb250YWluaW5n
RnJhZ21lbnQoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChmcmFnbWVudCkKQEAgLTIxNTIsNyAr
MjE1Miw3IEBAIHNpemVfdCBMZWdhY3lMaW5lTGF5b3V0OjpsaW5lQ291bnQoKSBjb25zdAogICAg
IHJldHVybiBjb3VudDsKIH0KIAotc2l6ZV90IExlZ2FjeUxpbmVMYXlvdXQ6OmxpbmVDb3VudFVu
dGlsKGNvbnN0IFJvb3RJbmxpbmVCb3gqIHN0b3BSb290SW5saW5lQm94KSBjb25zdAorc2l6ZV90
IExlZ2FjeUxpbmVMYXlvdXQ6OmxpbmVDb3VudFVudGlsKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVC
b3gqIHN0b3BSb290SW5saW5lQm94KSBjb25zdAogewogICAgIHNpemVfdCBjb3VudCA9IDA7CiAg
ICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdFJvb3RCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRS
b290Qm94KCkpIHsKQEAgLTIxNjksNyArMjE2OSw3IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6
ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMoKQogICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0g
c3R5bGUoKS50ZXh0QWxpZ24oKTsKICAgICBib29sIGx0ciA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpOwogICAgIEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0ID0gSW5k
ZW50VGV4dDsKLSAgICBmb3IgKFJvb3RJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdFJvb3RCb3goKTsg
Y3VycjsgY3VyciA9IGN1cnItPm5leHRSb290Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIGN1cnIg
PSBmaXJzdFJvb3RCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRSb290Qm94KCkpIHsKICAg
ICAgICAgaWYgKGN1cnItPmhhc0VsbGlwc2lzQm94KCkpIHsKICAgICAgICAgICAgIGN1cnItPmNs
ZWFyVHJ1bmNhdGlvbigpOwogCkBAIC0yMjA1LDcgKzIyMDUsNyBAQCB2b2lkIExlZ2FjeUxpbmVM
YXlvdXQ6OmNoZWNrTGluZXNGb3JUZXh0T3ZlcmZsb3coKQogICAgIGJvb2wgbHRyID0gc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24g
PSBzdHlsZSgpLnRleHRBbGlnbigpOwogICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1ZTsKLSAgICBm
b3IgKFJvb3RJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdFJvb3RCb3goKTsgY3VycjsgY3VyciA9IGN1
cnItPm5leHRSb290Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIGN1cnIgPSBmaXJzdFJvb3RCb3go
KTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgSW5kZW50VGV4
dE9yTm90IHNob3VsZEluZGVudFRleHQgPSBmaXJzdExpbmUgPyBJbmRlbnRUZXh0IDogRG9Ob3RJ
bmRlbnRUZXh0OwogICAgICAgICBMYXlvdXRVbml0IGJsb2NrUmlnaHRFZGdlID0gbV9mbG93Lmxv
Z2ljYWxSaWdodE9mZnNldEZvckxpbmUoY3Vyci0+bGluZVRvcCgpLCBzaG91bGRJbmRlbnRUZXh0
KTsKICAgICAgICAgTGF5b3V0VW5pdCBibG9ja0xlZnRFZGdlID0gbV9mbG93LmxvZ2ljYWxMZWZ0
T2Zmc2V0Rm9yTGluZShjdXJyLT5saW5lVG9wKCksIHNob3VsZEluZGVudFRleHQpOwpAQCAtMjI4
OSw3ICsyMjg5LDcgQEAgYm9vbCBMZWdhY3lMaW5lTGF5b3V0Ojpwb3NpdGlvbk5ld0Zsb2F0T25M
aW5lKGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBuZXdGbG9hdCwgRmwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBMZWdhY3lMaW5lTGF5b3V0Ojp1cGRhdGVGcmFnbWVudEZvckxpbmUoUm9vdElu
bGluZUJveCogbGluZUJveCkgY29uc3QKK3ZvaWQgTGVnYWN5TGluZUxheW91dDo6dXBkYXRlRnJh
Z21lbnRGb3JMaW5lKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGxpbmVCb3gpOwogCkBAIC0yMzAyLDcgKzIzMDIsNyBAQCB2b2lkIExlZ2FjeUxpbmVM
YXlvdXQ6OnVwZGF0ZUZyYWdtZW50Rm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94KSBjb25z
dAogICAgICAgICAgICAgbGluZUJveC0+Y2xlYXJDb250YWluaW5nRnJhZ21lbnQoKTsKICAgICB9
CiAKLSAgICBSb290SW5saW5lQm94KiBwcmV2TGluZUJveCA9IGxpbmVCb3gtPnByZXZSb290Qm94
KCk7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogcHJldkxpbmVCb3ggPSBsaW5lQm94LT5wcmV2
Um9vdEJveCgpOwogICAgIGlmICghcHJldkxpbmVCb3gpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmgKaW5kZXggYTYyMmI4OWMx
YjZmLi5kMjA2NjI3YjRjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lMaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxp
bmVMYXlvdXQuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMaW5lTGF5b3V0U3RhdGU7CiBjbGFz
cyBSZW5kZXJCbG9ja0Zsb3c7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJSdWJ5
UnVuOwotY2xhc3MgUm9vdElubGluZUJveDsKK2NsYXNzIExlZ2FjeVJvb3RJbmxpbmVCb3g7CiBj
bGFzcyBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGU7CiBzdHJ1Y3QgQmlkaVN0YXR1czsKIHN0cnVjdCBX
b3JkTWVhc3VyZW1lbnQ7CkBAIC02MSw1MSArNjEsNTEgQEAgcHVibGljOgogICAgIFJlbmRlckxp
bmVCb3hMaXN0JiBsaW5lQm94ZXMoKSB7IHJldHVybiBtX2xpbmVCb3hlczsgfQogICAgIGNvbnN0
IFJlbmRlckxpbmVCb3hMaXN0JiBsaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hl
czsgfQogCi0gICAgUm9vdElubGluZUJveCogZmlyc3RSb290Qm94KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8Um9vdElubGluZUJveD4obV9saW5lQm94ZXMuZmlyc3RMaW5lQm94KCkpOyB9Ci0g
ICAgUm9vdElubGluZUJveCogbGFzdFJvb3RCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxS
b290SW5saW5lQm94PihtX2xpbmVCb3hlcy5sYXN0TGluZUJveCgpKTsgfQorICAgIExlZ2FjeVJv
b3RJbmxpbmVCb3gqIGZpcnN0Um9vdEJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PExlZ2Fj
eVJvb3RJbmxpbmVCb3g+KG1fbGluZUJveGVzLmZpcnN0TGluZUJveCgpKTsgfQorICAgIExlZ2Fj
eVJvb3RJbmxpbmVCb3gqIGxhc3RSb290Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVn
YWN5Um9vdElubGluZUJveD4obV9saW5lQm94ZXMubGFzdExpbmVCb3goKSk7IH0KIAogICAgIHZv
aWQgbGF5b3V0TGluZUJveGVzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVw
YWludExvZ2ljYWxUb3AsIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKIAotICAg
IFJvb3RJbmxpbmVCb3gqIGNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBjb25z
dCBMaW5lSW5mbyYpOworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGNvbnN0cnVjdExpbmUoQmlk
aVJ1bkxpc3Q8QmlkaVJ1bj4mLCBjb25zdCBMaW5lSW5mbyYpOwogICAgIGJvb2wgcG9zaXRpb25O
ZXdGbG9hdE9uTGluZShjb25zdCBGbG9hdGluZ09iamVjdCYgbmV3RmxvYXQsIEZsb2F0aW5nT2Jq
ZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBMaW5lSW5mbyYsIExpbmVXaWR0aCYpOwog
ICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tSW5saW5lQ2hpbGRyZW4oKTsKIAogICAgIHNpemVfdCBs
aW5lQ291bnQoKSBjb25zdDsKLSAgICBzaXplX3QgbGluZUNvdW50VW50aWwoY29uc3QgUm9vdElu
bGluZUJveCopIGNvbnN0OworICAgIHNpemVfdCBsaW5lQ291bnRVbnRpbChjb25zdCBMZWdhY3lS
b290SW5saW5lQm94KikgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCBhcHBlbmRSdW5zRm9yT2Jq
ZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiwgaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmpl
Y3QmLCBJbmxpbmVCaWRpUmVzb2x2ZXImKTsKLSAgICBzdGF0aWMgdm9pZCB1cGRhdGVMb2dpY2Fs
V2lkdGhGb3JBbGlnbm1lbnQoUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgVGV4dEFsaWduTW9kZSYs
IGNvbnN0IFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBmbG9hdCYg
bG9naWNhbExlZnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQmIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpOworICAgIHN0YXRpYyB2
b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChSZW5kZXJCbG9ja0Zsb3cmLCBjb25z
dCBUZXh0QWxpZ25Nb2RlJiwgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCosIEJpZGlSdW4qIHRy
YWlsaW5nU3BhY2VSdW4sIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIHRvdGFsTG9naWNhbFdp
ZHRoLCBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpbnQgZXhwYW5zaW9uT3Bwb3J0dW5p
dHlDb3VudCk7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJvb3RJbmxpbmVCb3g+
IGNyZWF0ZVJvb3RJbmxpbmVCb3goKTsKLSAgICBSb290SW5saW5lQm94KiBjcmVhdGVBbmRBcHBl
bmRSb290SW5saW5lQm94KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeVJvb3RJbmxpbmVC
b3g+IGNyZWF0ZVJvb3RJbmxpbmVCb3goKTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBjcmVh
dGVBbmRBcHBlbmRSb290SW5saW5lQm94KCk7CiAgICAgTGVnYWN5SW5saW5lQm94KiBjcmVhdGVJ
bmxpbmVCb3hGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqLCBib29sIGlzT25seVJ1biA9IGZhbHNl
KTsKICAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiwgY29u
c3QgTGluZUluZm8mLCBMZWdhY3lJbmxpbmVCb3gqKTsKICAgICBUZXh0QWxpZ25Nb2RlIHRleHRB
bGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0OwogICAgIHZvaWQg
c2V0TWFyZ2luc0ZvclJ1YnlSdW4oQmlkaVJ1biosIFJlbmRlclJ1YnlSdW4mLCBSZW5kZXJPYmpl
Y3QqIHByZXZpb3VzT2JqZWN0LCBjb25zdCBMaW5lSW5mbyYpOwogICAgIHZvaWQgdXBkYXRlUnVi
eUZvckp1c3RpZmllZFRleHQoUmVuZGVyUnVieVJ1biYsIEJpZGlSdW4mLCBjb25zdCBWZWN0b3I8
dW5zaWduZWQsIDE2PiYgZXhwYW5zaW9uT3Bwb3J0dW5pdGllcywgdW5zaWduZWQmIGV4cGFuc2lv
bk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoLCBzaXplX3QmKTsKICAgICB2b2lkIGNvbXB1dGVFeHBhbnNpb25Gb3JK
dXN0aWZpZWRUZXh0KEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVu
LCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDE2PiYgZXhwYW5zaW9uT3Bwb3J0dW5pdGllcywgdW5z
aWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQgdG90YWxMb2dpY2FsV2lkdGgs
IGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgdm9pZCBjb21wdXRlSW5saW5lRGly
ZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBC
aWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgYm9vbCByZWFjaGVk
RW5kLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIFZlcnRpY2FsUG9zaXRpb25D
YWNoZSYsIFdvcmRNZWFzdXJlbWVudHMmKTsKLSAgICBCaWRpUnVuKiBjb21wdXRlSW5saW5lRGly
ZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8m
LCBUZXh0QWxpZ25Nb2RlLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBH
bHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYs
IFdvcmRNZWFzdXJlbWVudHMmKTsKLSAgICB2b2lkIHJlbW92ZUlubGluZUJveChCaWRpUnVuJiwg
Y29uc3QgUm9vdElubGluZUJveCYpIGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZUJsb2NrRGlyZWN0
aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiwgQmlkaVJ1biogZmlyc3RSdW4sIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQ
b3NpdGlvbkNhY2hlJik7CisgICAgdm9pZCBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yTGluZShMZWdhY3lSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBCaWRpUnVuKiBm
aXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgYm9vbCByZWFjaGVkRW5kLCBHbHlw
aE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYsIFdv
cmRNZWFzdXJlbWVudHMmKTsKKyAgICBCaWRpUnVuKiBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9z
aXRpb25zRm9yU2VnbWVudChMZWdhY3lSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBU
ZXh0QWxpZ25Nb2RlLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBHbHlw
aE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYsIFdv
cmRNZWFzdXJlbWVudHMmKTsKKyAgICB2b2lkIHJlbW92ZUlubGluZUJveChCaWRpUnVuJiwgY29u
c3QgTGVnYWN5Um9vdElubGluZUJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUJsb2NrRGly
ZWN0aW9uUG9zaXRpb25zRm9yTGluZShMZWdhY3lSb290SW5saW5lQm94KiwgQmlkaVJ1biogZmly
c3RSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwg
VmVydGljYWxQb3NpdGlvbkNhY2hlJik7CiAgICAgaW5saW5lIEJpZGlSdW4qIGhhbmRsZVRyYWls
aW5nU3BhY2VzKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgQmlkaUNvbnRleHQqIGN1
cnJlbnRDb250ZXh0KTsKICAgICB2b2lkIGFwcGVuZEZsb2F0aW5nT2JqZWN0VG9MYXN0TGluZShG
bG9hdGluZ09iamVjdCYpOwotICAgIFJvb3RJbmxpbmVCb3gqIGNyZWF0ZUxpbmVCb3hlc0Zyb21C
aWRpUnVucyh1bnNpZ25lZCBiaWRpTGV2ZWwsIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVu
cywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZCwgTGluZUluZm8mLCBWZXJ0aWNhbFBvc2l0aW9u
Q2FjaGUmLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBXb3JkTWVhc3VyZW1lbnRzJik7Cisg
ICAgTGVnYWN5Um9vdElubGluZUJveCogY3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5zKHVuc2ln
bmVkIGJpZGlMZXZlbCwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxp
bmVJdGVyYXRvciYgZW5kLCBMaW5lSW5mbyYsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYsIEJpZGlS
dW4qIHRyYWlsaW5nU3BhY2VSdW4sIFdvcmRNZWFzdXJlbWVudHMmKTsKICAgICB2b2lkIGxheW91
dFJ1bnNBbmRGbG9hdHMoTGluZUxheW91dFN0YXRlJiwgYm9vbCBoYXNJbmxpbmVDaGlsZCk7CiAg
ICAgaW5saW5lIGNvbnN0IElubGluZUl0ZXJhdG9yJiByZXN0YXJ0TGF5b3V0UnVuc0FuZEZsb2F0
c0luUmFuZ2UoTGF5b3V0VW5pdCBvbGRMb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IG5ld0xvZ2lj
YWxIZWlnaHQsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBJbmxp
bmVCaWRpUmVzb2x2ZXImLCAgY29uc3QgSW5saW5lSXRlcmF0b3ImIG9sZEVuZCk7CiAgICAgdm9p
ZCBsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5lTGF5b3V0U3RhdGUmLCBJbmxpbmVCaWRp
UmVzb2x2ZXImLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgY2xlYW5MaW5lU3RhcnQsIGNvbnN0IEJp
ZGlTdGF0dXMmIGNsZWFuTGluZUJpZGlTdGF0dXMsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVu
YXRlZExpbmVzKTsKLSAgICB2b2lkIHJlYXR0YWNoQ2xlYW5MaW5lRmxvYXRzKFJvb3RJbmxpbmVC
b3gmIGNsZWFuTGluZSwgTGF5b3V0VW5pdCBkZWx0YSwgYm9vbCBpc0ZpcnN0Q2xlYW5MaW5lKTsK
KyAgICB2b2lkIHJlYXR0YWNoQ2xlYW5MaW5lRmxvYXRzKExlZ2FjeVJvb3RJbmxpbmVCb3gmIGNs
ZWFuTGluZSwgTGF5b3V0VW5pdCBkZWx0YSwgYm9vbCBpc0ZpcnN0Q2xlYW5MaW5lKTsKICAgICB2
b2lkIGxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3RhdGUmKTsKLSAgICB2b2lkIGNo
ZWNrRmxvYXRJbkNsZWFuTGluZShSb290SW5saW5lQm94JiBjbGVhbkxpbmUsIFJlbmRlckJveCYg
ZmxvYXRCb3hPbkNsZWFuTGluZSwgRmxvYXRXaXRoUmVjdCYgbWF0Y2hpbmdGbG9hdFdpdGhSZWN0
LCBib29sJiBlbmNvdW50ZXJlZE5ld0Zsb2F0LCBib29sJiBkaXJ0aWVkQnlGbG9hdCk7Ci0gICAg
Um9vdElubGluZUJveCogZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihMaW5lTGF5b3V0U3RhdGUmLCBJ
bmxpbmVCaWRpUmVzb2x2ZXImKTsKLSAgICB2b2lkIGRldGVybWluZUVuZFBvc2l0aW9uKExpbmVM
YXlvdXRTdGF0ZSYsIFJvb3RJbmxpbmVCb3gqIHN0YXJ0TGluZSwgSW5saW5lSXRlcmF0b3ImIGNs
ZWFuTGluZVN0YXJ0LCBCaWRpU3RhdHVzJiBjbGVhbkxpbmVCaWRpU3RhdHVzKTsKKyAgICB2b2lk
IGNoZWNrRmxvYXRJbkNsZWFuTGluZShMZWdhY3lSb290SW5saW5lQm94JiBjbGVhbkxpbmUsIFJl
bmRlckJveCYgZmxvYXRCb3hPbkNsZWFuTGluZSwgRmxvYXRXaXRoUmVjdCYgbWF0Y2hpbmdGbG9h
dFdpdGhSZWN0LCBib29sJiBlbmNvdW50ZXJlZE5ld0Zsb2F0LCBib29sJiBkaXJ0aWVkQnlGbG9h
dCk7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihMaW5l
TGF5b3V0U3RhdGUmLCBJbmxpbmVCaWRpUmVzb2x2ZXImKTsKKyAgICB2b2lkIGRldGVybWluZUVu
ZFBvc2l0aW9uKExpbmVMYXlvdXRTdGF0ZSYsIExlZ2FjeVJvb3RJbmxpbmVCb3gqIHN0YXJ0TGlu
ZSwgSW5saW5lSXRlcmF0b3ImIGNsZWFuTGluZVN0YXJ0LCBCaWRpU3RhdHVzJiBjbGVhbkxpbmVC
aWRpU3RhdHVzKTsKICAgICBib29sIGNoZWNrUGFnaW5hdGlvbkFuZEZsb2F0c0F0RW5kTGluZShM
aW5lTGF5b3V0U3RhdGUmKTsKLSAgICBib29sIGxpbmVXaWR0aEZvclBhZ2luYXRlZExpbmVDaGFu
Z2VkKFJvb3RJbmxpbmVCb3gqIHJvb3RCb3gsIExheW91dFVuaXQgbGluZURlbHRhLCBSZW5kZXJG
cmFnbWVudGVkRmxvdyopIGNvbnN0OworICAgIGJvb2wgbGluZVdpZHRoRm9yUGFnaW5hdGVkTGlu
ZUNoYW5nZWQoTGVnYWN5Um9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3V0VW5pdCBsaW5lRGVs
dGEsIFJlbmRlckZyYWdtZW50ZWRGbG93KikgY29uc3Q7CiAgICAgYm9vbCBtYXRjaGVkRW5kTGlu
ZShMaW5lTGF5b3V0U3RhdGUmLCBjb25zdCBJbmxpbmVCaWRpUmVzb2x2ZXImLCBjb25zdCBJbmxp
bmVJdGVyYXRvciYgZW5kTGluZVN0YXJ0LCBjb25zdCBCaWRpU3RhdHVzJiBlbmRMaW5lU3RhdHVz
KTsKICAgICB2b2lkIGRlbGV0ZUVsbGlwc2lzTGluZUJveGVzKCk7CiAgICAgdm9pZCBjaGVja0xp
bmVzRm9yVGV4dE92ZXJmbG93KCk7Ci0gICAgdm9pZCB1cGRhdGVGcmFnbWVudEZvckxpbmUoUm9v
dElubGluZUJveCopIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJhZ21lbnRGb3JMaW5lKExlZ2Fj
eVJvb3RJbmxpbmVCb3gqKSBjb25zdDsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgp
IGNvbnN0OwogICAgIGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQmIGxheW91dENvbnRleHQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNw
cApzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCBmYmQ4NmQ2ODUwNDIuLjgxOGQzODYyOGQ2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcApAQCAt
MTgsNyArMTgsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSb290
SW5saW5lQm94LmgiCisjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogCiAjaW5jbHVk
ZSAiQmlkaVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00MywyMCArNDMsMjAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
Um9vdElubGluZUJveCk7CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGVnYWN5Um9vdElu
bGluZUJveCk7CiAKLXN0cnVjdCBTYW1lU2l6ZUFzUm9vdElubGluZUJveCA6IHB1YmxpYyBJbmxp
bmVGbG93Qm94LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Um9vdElubGluZUJveD4geworc3RydWN0
IFNhbWVTaXplQXNMZWdhY3lSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxMZWdhY3lSb290SW5saW5lQm94PiB7CiAgICAgdW5zaWduZWQg
dmFyaWFibGVzWzddOwogICAgIFdlYWtQdHI8UmVuZGVyT2JqZWN0PiBsaW5lQnJlYWtPYmo7CiAg
ICAgdm9pZCogcG9pbnRlcnNbMl07CiB9OwogCi1DT01QSUxFX0FTU0VSVChzaXplb2YoUm9vdElu
bGluZUJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSb290SW5saW5lQm94KSwgUm9vdElubGluZUJv
eF9zaG91bGRfc3RheV9zbWFsbCk7CitDT01QSUxFX0FTU0VSVChzaXplb2YoTGVnYWN5Um9vdElu
bGluZUJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNMZWdhY3lSb290SW5saW5lQm94KSwgTGVnYWN5
Um9vdElubGluZUJveF9zaG91bGRfc3RheV9zbWFsbCk7CiAjaWYgIUFTU0VSVF9FTkFCTEVECiBD
T01QSUxFX0FTU0VSVChzaXplb2YoV2Vha1B0cjxSZW5kZXJPYmplY3Q+KSA9PSBzaXplb2Yodm9p
ZCopLCBXZWFrUHRyX3Nob3VsZF9iZV9zYW1lX3NpemVfYXNfcmF3X3BvaW50ZXIpOwogI2VuZGlm
CiAKLXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJvb3RJbmxpbmVCb3gqLCBzdGQ6OnVuaXF1
ZV9wdHI8RWxsaXBzaXNCb3g+PiBFbGxpcHNpc0JveE1hcDsKK3R5cGVkZWYgV1RGOjpIYXNoTWFw
PGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8RWxsaXBzaXNCb3g+
PiBFbGxpcHNpc0JveE1hcDsKIHN0YXRpYyBFbGxpcHNpc0JveE1hcCogZ0VsbGlwc2lzQm94TWFw
OwogCiBzdGF0aWMgQ29udGFpbmluZ0ZyYWdtZW50TWFwJiBjb250YWluaW5nRnJhZ21lbnRNYXAo
UmVuZGVyQmxvY2tGbG93JiBibG9jaykKQEAgLTY1LDEzICs2NSwxMyBAQCBzdGF0aWMgQ29udGFp
bmluZ0ZyYWdtZW50TWFwJiBjb250YWluaW5nRnJhZ21lbnRNYXAoUmVuZGVyQmxvY2tGbG93JiBi
bG9jaykKICAgICByZXR1cm4gYmxvY2suZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKS0+Y29udGFp
bmluZ0ZyYWdtZW50TWFwKCk7CiB9CiAKLVJvb3RJbmxpbmVCb3g6OlJvb3RJbmxpbmVCb3goUmVu
ZGVyQmxvY2tGbG93JiBibG9jaykKK0xlZ2FjeVJvb3RJbmxpbmVCb3g6OkxlZ2FjeVJvb3RJbmxp
bmVCb3goUmVuZGVyQmxvY2tGbG93JiBibG9jaykKICAgICA6IElubGluZUZsb3dCb3goYmxvY2sp
CiB7CiAgICAgc2V0SXNIb3Jpem9udGFsKGJsb2NrLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
OwogfQogCi1Sb290SW5saW5lQm94Ojp+Um9vdElubGluZUJveCgpCitMZWdhY3lSb290SW5saW5l
Qm94Ojp+TGVnYWN5Um9vdElubGluZUJveCgpCiB7CiAgICAgZGV0YWNoRWxsaXBzaXNCb3goKTsK
IApAQCAtNzksNyArNzksNyBAQCBSb290SW5saW5lQm94Ojp+Um9vdElubGluZUJveCgpCiAgICAg
ICAgIGNvbnRhaW5pbmdGcmFnbWVudE1hcChibG9ja0Zsb3coKSkucmVtb3ZlKHRoaXMpOwogfQog
Ci12b2lkIFJvb3RJbmxpbmVCb3g6OmRldGFjaEVsbGlwc2lzQm94KCkKK3ZvaWQgTGVnYWN5Um9v
dElubGluZUJveDo6ZGV0YWNoRWxsaXBzaXNCb3goKQogewogICAgIGlmIChoYXNFbGxpcHNpc0Jv
eCgpKSB7CiAgICAgICAgIGF1dG8gYm94ID0gZ0VsbGlwc2lzQm94TWFwLT50YWtlKHRoaXMpOwpA
QCAtODgsNyArODgsNyBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OmRldGFjaEVsbGlwc2lzQm94KCkK
ICAgICB9CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKCkKK3ZvaWQg
TGVnYWN5Um9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKCkKIHsKICAgICBpZiAoaGFzRWxs
aXBzaXNCb3goKSkgewogICAgICAgICBkZXRhY2hFbGxpcHNpc0JveCgpOwpAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OmNsZWFyVHJ1bmNhdGlvbigpCiAgICAgfQogfQogCi1i
b29sIFJvb3RJbmxpbmVCb3g6OmlzSHlwaGVuYXRlZCgpIGNvbnN0Citib29sIExlZ2FjeVJvb3RJ
bmxpbmVCb3g6OmlzSHlwaGVuYXRlZCgpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvKiBib3ggPSBm
aXJzdExlYWZEZXNjZW5kYW50KCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZk9uTGluZSgpKSB7
CiAgICAgICAgIGlmIChpczxJbmxpbmVUZXh0Qm94PigqYm94KSAmJiBkb3duY2FzdDxJbmxpbmVU
ZXh0Qm94PigqYm94KS5oYXNIeXBoZW4oKSkKQEAgLTEwNSwyOSArMTA1LDI5IEBAIGJvb2wgUm9v
dElubGluZUJveDo6aXNIeXBoZW5hdGVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LUxheW91dFVuaXQgUm9vdElubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUg
YmFzZWxpbmVUeXBlKSBjb25zdAorTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94OjpiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHJlbmRlcmVyKCkuYmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGlzRmlyc3RMaW5l
KCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0
aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CiB9CiAKLUxheW91dFVuaXQgUm9vdElubGluZUJveDo6
bGluZUhlaWdodCgpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeVJvb3RJbmxpbmVCb3g6OmxpbmVI
ZWlnaHQoKSBjb25zdAogewogICAgIHJldHVybiByZW5kZXJlcigpLmxpbmVIZWlnaHQoaXNGaXJz
dExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwg
UG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKIH0KIAotYm9vbCBSb290SW5saW5lQm94Ojps
aW5lQ2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGxp
bmVCb3hFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCkKK2Jvb2wgTGVnYWN5Um9vdElubGluZUJveDo6
bGluZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMoYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBs
aW5lQm94RWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpCiB7CiAgICAgLy8gRmlyc3Qgc2FuaXR5LWNo
ZWNrIHRoZSB1bm92ZXJmbG93ZWQgd2lkdGggb2YgdGhlIHdob2xlIGxpbmUgdG8gc2VlIGlmIHRo
ZXJlIGlzIHN1ZmZpY2llbnQgcm9vbS4KICAgICBpbnQgZGVsdGEgPSBsdHIgPyBsaW5lQm94RWRn
ZSAtIGJsb2NrRWRnZSA6IGJsb2NrRWRnZSAtIGxpbmVCb3hFZGdlOwogICAgIGlmIChsb2dpY2Fs
V2lkdGgoKSAtIGRlbHRhIDwgZWxsaXBzaXNXaWR0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgLy8gTmV4dCBpdGVyYXRlIG92ZXIgYWxsIHRoZSBsaW5lIGJveGVzIG9uIHRoZSBsaW5l
LiAgSWYgd2UgZmluZCBhIHJlcGxhY2VkIGVsZW1lbnQgdGhhdCBpbnRlcnNlY3RzCi0gICAgLy8g
dGhlbiB3ZSByZWZ1c2UgdG8gYWNjb21tb2RhdGUgdGhlIGVsbGlwc2lzLiAgT3RoZXJ3aXNlIHdl
J3JlIG9rLgorICAgIC8vIE5leHQgaXRlcmF0ZSBvdmVyIGFsbCB0aGUgbGluZSBib3hlcyBvbiB0
aGUgbGluZS4gSWYgd2UgZmluZCBhIHJlcGxhY2VkIGVsZW1lbnQgdGhhdCBpbnRlcnNlY3RzCisg
ICAgLy8gdGhlbiB3ZSByZWZ1c2UgdG8gYWNjb21tb2RhdGUgdGhlIGVsbGlwc2lzLiBPdGhlcndp
c2Ugd2UncmUgb2suCiAgICAgcmV0dXJuIElubGluZUZsb3dCb3g6OmNhbkFjY29tbW9kYXRlRWxs
aXBzaXMobHRyLCBibG9ja0VkZ2UsIGVsbGlwc2lzV2lkdGgpOwogfQogCi1mbG9hdCBSb290SW5s
aW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9v
bCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRFZGdlLCBmbG9hdCBl
bGxpcHNpc1dpZHRoLCBMZWdhY3lJbmxpbmVCb3gqIG1hcmt1cEJveCkKK2Zsb2F0IExlZ2FjeVJv
b3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIs
ICBib29sIGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwgZmxvYXQgYmxvY2tSaWdodEVkZ2UsIGZs
b2F0IGVsbGlwc2lzV2lkdGgsIExlZ2FjeUlubGluZUJveCogbWFya3VwQm94KQogewogICAgIGlm
ICghZ0VsbGlwc2lzQm94TWFwKQogICAgICAgICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBz
aXNCb3hNYXAoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFj
ZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZsbwog
ICAgIHJldHVybiB0cnVuY2F0ZWRXaWR0aDsKIH0KIAotZmxvYXQgUm9vdElubGluZUJveDo6cGxh
Y2VFbGxpcHNpc0JveChib29sIGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwgZmxvYXQgYmxvY2tS
aWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0aCwgYm9v
bCYgZm91bmRCb3gpCitmbG9hdCBMZWdhY3lSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94
KGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9ja1JpZ2h0RWRnZSwgZmxv
YXQgZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRoLCBib29sJiBmb3VuZEJveCkK
IHsKICAgICBmbG9hdCByZXN1bHQgPSBJbmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KGx0
ciwgYmxvY2tMZWZ0RWRnZSwgYmxvY2tSaWdodEVkZ2UsIGVsbGlwc2lzV2lkdGgsIHRydW5jYXRl
ZFdpZHRoLCBmb3VuZEJveCk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkgewpAQCAtMTYxLDE5ICsx
NjEsMTkgQEAgZmxvYXQgUm9vdElubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveChib29sIGx0ciwg
ZmxvYXQgYmxvY2tMZWZ0RWRnZSwgZmxvYXQgYmxvY2sKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pIGNvbnN0Cit2b2lkIExlZ2FjeVJvb3RJbmxpbmVCb3g6OnBh
aW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIGNv
bnN0CiB7CiAgICAgaWYgKGhhc0VsbGlwc2lzQm94KCkgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50
V2l0aGluUm9vdChyZW5kZXJlcigpKSAmJiByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6
OkZvcmVncm91bmQpCiAgICAgICAgIGVsbGlwc2lzQm94KCktPnBhaW50KHBhaW50SW5mbywgcGFp
bnRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20pOwogfQogCi12b2lkIFJvb3RJbmxpbmVCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQordm9pZCBMZWdh
Y3lSb290SW5saW5lQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJv
dHRvbSkKIHsKICAgICBJbmxpbmVGbG93Qm94OjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0
LCBsaW5lVG9wLCBsaW5lQm90dG9tKTsKICAgICBwYWludEVsbGlwc2lzQm94KHBhaW50SW5mbywg
cGFpbnRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20pOwogfQogCi1ib29sIFJvb3RJbmxpbmVC
b3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQorYm9v
bCBMZWdhY3lSb290SW5saW5lQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxv
Y2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwg
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24g
aGl0VGVzdEFjdGlvbikKIHsKICAgICBpZiAoaGFzRWxsaXBzaXNCb3goKSAmJiB2aXNpYmxlVG9I
aXRUZXN0aW5nKHJlcXVlc3QpKSB7CiAgICAgICAgIGlmIChlbGxpcHNpc0JveCgpLT5ub2RlQXRQ
b2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zm
c2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tLCBoaXRUZXN0QWN0aW9uKSkgewpAQCAtMTg0LDcgKzE4
NCw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgcmV0dXJuIElubGluZUZsb3dCb3g6
Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11
bGF0ZWRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20sIGhpdFRlc3RBY3Rpb24pOwogfQogCi12
b2lkIFJvb3RJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9uKGZsb2F0IGR4LCBmbG9hdCBkeSkKK3Zv
aWQgTGVnYWN5Um9vdElubGluZUJveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZsb2F0IGR5
KQogewogICAgIElubGluZUZsb3dCb3g6OmFkanVzdFBvc2l0aW9uKGR4LCBkeSk7CiAgICAgTGF5
b3V0VW5pdCBibG9ja0RpcmVjdGlvbkRlbHRhIHsgaXNIb3Jpem9udGFsKCkgPyBkeSA6IGR4IH07
IC8vIFRoZSBibG9jayBkaXJlY3Rpb24gZGVsdGEgaXMgYSBMYXlvdXRVbml0LgpAQCAtMTk2LDE4
ICsxOTYsMTggQEAgdm9pZCBSb290SW5saW5lQm94OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwg
ZmxvYXQgZHkpCiAgICAgICAgIGVsbGlwc2lzQm94KCktPmFkanVzdFBvc2l0aW9uKGR4LCBkeSk7
CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6Y2hpbGRSZW1vdmVkKExlZ2FjeUlubGluZUJveCog
Ym94KQordm9pZCBMZWdhY3lSb290SW5saW5lQm94OjpjaGlsZFJlbW92ZWQoTGVnYWN5SW5saW5l
Qm94KiBib3gpCiB7CiAgICAgaWYgKCZib3gtPnJlbmRlcmVyKCkgPT0gbV9saW5lQnJlYWtPYmop
CiAgICAgICAgIHNldExpbmVCcmVha0luZm8obnVsbHB0ciwgMCwgQmlkaVN0YXR1cygpKTsKIAot
ICAgIGZvciAoUm9vdElubGluZUJveCogcHJldiA9IHByZXZSb290Qm94KCk7IHByZXYgJiYgcHJl
di0+bGluZUJyZWFrT2JqKCkgPT0gJmJveC0+cmVuZGVyZXIoKTsgcHJldiA9IHByZXYtPnByZXZS
b290Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIHByZXYgPSBwcmV2Um9vdEJveCgpOyBwcmV2ICYm
IHByZXYtPmxpbmVCcmVha09iaigpID09ICZib3gtPnJlbmRlcmVyKCk7IHByZXYgPSBwcmV2LT5w
cmV2Um9vdEJveCgpKSB7CiAgICAgICAgIHByZXYtPnNldExpbmVCcmVha0luZm8obnVsbHB0ciwg
MCwgQmlkaVN0YXR1cygpKTsKICAgICAgICAgcHJldi0+bWFya0RpcnR5KCk7CiAgICAgfQogfQog
Ci1SZW5kZXJGcmFnbWVudENvbnRhaW5lciogUm9vdElubGluZUJveDo6Y29udGFpbmluZ0ZyYWdt
ZW50KCkgY29uc3QKK1JlbmRlckZyYWdtZW50Q29udGFpbmVyKiBMZWdhY3lSb290SW5saW5lQm94
Ojpjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdAogewogICAgIENvbnRhaW5pbmdGcmFnbWVudE1h
cCYgZnJhZ21lbnRNYXAgPSBjb250YWluaW5nRnJhZ21lbnRNYXAoYmxvY2tGbG93KCkpOwogICAg
IGJvb2wgaGFzQ29udGFpbmluZ0ZyYWdtZW50ID0gZnJhZ21lbnRNYXAuY29udGFpbnModGhpcyk7
CkBAIC0yMjQsNyArMjI0LDcgQEAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIFJvb3RJbmxpbmVC
b3g6OmNvbnRhaW5pbmdGcmFnbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQog
Ci12b2lkIFJvb3RJbmxpbmVCb3g6OmNsZWFyQ29udGFpbmluZ0ZyYWdtZW50KCkKK3ZvaWQgTGVn
YWN5Um9vdElubGluZUJveDo6Y2xlYXJDb250YWluaW5nRnJhZ21lbnQoKQogewogICAgIEFTU0VS
VCghaXNEaXJ0eSgpKTsKIApAQCAtMjM0LDE0ICsyMzQsMTQgQEAgdm9pZCBSb290SW5saW5lQm94
OjpjbGVhckNvbnRhaW5pbmdGcmFnbWVudCgpCiAgICAgY29udGFpbmluZ0ZyYWdtZW50TWFwKGJs
b2NrRmxvdygpKS5yZW1vdmUodGhpcyk7CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6c2V0Q29u
dGFpbmluZ0ZyYWdtZW50KFJlbmRlckZyYWdtZW50Q29udGFpbmVyJiBmcmFnbWVudCkKK3ZvaWQg
TGVnYWN5Um9vdElubGluZUJveDo6c2V0Q29udGFpbmluZ0ZyYWdtZW50KFJlbmRlckZyYWdtZW50
Q29udGFpbmVyJiBmcmFnbWVudCkKIHsKICAgICBBU1NFUlQoIWlzRGlydHkoKSk7CiAKICAgICBj
b250YWluaW5nRnJhZ21lbnRNYXAoYmxvY2tGbG93KCkpLnNldCh0aGlzLCAmZnJhZ21lbnQpOwog
fQogCi1MYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OmFsaWduQm94ZXNJbkJsb2NrRGlyZWN0aW9u
KExheW91dFVuaXQgaGVpZ2h0T2ZCbG9jaywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRp
b25DYWNoZSkKK0xheW91dFVuaXQgTGVnYWN5Um9vdElubGluZUJveDo6YWxpZ25Cb3hlc0luQmxv
Y2tEaXJlY3Rpb24oTGF5b3V0VW5pdCBoZWlnaHRPZkJsb2NrLCBHbHlwaE92ZXJmbG93QW5kRmFs
bGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVy
dGljYWxQb3NpdGlvbkNhY2hlKQogewogICAgIC8vIFNWRyB3aWxsIGhhbmRsZSB2ZXJ0aWNhbCBh
bGlnbm1lbnQgb24gaXRzIG93bi4KICAgICBpZiAoaXNTVkdSb290SW5saW5lQm94KCkpCkBAIC0y
NjAsNyArMjYwLDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjphbGlnbkJveGVzSW5CbG9j
a0RpcmVjdGlvbihMYXlvdXRVbml0IGhlaWdodE9mQmxvY2ssIEcKICAgICBtX2Jhc2VsaW5lVHlw
ZSA9IHJlcXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZSh0ZXh0Qm94RGF0YU1hcCkgPyBJZGVvZ3Jh
cGhpY0Jhc2VsaW5lIDogQWxwaGFiZXRpY0Jhc2VsaW5lOwogCiAgICAgY29tcHV0ZUxvZ2ljYWxC
b3hIZWlnaHRzKCp0aGlzLCBtYXhQb3NpdGlvblRvcCwgbWF4UG9zaXRpb25Cb3R0b20sIG1heEFz
Y2VudCwgbWF4RGVzY2VudCwgc2V0TWF4QXNjZW50LCBzZXRNYXhEZXNjZW50LCBub1F1aXJrc01v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRCb3hEYXRhTWFwLCBiYXNlbGlu
ZVR5cGUoKSwgdmVydGljYWxQb3NpdGlvbkNhY2hlKTsKKyAgICAgICAgdGV4dEJveERhdGFNYXAs
IGJhc2VsaW5lVHlwZSgpLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpOwogCiAgICAgaWYgKG1heEFz
Y2VudCArIG1heERlc2NlbnQgPCBzdGQ6Om1heChtYXhQb3NpdGlvblRvcCwgbWF4UG9zaXRpb25C
b3R0b20pKQogICAgICAgICBhZGp1c3RNYXhBc2NlbnRBbmREZXNjZW50KG1heEFzY2VudCwgbWF4
RGVzY2VudCwgbWF4UG9zaXRpb25Ub3AsIG1heFBvc2l0aW9uQm90dG9tKTsKQEAgLTI3NCw3ICsy
NzQsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OmFsaWduQm94ZXNJbkJsb2NrRGlyZWN0
aW9uKExheW91dFVuaXQgaGVpZ2h0T2ZCbG9jaywgRwogICAgIGJvb2wgaGFzQW5ub3RhdGlvbnNC
ZWZvcmUgPSBmYWxzZTsKICAgICBib29sIGhhc0Fubm90YXRpb25zQWZ0ZXIgPSBmYWxzZTsKICAg
ICBwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbihoZWlnaHRPZkJsb2NrLCBtYXhIZWlnaHQsIG1h
eEFzY2VudCwgbm9RdWlya3NNb2RlLCBsaW5lVG9wLCBsaW5lQm90dG9tLCBzZXRMaW5lVG9wLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVUb3BJbmNsdWRpbmdNYXJnaW5zLCBs
aW5lQm90dG9tSW5jbHVkaW5nTWFyZ2lucywgaGFzQW5ub3RhdGlvbnNCZWZvcmUsIGhhc0Fubm90
YXRpb25zQWZ0ZXIsIGJhc2VsaW5lVHlwZSgpKTsKKyAgICAgICAgbGluZVRvcEluY2x1ZGluZ01h
cmdpbnMsIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBoYXNBbm5vdGF0aW9uc0JlZm9yZSwg
aGFzQW5ub3RhdGlvbnNBZnRlciwgYmFzZWxpbmVUeXBlKCkpOwogICAgIG1faGFzQW5ub3RhdGlv
bnNCZWZvcmUgPSBoYXNBbm5vdGF0aW9uc0JlZm9yZTsKICAgICBtX2hhc0Fubm90YXRpb25zQWZ0
ZXIgPSBoYXNBbm5vdGF0aW9uc0FmdGVyOwogICAgIApAQCAtMzAyLDcgKzMwMiw3IEBAIExheW91
dFVuaXQgUm9vdElubGluZUJveDo6YWxpZ25Cb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5p
dCBoZWlnaHRPZkJsb2NrLCBHCiAgICAgcmV0dXJuIGhlaWdodE9mQmxvY2sgKyBtYXhIZWlnaHQ7
CiB9CiAKLUxheW91dFVuaXQgUm9vdElubGluZUJveDo6YmVmb3JlQW5ub3RhdGlvbnNBZGp1c3Rt
ZW50KCkgY29uc3QKK0xheW91dFVuaXQgTGVnYWN5Um9vdElubGluZUJveDo6YmVmb3JlQW5ub3Rh
dGlvbnNBZGp1c3RtZW50KCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHJlc3VsdDsKIApAQCAt
MzMzLDcgKzMzMyw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6YmVmb3JlQW5ub3RhdGlv
bnNBZGp1c3RtZW50KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1MYXlvdXRVbml0
IFJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25z
dAorTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94OjpsaW5lU25hcEFkanVzdG1lbnQoTGF5
b3V0VW5pdCBkZWx0YSkgY29uc3QKIHsKICAgICAvLyBJZiBvdXIgYmxvY2sgZG9lc24ndCBoYXZl
IHNuYXBwaW5nIHR1cm5lZCBvbiwgZG8gbm90aGluZy4KICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGJvdW5kcyBzbmFwcGluZy4KQEAgLTM0OCw3ICszNDgsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxp
bmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25zdAogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIC8vIEdldCB0aGUgaHlwb3RoZXRpY2FsIGxpbmUgYm94IHVzZWQg
dG8gZXN0YWJsaXNoIHRoZSBncmlkLgotICAgIFJvb3RJbmxpbmVCb3gqIGxpbmVHcmlkQm94ID0g
bGluZUdyaWQtPmxpbmVHcmlkQm94KCk7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbGluZUdy
aWRCb3ggPSBsaW5lR3JpZC0+bGluZUdyaWRCb3goKTsKICAgICBpZiAoIWxpbmVHcmlkQm94KQog
ICAgICAgICByZXR1cm4gMDsKICAgICAKQEAgLTQyOCw3ICs0MjgsNyBAQCBMYXlvdXRVbml0IFJv
b3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25zdAog
ICAgIHJldHVybiBsaW5lU25hcEFkanVzdG1lbnQobmV3UGFnZUxvZ2ljYWxUb3AgLSAoYmxvY2tP
ZmZzZXQgKyBsaW5lQm94VG9wKCkpKTsKIH0KIAotR2FwUmVjdHMgUm9vdElubGluZUJveDo6bGlu
ZVNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYg
cm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJv
b3RCbG9jaywKK0dhcFJlY3RzIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmxpbmVTZWxlY3Rpb25HYXAo
UmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNp
Y2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAg
TGF5b3V0VW5pdCBzZWxUb3AsIExheW91dFVuaXQgc2VsSGVpZ2h0LCBjb25zdCBMb2dpY2FsU2Vs
ZWN0aW9uT2Zmc2V0Q2FjaGVzJiBjYWNoZSwgY29uc3QgUGFpbnRJbmZvKiBwYWludEluZm8pCiB7
CiAgICAgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBsaW5lU3RhdGUgPSBzZWxlY3Rpb25T
dGF0ZSgpOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIEdhcFJlY3RzIFJvb3RJbmxpbmVCb3g6OmxpbmVT
ZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBSb290SW5s
aW5lQm94OjpzZWxlY3Rpb25TdGF0ZSgpCitSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIExl
Z2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblN0YXRlKCkKIHsKICAgICAvLyBXYWxrIG92ZXIg
YWxsIG9mIHRoZSBzZWxlY3RlZCBib3hlcy4KICAgICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0
YXRlIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZTsKQEAgLTUwNSw3
ICs1MDUsNyBAQCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIFJvb3RJbmxpbmVCb3g6OnNl
bGVjdGlvblN0YXRlKCkKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLUxlZ2FjeUlubGluZUJveCog
Um9vdElubGluZUJveDo6Zmlyc3RTZWxlY3RlZEJveCgpCitMZWdhY3lJbmxpbmVCb3gqIExlZ2Fj
eVJvb3RJbmxpbmVCb3g6OmZpcnN0U2VsZWN0ZWRCb3goKQogewogICAgIGZvciAoYXV0byogYm94
ID0gZmlyc3RMZWFmRGVzY2VuZGFudCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExlYWZPbkxpbmUo
KSkgewogICAgICAgICBpZiAoYm94LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6
SGlnaGxpZ2h0U3RhdGU6Ok5vbmUpCkBAIC01MTQsNyArNTE0LDcgQEAgTGVnYWN5SW5saW5lQm94
KiBSb290SW5saW5lQm94OjpmaXJzdFNlbGVjdGVkQm94KCkKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotTGVnYWN5SW5saW5lQm94KiBSb290SW5saW5lQm94OjpsYXN0U2VsZWN0ZWRCb3goKQor
TGVnYWN5SW5saW5lQm94KiBMZWdhY3lSb290SW5saW5lQm94OjpsYXN0U2VsZWN0ZWRCb3goKQog
ewogICAgIGZvciAoYXV0byogYm94ID0gbGFzdExlYWZEZXNjZW5kYW50KCk7IGJveDsgYm94ID0g
Ym94LT5wcmV2aW91c0xlYWZPbkxpbmUoKSkgewogICAgICAgICBpZiAoYm94LT5zZWxlY3Rpb25T
dGF0ZSgpICE9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmUpCkBAIC01MjMsNyAr
NTIzLDcgQEAgTGVnYWN5SW5saW5lQm94KiBSb290SW5saW5lQm94OjpsYXN0U2VsZWN0ZWRCb3go
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1MYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnNl
bGVjdGlvblRvcChGb3JIaXRUZXN0aW5nIGZvckhpdFRlc3RpbmcpIGNvbnN0CitMYXlvdXRVbml0
IExlZ2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcChGb3JIaXRUZXN0aW5nIGZvckhpdFRl
c3RpbmcpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3AgPSBtX2xpbmVUb3A7
CiAgICAgCkBAIC01NTQsNyArNTU0LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpzZWxl
Y3Rpb25Ub3AoRm9ySGl0VGVzdGluZyBmb3JIaXRUZXN0aW5nKSBjb25zdAogICAgICAgICAgICAg
UmVuZGVyUnVieUJhc2UqIGJhc2UgPSBydW4tPnJ1YnlCYXNlKCk7CiAgICAgICAgICAgICBpZiAo
YmFzZSAmJiB0ZXh0LT5sb2dpY2FsVG9wKCkgPCBiYXNlLT5sb2dpY2FsVG9wKCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgcnVieSB0ZXh0IGlzIGFib3ZlIHRoZSBydWJ5IGJhc2UuCi0gICAg
ICAgICAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgY29udGFpbmluZ0xpbmUgPSBydW4tPmlu
bGluZUJveFdyYXBwZXIoKS0+cm9vdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IExlZ2FjeVJv
b3RJbmxpbmVCb3gmIGNvbnRhaW5pbmdMaW5lID0gcnVuLT5pbmxpbmVCb3hXcmFwcGVyKCktPnJv
b3QoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGVuY2xvc2luZ1NlbGVjdGlvblRvcCA9
IGNvbnRhaW5pbmdMaW5lLnNlbGVjdGlvblRvcCgpOwogICAgICAgICAgICAgICAgIExheW91dFVu
aXQgZGVsdGFCZXR3ZWVuT2JqZWN0cyA9IHRleHQtPmxvZ2ljYWxUb3AoKSArIHJ1bi0+bG9naWNh
bFRvcCgpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9wSW5SdWJ5VGV4
dENvb3JkcyA9IGVuY2xvc2luZ1NlbGVjdGlvblRvcCAtIGRlbHRhQmV0d2Vlbk9iamVjdHM7CkBA
IC01NzQsNyArNTc0LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3Ao
Rm9ySGl0VGVzdGluZyBmb3JIaXRUZXN0aW5nKSBjb25zdAogCiAgICAgaWYgKHByZXZCb3R0b20g
PCBzZWxlY3Rpb25Ub3AgJiYgYmxvY2tGbG93KCkuY29udGFpbnNGbG9hdHMoKSkgewogICAgICAg
ICAvLyBUaGlzIGxpbmUgaGFzIGFjdHVhbGx5IGJlZW4gbW92ZWQgZnVydGhlciBkb3duLCBwcm9i
YWJseSBmcm9tIGEgbGFyZ2UgbGluZS1oZWlnaHQsIGJ1dCBwb3NzaWJseSBiZWNhdXNlIHRoZQot
ICAgICAgICAvLyBsaW5lIHdhcyBmb3JjZWQgdG8gY2xlYXIgZmxvYXRzLiAgSWYgc28sIGxldCdz
IGNoZWNrIHRoZSBvZmZzZXRzLCBhbmQgb25seSBiZSB3aWxsaW5nIHRvIHVzZSB0aGUgcHJldmlv
dXMKKyAgICAgICAgLy8gbGluZSB3YXMgZm9yY2VkIHRvIGNsZWFyIGZsb2F0cy4gSWYgc28sIGxl
dCdzIGNoZWNrIHRoZSBvZmZzZXRzLCBhbmQgb25seSBiZSB3aWxsaW5nIHRvIHVzZSB0aGUgcHJl
dmlvdXMKICAgICAgICAgLy8gbGluZSdzIGJvdHRvbSBpZiB0aGUgb2Zmc2V0cyBhcmUgZ3JlYXRl
ciBvbiBib3RoIHNpZGVzLgogICAgICAgICBMYXlvdXRVbml0IHByZXZMZWZ0ID0gYmxvY2tGbG93
KCkubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHByZXZCb3R0b20sIERvTm90SW5kZW50VGV4dCk7
CiAgICAgICAgIExheW91dFVuaXQgcHJldlJpZ2h0ID0gYmxvY2tGbG93KCkubG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShwcmV2Qm90dG9tLCBEb05vdEluZGVudFRleHQpOwpAQCAtNjE5LDkgKzYx
OSw5IEBAIHN0YXRpYyBSZW5kZXJCbG9jayogYmxvY2tCZWZvcmVXaXRoaW5TZWxlY3Rpb25Sb290
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGCiAgICAgcmV0dXJuIGJlZm9yZUJsb2NrOwog
fQogCi1MYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJl
Y2VkaW5nQmxvY2soKSBjb25zdAorTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94OjpzZWxl
Y3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkgY29uc3QKIHsKLSAgICBjb25zdCBS
b290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOworICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxp
bmVCb3gmIHJvb3RCb3ggPSByb290KCk7CiAgICAgTGF5b3V0VW5pdCB0b3AgPSBzZWxlY3Rpb25U
b3AoKTsKIAogICAgIGF1dG8gYmxvY2tTZWxlY3Rpb25TdGF0ZSA9IHJvb3RCb3guYmxvY2tGbG93
KCkuc2VsZWN0aW9uU3RhdGUoKTsKQEAgLTY0OCw3ICs2NDgsNyBAQCBMYXlvdXRVbml0IFJvb3RJ
bmxpbmVCb3g6OnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSBjb25zdAog
ICAgIHJldHVybiB0b3A7CiB9CiAKLUxheW91dFVuaXQgUm9vdElubGluZUJveDo6c2VsZWN0aW9u
Qm90dG9tKCkgY29uc3QKK0xheW91dFVuaXQgTGVnYWN5Um9vdElubGluZUJveDo6c2VsZWN0aW9u
Qm90dG9tKCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkJvdHRvbSA9IG1fbGlu
ZUJvdHRvbTsKIApAQCAtNjc5LDcgKzY3OSw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6
c2VsZWN0aW9uQm90dG9tKCkgY29uc3QKICAgICAgICAgICAgIFJlbmRlclJ1YnlCYXNlKiBiYXNl
ID0gcnVuLT5ydWJ5QmFzZSgpOwogICAgICAgICAgICAgaWYgKGJhc2UgJiYgdGV4dC0+bG9naWNh
bFRvcCgpID4gYmFzZS0+bG9naWNhbFRvcCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHJ1
YnkgdGV4dCBpcyBhYm92ZSB0aGUgcnVieSBiYXNlLgotICAgICAgICAgICAgICAgIGNvbnN0IFJv
b3RJbmxpbmVCb3gmIGNvbnRhaW5pbmdMaW5lID0gcnVuLT5pbmxpbmVCb3hXcmFwcGVyKCktPnJv
b3QoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiBjb250YWlu
aW5nTGluZSA9IHJ1bi0+aW5saW5lQm94V3JhcHBlcigpLT5yb290KCk7CiAgICAgICAgICAgICAg
ICAgTGF5b3V0VW5pdCBlbmNsb3NpbmdTZWxlY3Rpb25Cb3R0b20gPSBjb250YWluaW5nTGluZS5z
ZWxlY3Rpb25Cb3R0b20oKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGRlbHRhQmV0d2Vl
bk9iamVjdHMgPSB0ZXh0LT5sb2dpY2FsVG9wKCkgKyBydW4tPmxvZ2ljYWxUb3AoKTsKICAgICAg
ICAgICAgICAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkJvdHRvbUluUnVieVRleHRDb29yZHMgPSBl
bmNsb3NpbmdTZWxlY3Rpb25Cb3R0b20gLSBkZWx0YUJldHdlZW5PYmplY3RzOwpAQCAtNjkyLDcg
KzY5Miw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uQm90dG9tKCkgY29u
c3QKICAgICBMYXlvdXRVbml0IG5leHRUb3AgPSBuZXh0Um9vdEJveCgpLT5zZWxlY3Rpb25Ub3Ao
KTsKICAgICBpZiAobmV4dFRvcCA+IHNlbGVjdGlvbkJvdHRvbSAmJiBibG9ja0Zsb3coKS5jb250
YWluc0Zsb2F0cygpKSB7CiAgICAgICAgIC8vIFRoZSBuZXh0IGxpbmUgaGFzIGFjdHVhbGx5IGJl
ZW4gbW92ZWQgZnVydGhlciBvdmVyLCBwcm9iYWJseSBmcm9tIGEgbGFyZ2UgbGluZS1oZWlnaHQs
IGJ1dCBwb3NzaWJseSBiZWNhdXNlIHRoZQotICAgICAgICAvLyBsaW5lIHdhcyBmb3JjZWQgdG8g
Y2xlYXIgZmxvYXRzLiAgSWYgc28sIGxldCdzIGNoZWNrIHRoZSBvZmZzZXRzLCBhbmQgb25seSBi
ZSB3aWxsaW5nIHRvIHVzZSB0aGUgbmV4dAorICAgICAgICAvLyBsaW5lIHdhcyBmb3JjZWQgdG8g
Y2xlYXIgZmxvYXRzLiBJZiBzbywgbGV0J3MgY2hlY2sgdGhlIG9mZnNldHMsIGFuZCBvbmx5IGJl
IHdpbGxpbmcgdG8gdXNlIHRoZSBuZXh0CiAgICAgICAgIC8vIGxpbmUncyB0b3AgaWYgdGhlIG9m
ZnNldHMgYXJlIGdyZWF0ZXIgb24gYm90aCBzaWRlcy4KICAgICAgICAgTGF5b3V0VW5pdCBuZXh0
TGVmdCA9IGJsb2NrRmxvdygpLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShuZXh0VG9wLCBEb05v
dEluZGVudFRleHQpOwogICAgICAgICBMYXlvdXRVbml0IG5leHRSaWdodCA9IGJsb2NrRmxvdygp
LmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobmV4dFRvcCwgRG9Ob3RJbmRlbnRUZXh0KTsKQEAg
LTcwNSwxNyArNzA1LDE3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uQm90
dG9tKCkgY29uc3QKICAgICByZXR1cm4gbmV4dFRvcDsKIH0KIAotUmVuZGVyQmxvY2tGbG93JiBS
b290SW5saW5lQm94OjpibG9ja0Zsb3coKSBjb25zdAorUmVuZGVyQmxvY2tGbG93JiBMZWdhY3lS
b290SW5saW5lQm94OjpibG9ja0Zsb3coKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxS
ZW5kZXJCbG9ja0Zsb3c+KHJlbmRlcmVyKCkpOwogfQogCi1CaWRpU3RhdHVzIFJvb3RJbmxpbmVC
b3g6OmxpbmVCcmVha0JpZGlTdGF0dXMoKSBjb25zdAorQmlkaVN0YXR1cyBMZWdhY3lSb290SW5s
aW5lQm94OjpsaW5lQnJlYWtCaWRpU3RhdHVzKCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIHsgc3Rh
dGljX2Nhc3Q8VUNoYXJEaXJlY3Rpb24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0VvciksIHN0YXRp
Y19jYXN0PFVDaGFyRGlyZWN0aW9uPihtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0U3Ryb25nKSwg
c3RhdGljX2Nhc3Q8VUNoYXJEaXJlY3Rpb24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3QpLCBt
X2xpbmVCcmVha0NvbnRleHQuY29weVJlZigpIH07CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6
c2V0TGluZUJyZWFrSW5mbyhSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgYnJlYWtQb3Np
dGlvbiwgY29uc3QgQmlkaVN0YXR1cyYgc3RhdHVzKQordm9pZCBMZWdhY3lSb290SW5saW5lQm94
OjpzZXRMaW5lQnJlYWtJbmZvKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBicmVha1Bv
c2l0aW9uLCBjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMpCiB7CiAgICAgbV9saW5lQnJlYWtPYmog
PSBtYWtlV2Vha1B0cihvYmplY3QpOwogICAgIG1fbGluZUJyZWFrUG9zID0gYnJlYWtQb3NpdGlv
bjsKQEAgLTcyNSwzMSArNzI1LDMxIEBAIHZvaWQgUm9vdElubGluZUJveDo6c2V0TGluZUJyZWFr
SW5mbyhSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgYnJlYWtQb3NpdGlvCiAgICAgbV9s
aW5lQnJlYWtDb250ZXh0ID0gc3RhdHVzLmNvbnRleHQ7CiB9CiAKLUVsbGlwc2lzQm94KiBSb290
SW5saW5lQm94OjplbGxpcHNpc0JveCgpIGNvbnN0CitFbGxpcHNpc0JveCogTGVnYWN5Um9vdElu
bGluZUJveDo6ZWxsaXBzaXNCb3goKSBjb25zdAogewogICAgIGlmICghaGFzRWxsaXBzaXNCb3go
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGdFbGxpcHNpc0JveE1hcC0+
Z2V0KHRoaXMpOwogfQogCi12b2lkIFJvb3RJbmxpbmVCb3g6OnJlbW92ZUxpbmVCb3hGcm9tUmVu
ZGVyT2JqZWN0KCkKK3ZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6cmVtb3ZlTGluZUJveEZyb21S
ZW5kZXJPYmplY3QoKQogewogICAgIC8vIE51bGwgaWYgd2UgYXJlIGRlc3Ryb3lpbmcgTGVnYWN5
TGluZUxheW91dC4KICAgICBpZiAoYXV0byogbGVnYWN5TGluZUxheW91dCA9IGJsb2NrRmxvdygp
LmxlZ2FjeUxpbmVMYXlvdXQoKSkKICAgICAgICAgbGVnYWN5TGluZUxheW91dC0+bGluZUJveGVz
KCkucmVtb3ZlTGluZUJveCh0aGlzKTsKIH0KIAotdm9pZCBSb290SW5saW5lQm94OjpleHRyYWN0
TGluZUJveEZyb21SZW5kZXJPYmplY3QoKQordm9pZCBMZWdhY3lSb290SW5saW5lQm94OjpleHRy
YWN0TGluZUJveEZyb21SZW5kZXJPYmplY3QoKQogewogICAgIGJsb2NrRmxvdygpLmxlZ2FjeUxp
bmVMYXlvdXQoKS0+bGluZUJveGVzKCkuZXh0cmFjdExpbmVCb3godGhpcyk7CiB9CiAKLXZvaWQg
Um9vdElubGluZUJveDo6YXR0YWNoTGluZUJveFRvUmVuZGVyT2JqZWN0KCkKK3ZvaWQgTGVnYWN5
Um9vdElubGluZUJveDo6YXR0YWNoTGluZUJveFRvUmVuZGVyT2JqZWN0KCkKIHsKICAgICBibG9j
a0Zsb3coKS5sZWdhY3lMaW5lTGF5b3V0KCktPmxpbmVCb3hlcygpLmF0dGFjaExpbmVCb3godGhp
cyk7CiB9CiAKLUxheW91dFJlY3QgUm9vdElubGluZUJveDo6cGFkZGVkTGF5b3V0T3ZlcmZsb3dS
ZWN0KExheW91dFVuaXQgZW5kUGFkZGluZykgY29uc3QKK0xheW91dFJlY3QgTGVnYWN5Um9vdElu
bGluZUJveDo6cGFkZGVkTGF5b3V0T3ZlcmZsb3dSZWN0KExheW91dFVuaXQgZW5kUGFkZGluZykg
Y29uc3QKIHsKICAgICBMYXlvdXRSZWN0IGxpbmVMYXlvdXRPdmVyZmxvdyA9IGxheW91dE92ZXJm
bG93UmVjdChsaW5lVG9wKCksIGxpbmVCb3R0b20oKSk7CiAgICAgaWYgKCFlbmRQYWRkaW5nKQpA
QCAtNzgyLDggKzc4Miw4IEBAIHN0YXRpYyB2b2lkIHNldEFzY2VudEFuZERlc2NlbnQoTGF5b3V0
VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50LCBMYXlvdXRVCiAgICAgfQogfQogCi12
b2lkIFJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERlc2NlbnRGb3JCb3goTGVnYWN5SW5saW5lQm94
JiBib3gsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwg
TGF5b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGFmZmVjdHNBc2NlbnQsIGJvb2wmIGFm
ZmVjdHNEZXNjZW50KSBjb25zdAordm9pZCBMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmRE
ZXNjZW50Rm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94LCBHbHlwaE92ZXJmbG93QW5kRmFsbGJh
Y2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIExheW91dFVuaXQmIGFzY2VudCwgTGF5b3V0VW5p
dCYgZGVzY2VudCwKKyAgICBib29sJiBhZmZlY3RzQXNjZW50LCBib29sJiBhZmZlY3RzRGVzY2Vu
dCkgY29uc3QKIHsKICAgICBib29sIGFzY2VudERlc2NlbnRTZXQgPSBmYWxzZTsKIApAQCAtODk4
LDcgKzg5OCw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveChM
ZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyZmxvd0FuCiAgICAgfQogfQogCi1MYXlvdXRV
bml0IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goTGVnYWN5SW5saW5lQm94
KiBib3gsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlKQorTGF5
b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KExlZ2Fj
eUlubGluZUJveCogYm94LCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25D
YWNoZSkKIHsKICAgICBpZiAoYm94LT5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkpCiAg
ICAgICAgIHJldHVybiBMYXlvdXRVbml0KGJveC0+cGFyZW50KCktPmxvZ2ljYWxUb3AoKSk7CkBA
IC05MjUsNyArOTI1LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0
aW9uRm9yQm94KExlZ2FjeUlubGluZUJveCogYm94LCBWZXJ0aWNhbFAKICAgICBWZXJ0aWNhbEFs
aWduIHZlcnRpY2FsQWxpZ24gPSByZW5kZXJlci0+c3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7CiAg
ICAgaWYgKHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6VG9wIHx8IHZlcnRpY2FsQWxp
Z24gPT0gVmVydGljYWxBbGlnbjo6Qm90dG9tKQogICAgICAgICByZXR1cm4gMDsKLSAgIAorCiAg
ICAgUmVuZGVyRWxlbWVudCogcGFyZW50ID0gcmVuZGVyZXItPnBhcmVudCgpOwogICAgIGlmIChw
YXJlbnQtPmlzUmVuZGVySW5saW5lKCkgJiYgcGFyZW50LT5zdHlsZSgpLnZlcnRpY2FsQWxpZ24o
KSAhPSBWZXJ0aWNhbEFsaWduOjpUb3AgJiYgcGFyZW50LT5zdHlsZSgpLnZlcnRpY2FsQWxpZ24o
KSAhPSBWZXJ0aWNhbEFsaWduOjpCb3R0b20pCiAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gPSBi
b3gtPnBhcmVudCgpLT5sb2dpY2FsVG9wKCk7CkBAIC05NTUsNyArOTU1LDcgQEAgTGF5b3V0VW5p
dCBSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KExlZ2FjeUlubGluZUJveCog
Ym94LCBWZXJ0aWNhbFAKICAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gKz0gLXJlbmRlcmVy
LT5saW5lSGVpZ2h0KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbikgLyAyICsgcmVuZGVyZXItPmJh
c2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKCksIGZpcnN0TGluZSwgbGluZURpcmVjdGlvbik7
CiAgICAgICAgIGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6TGVuZ3Ro
KSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQ7Ci0gICAgICAgICAgICAvL1Bl
ciBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjcHJvcGRlZi12ZXJ0aWNh
bC1hbGlnbjogJ1BlcmNlbnRhZ2VzOiByZWZlciB0byB0aGUgJ2xpbmUtaGVpZ2h0JyBvZiB0aGUg
ZWxlbWVudCBpdHNlbGYnLgorICAgICAgICAgICAgLy8gUGVyIGh0dHA6Ly93d3cudzMub3JnL1RS
L0NTUzIxL3Zpc3VkZXQuaHRtbCNwcm9wZGVmLXZlcnRpY2FsLWFsaWduOiAnUGVyY2VudGFnZXM6
IHJlZmVyIHRvIHRoZSAnbGluZS1oZWlnaHQnIG9mIHRoZSBlbGVtZW50IGl0c2VsZicuCiAgICAg
ICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmVydGljYWxBbGlnbkxlbmd0aCgpLmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQgPSByZW5kZXJl
ci0+c3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTk3
MSw3ICs5NzEsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25G
b3JCb3goTGVnYWN5SW5saW5lQm94KiBib3gsIFZlcnRpY2FsUAogICAgIHJldHVybiB2ZXJ0aWNh
bFBvc2l0aW9uOwogfQogCi1ib29sIFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVMZWFkaW5nRm9yQm94
KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAorYm9vbCBMZWdhY3lSb290SW5saW5lQm94Ojpp
bmNsdWRlTGVhZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKIHsKICAgICBp
ZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRP
ckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC05ODAsNyArOTgwLDcgQEAgYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlTGVh
ZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKICAgICByZXR1cm4gbGluZUJv
eENvbnRhaW4uY29udGFpbnMoTGluZUJveENvbnRhaW46OklubGluZSkgfHwgKCZib3ggPT0gdGhp
cyAmJiBsaW5lQm94Q29udGFpbi5jb250YWlucyhMaW5lQm94Q29udGFpbjo6QmxvY2spKTsKIH0K
IAotYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlRm9udEZvckJveChMZWdhY3lJbmxpbmVCb3gm
IGJveCkgY29uc3QKK2Jvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3go
TGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiB7CiAgICAgaWYgKGJveC5yZW5kZXJlcigpLmlz
UmVwbGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAhYm94
LmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTkxLDcgKzk5
MSw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3goTGVnYWN5SW5saW5l
Qm94JiBib3gpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5saW5lQm94Q29u
dGFpbigpLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpGb250KTsKIH0KIAotYm9vbCBSb290SW5s
aW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAor
Ym9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94KExlZ2FjeUlubGlu
ZUJveCYgYm94KSBjb25zdAogewogICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkg
fHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlr
ZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIGJv
b2wgUm9vdElubGluZUJveDo6aW5jbHVkZUdseXBoc0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJv
eCkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLmxpbmVCb3hDb250YWluKCku
Y29udGFpbnMoTGluZUJveENvbnRhaW46OkdseXBocyk7CiB9CiAKLWJvb2wgUm9vdElubGluZUJv
eDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJGb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0
Citib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVJbml0aWFsTGV0dGVyRm9yQm94KExl
Z2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewogICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1Jl
cGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5i
ZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMTMsNyArMTAx
Myw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJGb3JCb3goTGVn
YWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5s
aW5lQm94Q29udGFpbigpLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpJbml0aWFsTGV0dGVyKTsK
IH0KIAotYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlTWFyZ2luRm9yQm94KExlZ2FjeUlubGlu
ZUJveCYgYm94KSBjb25zdAorYm9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlTWFyZ2lu
Rm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewogICAgIGlmIChib3gucmVuZGVy
ZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkg
JiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEw
MjEsMTkgKzEwMjEsMTkgQEAgYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlTWFyZ2luRm9yQm94
KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxl
KCkubGluZUJveENvbnRhaW4oKS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6SW5saW5lQm94KTsK
IH0KIAotYm9vbCBSb290SW5saW5lQm94OjpmaXRzVG9HbHlwaHMoKSBjb25zdAorYm9vbCBMZWdh
Y3lSb290SW5saW5lQm94OjpmaXRzVG9HbHlwaHMoKSBjb25zdAogewogICAgIHJldHVybiByZW5k
ZXJlcigpLnN0eWxlKCkubGluZUJveENvbnRhaW4oKS5jb250YWluc0FueSh7IExpbmVCb3hDb250
YWluOjpHbHlwaHMsIExpbmVCb3hDb250YWluOjpJbml0aWFsTGV0dGVyIH0pOwogfQogCi1ib29s
IFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVzUm9vdExpbmVCb3hGb250T3JMZWFkaW5nKCkgY29uc3QK
K2Jvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZXNSb290TGluZUJveEZvbnRPckxlYWRp
bmcoKSBjb25zdAogewogICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkubGluZUJveENvbnRh
aW4oKS5jb250YWluc0FueSh7IExpbmVCb3hDb250YWluOjpCbG9jaywgTGluZUJveENvbnRhaW46
OklubGluZSwgTGluZUJveENvbnRhaW46OkZvbnQgfSk7CiB9CiAKICNpZiBFTkFCTEUoVFJFRV9E
RUJVR0dJTkcpCiAKLXZvaWQgUm9vdElubGluZUJveDo6b3V0cHV0TGluZUJveChXVEY6OlRleHRT
dHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNvbnN0Cit2b2lkIExlZ2FjeVJv
b3RJbmxpbmVCb3g6Om91dHB1dExpbmVCb3goV1RGOjpUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wg
bWFyaywgaW50IGRlcHRoKSBjb25zdAogewogICAgIHN0cmVhbSA8PCAiLS0tLS0tLS0gLS0iOwog
ICAgIGludCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCB2b2lk
IFJvb3RJbmxpbmVCb3g6Om91dHB1dExpbmVCb3goV1RGOjpUZXh0U3RyZWFtJiBzdHJlYW0sIGJv
b2wgbWFyaywgaW50IGRlcHRoKQogICAgIExlZ2FjeUlubGluZUJveDo6b3V0cHV0TGluZUJveChz
dHJlYW0sIG1hcmssIGRlcHRoKTsKIH0KIAotY29uc3QgY2hhciogUm9vdElubGluZUJveDo6Ym94
TmFtZSgpIGNvbnN0Citjb25zdCBjaGFyKiBMZWdhY3lSb290SW5saW5lQm94Ojpib3hOYW1lKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gIlJvb3RJbmxpbmVCb3giOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmgKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1l
IGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApyZW5hbWUgdG8g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guaAppbmRleCAxMDU1
ZGM4Nzg3MTEuLmEzNzc0YmQwMjBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
Um9vdElubGluZUJveC5oCkBAIC0zNiwxOCArMzYsMTggQEAgY2xhc3MgUmVuZGVyRnJhZ21lbnRD
b250YWluZXI7CiBzdHJ1Y3QgQmlkaVN0YXR1czsKIHN0cnVjdCBHYXBSZWN0czsKIAotY2xhc3Mg
Um9vdElubGluZUJveCA6IHB1YmxpYyBJbmxpbmVGbG93Qm94LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Um9vdElubGluZUJveD4gewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUm9vdElubGlu
ZUJveCk7CitjbGFzcyBMZWdhY3lSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMZWdhY3lSb290SW5saW5lQm94PiB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChMZWdhY3lSb290SW5saW5lQm94KTsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBSb290SW5saW5lQm94KFJlbmRlckJsb2NrRmxvdyYpOwotICAgIHZpcnR1YWwgflJvb3RJ
bmxpbmVCb3goKTsKKyAgICBleHBsaWNpdCBMZWdhY3lSb290SW5saW5lQm94KFJlbmRlckJsb2Nr
RmxvdyYpOworICAgIHZpcnR1YWwgfkxlZ2FjeVJvb3RJbmxpbmVCb3goKTsKIAogICAgIFJlbmRl
ckJsb2NrRmxvdyYgYmxvY2tGbG93KCkgY29uc3Q7CiAKICAgICB2b2lkIGRldGFjaEVsbGlwc2lz
Qm94KCk7CiAKLSAgICBSb290SW5saW5lQm94KiBuZXh0Um9vdEJveCgpIGNvbnN0OwotICAgIFJv
b3RJbmxpbmVCb3gqIHByZXZSb290Qm94KCkgY29uc3Q7CisgICAgTGVnYWN5Um9vdElubGluZUJv
eCogbmV4dFJvb3RCb3goKSBjb25zdDsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBwcmV2Um9v
dEJveCgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQg
ZHkpIGZpbmFsOwogCkBAIC0yMDEsNyArMjAxLDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVu
aXQgYmVmb3JlQW5ub3RhdGlvbnNBZGp1c3RtZW50KCkgY29uc3Q7CiAKLSAgICAvLyBXaGVyZSB0
aGlzIGxpbmUgZW5kZWQuICBUaGUgZXhhY3Qgb2JqZWN0IGFuZCB0aGUgcG9zaXRpb24gd2l0aGlu
IHRoYXQgb2JqZWN0IGFyZSBzdG9yZWQgc28gdGhhdAorICAgIC8vIFdoZXJlIHRoaXMgbGluZSBl
bmRlZC4gVGhlIGV4YWN0IG9iamVjdCBhbmQgdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGF0IG9iamVj
dCBhcmUgc3RvcmVkIHNvIHRoYXQKICAgICAvLyB3ZSBjYW4gY3JlYXRlIGFuIElubGluZUl0ZXJh
dG9yIGJlZ2lubmluZyBqdXN0IGFmdGVyIHRoZSBlbmQgb2YgdGhpcyBsaW5lLgogICAgIFdlYWtQ
dHI8UmVuZGVyT2JqZWN0PiBtX2xpbmVCcmVha09iajsKICAgICBSZWZQdHI8QmlkaUNvbnRleHQ+
IG1fbGluZUJyZWFrQ29udGV4dDsKQEAgLTIyMiwxNiArMjIyLDE2IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9saW5lQnJlYWtQb3MgeyAwIH07CiB9OwogCi1pbmxpbmUgUm9vdElubGluZUJv
eCogUm9vdElubGluZUJveDo6bmV4dFJvb3RCb3goKSBjb25zdAoraW5saW5lIExlZ2FjeVJvb3RJ
bmxpbmVCb3gqIExlZ2FjeVJvb3RJbmxpbmVCb3g6Om5leHRSb290Qm94KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gZG93bmNhc3Q8Um9vdElubGluZUJveD4obV9uZXh0TGluZUJveCk7CisgICAgcmV0
dXJuIGRvd25jYXN0PExlZ2FjeVJvb3RJbmxpbmVCb3g+KG1fbmV4dExpbmVCb3gpOwogfQogCi1p
bmxpbmUgUm9vdElubGluZUJveCogUm9vdElubGluZUJveDo6cHJldlJvb3RCb3goKSBjb25zdAor
aW5saW5lIExlZ2FjeVJvb3RJbmxpbmVCb3gqIExlZ2FjeVJvb3RJbmxpbmVCb3g6OnByZXZSb290
Qm94KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Um9vdElubGluZUJveD4obV9wcmV2
TGluZUJveCk7CisgICAgcmV0dXJuIGRvd25jYXN0PExlZ2FjeVJvb3RJbmxpbmVCb3g+KG1fcHJl
dkxpbmVCb3gpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfSU5MSU5FX0JPWChSb290SW5saW5lQm94LCBpc1Jvb3RJbmxpbmVCb3goKSkKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfSU5MSU5FX0JPWChMZWdhY3lSb290SW5saW5lQm94LCBpc1Jv
b3RJbmxpbmVCb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmlu
ZGV4IDg0YzdhNDYwNWJkZC4uZTIwODc1NzY1NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpk
aXJ0eUZvckxheW91dEZyb21QZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHMoKQogdm9pZCBSZW5k
ZXJCbG9jazo6c2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKQogewogICAgIGlmIChjaGlsZHJl
bklubGluZSgpKSB7Ci0gICAgICAgIExpc3RIYXNoU2V0PFJvb3RJbmxpbmVCb3gqPiBsaW5lQm94
ZXM7CisgICAgICAgIExpc3RIYXNoU2V0PExlZ2FjeVJvb3RJbmxpbmVCb3gqPiBsaW5lQm94ZXM7
CiAgICAgICAgIGZvciAoSW5saW5lV2Fsa2VyIHdhbGtlcigqdGhpcyk7ICF3YWxrZXIuYXRFbmQo
KTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciA9ICp3YWxrZXIuY3VycmVudCgpOwogICAgICAgICAgICAgaWYgKCFyZW5kZXJlci5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVuZGVyZXIuaXNSZXBsYWNlZCgpIHx8IHJlbmRlcmVyLmlz
RmxvYXRpbmcoKSkpIHsKQEAgLTkwMCw3ICs5MDAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzaW1w
bGlmaWVkTm9ybWFsRmxvd0xheW91dCgpCiAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRv
IGludmFsaWRhdGUgdGhlIGtub3duVG9IYXZlTm9PdmVyZmxvdyBmbGFnIG9uIHRoZSBJbmxpbmVC
b3hlcy4KICAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAgdGV4dEJveERh
dGFNYXA7ICAgICAgICAgICAgICAgICAgCiAgICAgICAgIGZvciAoYXV0byBpdCA9IGxpbmVCb3hl
cy5iZWdpbigpLCBlbmQgPSBsaW5lQm94ZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICAgICAgUm9vdElubGluZUJveCogYm94ID0gKml0OworICAgICAgICAgICAgTGVnYWN5Um9v
dElubGluZUJveCogYm94ID0gKml0OwogICAgICAgICAgICAgYm94LT5jb21wdXRlT3ZlcmZsb3co
Ym94LT5saW5lVG9wKCksIGJveC0+bGluZUJvdHRvbSgpLCB0ZXh0Qm94RGF0YU1hcCk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcAppbmRleCA3MGZmMWM4MDFmZTcuLmM2NWE4ZDAwN2ZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTE2OTksMTMgKzE2OTks
MTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEJsb2NrQ2hpbGRGb3JQYWdp
bmF0aW9uKExheW91dFVuaXQgbG9naWNhbFRvcEEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1z
dGF0aWMgaW5saW5lIExheW91dFVuaXQgY2FsY3VsYXRlTWluaW11bVBhZ2VIZWlnaHQoY29uc3Qg
UmVuZGVyU3R5bGUmIHJlbmRlclN0eWxlLCBSb290SW5saW5lQm94JiBsYXN0TGluZSwgTGF5b3V0
VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCitzdGF0aWMgaW5saW5lIExheW91
dFVuaXQgY2FsY3VsYXRlTWluaW11bVBhZ2VIZWlnaHQoY29uc3QgUmVuZGVyU3R5bGUmIHJlbmRl
clN0eWxlLCBMZWdhY3lSb290SW5saW5lQm94JiBsYXN0TGluZSwgTGF5b3V0VW5pdCBsaW5lVG9w
LCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCiB7CiAgICAgLy8gV2UgbWF5IHJlcXVpcmUgYSBjZXJ0
YWluIG1pbmltdW0gbnVtYmVyIG9mIGxpbmVzIHBlciBwYWdlIGluIG9yZGVyIHRvIHNhdGlzZnkK
ICAgICAvLyBvcnBoYW5zIGFuZCB3aWRvd3MsIGFuZCB0aGF0IG1heSBhZmZlY3QgdGhlIG1pbmlt
dW0gcGFnZSBoZWlnaHQuCiAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gc3RkOjptYXg8dW5zaWdu
ZWQ+KHJlbmRlclN0eWxlLmhhc0F1dG9PcnBoYW5zKCkgPyAxIDogcmVuZGVyU3R5bGUub3JwaGFu
cygpLCByZW5kZXJTdHlsZS5oYXNBdXRvV2lkb3dzKCkgPyAxIDogcmVuZGVyU3R5bGUud2lkb3dz
KCkpOwogICAgIGlmIChsaW5lQ291bnQgPiAxKSB7Ci0gICAgICAgIFJvb3RJbmxpbmVCb3gqIGxp
bmUgPSAmbGFzdExpbmU7CisgICAgICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmUgPSAmbGFz
dExpbmU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBsaW5lQ291bnQgJiYgbGlu
ZS0+cHJldlJvb3RCb3goKTsgaSsrKQogICAgICAgICAgICAgbGluZSA9IGxpbmUtPnByZXZSb290
Qm94KCk7CiAKQEAgLTE3MTcsNyArMTcxNyw3IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBj
YWxjdWxhdGVNaW5pbXVtUGFnZUhlaWdodChjb25zdCBSZW5kZXJTdHlsZSYgcmVuZGVyU3R5CiAg
ICAgcmV0dXJuIGxpbmVCb3R0b20gLSBsaW5lVG9wOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wg
bmVlZHNBcHBsZU1haWxQYWdpbmF0aW9uUXVpcmsoUm9vdElubGluZUJveCYgbGluZUJveCkKK3N0
YXRpYyBpbmxpbmUgYm9vbCBuZWVkc0FwcGxlTWFpbFBhZ2luYXRpb25RdWlyayhMZWdhY3lSb290
SW5saW5lQm94JiBsaW5lQm94KQogewogICAgIGF1dG8mIHJlbmRlcmVyID0gbGluZUJveC5yZW5k
ZXJlcigpOwogCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBjbGVhclNob3VsZEJy
ZWFrQXRMaW5lVG9Bdm9pZFdpZG93SWZOZWVkZWQoUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsbwog
ICAgIGJsb2NrRmxvdy5zZXREaWRCcmVha0F0TGluZVRvQXZvaWRXaWRvdygpOwogfQogCi12b2lk
IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlvbihSb290SW5s
aW5lQm94KiBsaW5lQm94LCBMYXlvdXRVbml0JiBkZWx0YSwgYm9vbCYgb3ZlcmZsb3dzRnJhZ21l
bnQsIFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdykKK3ZvaWQgUmVuZGVyQmxv
Y2tGbG93OjphZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKExlZ2FjeVJvb3RJbmxpbmVC
b3gqIGxpbmVCb3gsIExheW91dFVuaXQmIGRlbHRhLCBib29sJiBvdmVyZmxvd3NGcmFnbWVudCwg
UmVuZGVyRnJhZ21lbnRlZEZsb3cqIGZyYWdtZW50ZWRGbG93KQogewogICAgIC8vIEZJWE1FOiBG
b3Igbm93IHdlIHBhZ2luYXRlIHVzaW5nIGxpbmUgb3ZlcmZsb3cuIFRoaXMgZW5zdXJlcyB0aGF0
IGxpbmVzIGRvbid0IG92ZXJsYXAgYXQgYWxsIHdoZW4gd2UKICAgICAvLyBwdXQgYSBzdHJ1dCBi
ZXR3ZWVuIHRoZW0gZm9yIHBhZ2luYXRpb24gcHVycG9zZXMuIEhvd2V2ZXIsIHRoaXMgcmVhbGx5
IGlzbid0IHRoZSBkZXNpcmVkIHJlbmRlcmluZywgc2luY2UKQEAgLTIwNzksNyArMjA3OSw3IEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAgCiAgICAgc2V0
TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0gbWFrZVVuaXF1ZTxSb290
SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3JpZEJveCA9IG1ha2VVbmlxdWU8TGVn
YWN5Um9vdElubGluZUJveD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hp
bGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFs
bHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAgICBsaW5lR3JpZEJveC0+c2V0Q29uc3Ry
dWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0ZXh0Qm94RGF0
YU1hcDsKQEAgLTMxMDQsNyArMzEwNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpmaXRCb3Jk
ZXJUb0xpbmVzSWZOZWVkZWQoKQogICAgIGNsZWFyT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aCgpOwog
fQogCi12b2lkIFJlbmRlckJsb2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20sIFJvb3RJbmxpbmVC
b3gqIGhpZ2hlc3QpCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2Nr
UmFuZ2UoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20sIExl
Z2FjeVJvb3RJbmxpbmVCb3gqIGhpZ2hlc3QpCiB7CiAgICAgaWYgKGxvZ2ljYWxUb3AgPj0gbG9n
aWNhbEJvdHRvbSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzExNyw4ICszMTE3LDggQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6Om1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKExheW91dFVuaXQgbG9n
aWNhbFRvcCwgTGF5b3V0VW4KICAgICB9CiAjZW5kaWYKIAotICAgIFJvb3RJbmxpbmVCb3gqIGxv
d2VzdERpcnR5TGluZSA9IGxhc3RSb290Qm94KCk7Ci0gICAgUm9vdElubGluZUJveCogYWZ0ZXJM
b3dlc3QgPSBsb3dlc3REaXJ0eUxpbmU7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbG93ZXN0
RGlydHlMaW5lID0gbGFzdFJvb3RCb3goKTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBhZnRl
ckxvd2VzdCA9IGxvd2VzdERpcnR5TGluZTsKICAgICB3aGlsZSAobG93ZXN0RGlydHlMaW5lICYm
IGxvd2VzdERpcnR5TGluZS0+bGluZUJveEJvdHRvbSgpID49IGxvZ2ljYWxCb3R0b20gJiYgbG9n
aWNhbEJvdHRvbSA8IExheW91dFVuaXQ6Om1heCgpKSB7CiAgICAgICAgIGFmdGVyTG93ZXN0ID0g
bG93ZXN0RGlydHlMaW5lOwogICAgICAgICBsb3dlc3REaXJ0eUxpbmUgPSBsb3dlc3REaXJ0eUxp
bmUtPnByZXZSb290Qm94KCk7CkBAIC0zMjMwLDcgKzMyMzAsNyBAQCBHYXBSZWN0cyBSZW5kZXJC
bG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29u
c3QgTGF5bwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGF1dG8gaGFzU2Vs
ZWN0ZWRDaGlsZHJlbiA9IFsmXShjb25zdCBSb290SW5saW5lQm94JiByb290KSB7CisgICAgYXV0
byBoYXNTZWxlY3RlZENoaWxkcmVuID0gWyZdKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJv
b3QpIHsKICAgICAgICAgZm9yIChhdXRvKiBib3ggPSByb290LmZpcnN0TGVhZkRlc2NlbmRhbnQo
KTsgYm94OyBib3ggPSBib3gtPm5leHRMZWFmT25MaW5lKCkpIHsKICAgICAgICAgICAgIGlmICgh
aXM8SW5saW5lVGV4dEJveD4oKmJveCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYm94LT5zZWxl
Y3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdodFN0YXRlOjpOb25lKQpAQCAtMzI2NSw4ICszMjY1LDgg
QEAgR2FwUmVjdHMgUmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJs
b2NrJiByb290QmxvY2ssIGNvbnN0IExheW8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07
CiAKLSAgICBSb290SW5saW5lQm94KiBsYXN0U2VsZWN0ZWRMaW5lID0gMDsKLSAgICBSb290SW5s
aW5lQm94KiBjdXJyOworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxhc3RTZWxlY3RlZExpbmUg
PSAwOworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGN1cnI7CiAgICAgZm9yIChjdXJyID0gZmly
c3RSb290Qm94KCk7IGN1cnIgJiYgIWhhc1NlbGVjdGVkQ2hpbGRyZW4oKmN1cnIpOyBjdXJyID0g
Y3Vyci0+bmV4dFJvb3RCb3goKSkgeyB9CiAKICAgICAvLyBOb3cgcGFpbnQgdGhlIGdhcHMgZm9y
IHRoZSBsaW5lcy4KQEAgLTMzMjUsOCArMzMyNSw5IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpj
bGVhck11bHRpQ29sdW1uRmxvdygpCiAgICAgcmFyZUJsb2NrRmxvd0RhdGEoKS0+bV9tdWx0aUNv
bHVtbkZsb3cuY2xlYXIoKTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkQ2hlY2tMaW5lcyhjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdykKK2Jvb2wgc2hvdWxkQ2hlY2tMaW5lc0Zvckxp
bmVDb3VudChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdykKIHsKKyAgICAvLyBGSVhN
RTogVGhpcyB0ZXN0IGRvZXMgbm90IG1ha2UgbXVjaCBzZW5zZS4KICAgICByZXR1cm4gIWJsb2Nr
Rmxvdy5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgYmxvY2tGbG93LnN0eWxl
KCkuaGVpZ2h0KCkuaXNBdXRvKCk7CiB9CiAKQEAgLTMzNDksNyArMzM1MCw3IEBAIGludCBSZW5k
ZXJCbG9ja0Zsb3c6OmxpbmVDb3VudCgpIGNvbnN0CiAKICAgICBpbnQgY291bnQgPSAwOwogICAg
IGZvciAoYXV0byYgYmxvY2tGbG93IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyQmxvY2tGbG93Pigq
dGhpcykpIHsKLSAgICAgICAgaWYgKCFzaG91bGRDaGVja0xpbmVzKGJsb2NrRmxvdykpCisgICAg
ICAgIGlmICghc2hvdWxkQ2hlY2tMaW5lc0ZvckxpbmVDb3VudChibG9ja0Zsb3cpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGNvdW50ICs9IGJsb2NrRmxvdy5saW5lQ291bnQoKTsK
ICAgICB9CkBAIC0zMzcyLDcgKzMzNzMsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xlYXJU
cnVuY2F0aW9uKCkKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGJsb2NrRmxvdyA6IGNoaWxkcmVu
T2ZUeXBlPFJlbmRlckJsb2NrRmxvdz4oKnRoaXMpKSB7Ci0gICAgICAgIGlmIChzaG91bGRDaGVj
a0xpbmVzKGJsb2NrRmxvdykpCisgICAgICAgIGlmIChzaG91bGRDaGVja0xpbmVzRm9yTGluZUNv
dW50KGJsb2NrRmxvdykpCiAgICAgICAgICAgICBibG9ja0Zsb3cuY2xlYXJUcnVuY2F0aW9uKCk7
CiAgICAgfQogfQpAQCAtMzU3Myw3ICszNTc0LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJs
b2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnMK
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVu
KFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFs
T2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikKIHsKICAgICBBU1NFUlQoY2hp
bGRyZW5JbmxpbmUoKSk7Ci0gICAgZm9yIChSb290SW5saW5lQm94KiBjdXJyID0gZmlyc3RSb290
Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgpKSB7CisgICAgZm9yIChhdXRv
KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgp
KSB7CiAgICAgICAgIExheW91dFVuaXQgdG9wID0gc3RkOjptYXgoY3Vyci0+bGluZVRvcCgpLCBM
YXlvdXRVbml0KGN1cnItPnRvcCgpKSk7CiAgICAgICAgIExheW91dFVuaXQgYm90dG9tID0gc3Rk
OjptaW4oY3Vyci0+bGluZUJvdHRvbSgpLCBMYXlvdXRVbml0KGN1cnItPnRvcCgpICsgY3Vyci0+
aGVpZ2h0KCkpKTsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0IHsgTGF5b3V0VW5pdChhZGRpdGlv
bmFsT2Zmc2V0LngoKSArIGN1cnItPngoKSksIGFkZGl0aW9uYWxPZmZzZXQueSgpICsgdG9wLCBM
YXlvdXRVbml0KGN1cnItPndpZHRoKCkpLCBib3R0b20gLSB0b3AgfTsKQEAgLTM4MjQsNyArMzgy
NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpvdXRwdXRMaW5lVHJlZUFuZE1hcmsoV1RGOjpU
ZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExlZ2FjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZW5kaWYKLSAgICBmb3IgKGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3QgPSBmaXJzdFJvb3RCb3go
KTsgcm9vdDsgcm9vdCA9IHJvb3QtPm5leHRSb290Qm94KCkpCisgICAgZm9yIChjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94KiByb290ID0gZmlyc3RSb290Qm94KCk7IHJvb3Q7IHJvb3QgPSByb290
LT5uZXh0Um9vdEJveCgpKQogICAgICAgICByb290LT5vdXRwdXRMaW5lVHJlZUFuZE1hcmsoc3Ry
ZWFtLCBtYXJrZWRCb3gsIGRlcHRoKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IGI4ZTdmZDVmOTYyNy4uZjAzNjZiZjc4YjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgTWFyZ2luVmFsdWVzIG1fbWFyZ2lu
czsKICAgICAgICAgaW50IG1fbGluZUJyZWFrVG9Bdm9pZFdpZG93OwotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Um9vdElubGluZUJveD4gbV9saW5lR3JpZEJveDsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeVJvb3RJbmxpbmVCb3g+IG1fbGluZUdyaWRCb3g7CiAKICAgICAgICAgV2Vh
a1B0cjxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+IG1fbXVsdGlDb2x1bW5GbG93OwogICAgICAgICAK
QEAgLTI2Miw4ICsyNjIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWRCcmVha0F0TGluZVRvQXZv
aWRXaWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVCbG9ja0Zsb3dEYXRhKCkgJiYgcmFyZUJs
b2NrRmxvd0RhdGEoKS0+bV9kaWRCcmVha0F0TGluZVRvQXZvaWRXaWRvdzsgfQogICAgIGJvb2wg
cmVsYXlvdXRUb0F2b2lkV2lkb3dzKCk7CiAKLSAgICBSb290SW5saW5lQm94KiBsaW5lR3JpZEJv
eCgpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVCbG9ja0Zsb3dEYXRhKCkgPyByYXJlQmxvY2tGbG93
RGF0YSgpLT5tX2xpbmVHcmlkQm94LmdldCgpIDogbnVsbHB0cjsgfQotICAgIHZvaWQgc2V0TGlu
ZUdyaWRCb3goc3RkOjp1bmlxdWVfcHRyPFJvb3RJbmxpbmVCb3g+IGJveCkKKyAgICBMZWdhY3lS
b290SW5saW5lQm94KiBsaW5lR3JpZEJveCgpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVCbG9ja0Zs
b3dEYXRhKCkgPyByYXJlQmxvY2tGbG93RGF0YSgpLT5tX2xpbmVHcmlkQm94LmdldCgpIDogbnVs
bHB0cjsgfQorICAgIHZvaWQgc2V0TGluZUdyaWRCb3goc3RkOjp1bmlxdWVfcHRyPExlZ2FjeVJv
b3RJbmxpbmVCb3g+IGJveCkKICAgICB7CiAgICAgICAgIGVuc3VyZVJhcmVCbG9ja0Zsb3dEYXRh
KCkubV9saW5lR3JpZEJveCA9IFdURk1vdmUoYm94KTsKICAgICB9CkBAIC0zMzcsOCArMzM3LDgg
QEAgcHVibGljOgogCiAgICAgTGF5b3V0UG9pbnQgZmxpcEZsb2F0Rm9yV3JpdGluZ01vZGVGb3JD
aGlsZChjb25zdCBGbG9hdGluZ09iamVjdCYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAK
LSAgICBSb290SW5saW5lQm94KiBmaXJzdFJvb3RCb3goKSBjb25zdCB7IHJldHVybiBsZWdhY3lM
aW5lTGF5b3V0KCkgPyBsZWdhY3lMaW5lTGF5b3V0KCktPmZpcnN0Um9vdEJveCgpIDogbnVsbHB0
cjsgfQotICAgIFJvb3RJbmxpbmVCb3gqIGxhc3RSb290Qm94KCkgY29uc3QgeyByZXR1cm4gbGVn
YWN5TGluZUxheW91dCgpID8gbGVnYWN5TGluZUxheW91dCgpLT5sYXN0Um9vdEJveCgpIDogbnVs
bHB0cjsgfQorICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGZpcnN0Um9vdEJveCgpIGNvbnN0IHsg
cmV0dXJuIGxlZ2FjeUxpbmVMYXlvdXQoKSA/IGxlZ2FjeUxpbmVMYXlvdXQoKS0+Zmlyc3RSb290
Qm94KCkgOiBudWxscHRyOyB9CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbGFzdFJvb3RCb3go
KSBjb25zdCB7IHJldHVybiBsZWdhY3lMaW5lTGF5b3V0KCkgPyBsZWdhY3lMaW5lTGF5b3V0KCkt
Pmxhc3RSb290Qm94KCkgOiBudWxscHRyOyB9CiAKICAgICB2b2lkIHNldENoaWxkcmVuSW5saW5l
KGJvb2wpIGZpbmFsOwogCkBAIC01MjcsNyArNTI3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZp
dEJvcmRlclRvTGluZXNJZk5lZWRlZCgpOyAvLyBTaHJpbmsgdGhlIGJveCBpbiB3aGljaCB0aGUg
Ym9yZGVyIHBhaW50cyBpZiBib3JkZXItZml0IGlzIHNldC4KICAgICB2b2lkIGFkanVzdEZvckJv
cmRlckZpdChMYXlvdXRVbml0IHgsIExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmIHJpZ2h0
KSBjb25zdDsKIAotICAgIHZvaWQgbWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5b3V0VW5p
dCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20sIFJvb3RJbmxpbmVCb3gqIGhp
Z2hlc3QgPSAwKTsKKyAgICB2b2lkIG1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKExheW91dFVu
aXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tLCBMZWdhY3lSb290SW5saW5l
Qm94KiBoaWdoZXN0ID0gMCk7CiAKICAgICBHYXBSZWN0cyBpbmxpbmVTZWxlY3Rpb25HYXBzKFJl
bmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNh
bFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLAogICAgICAg
ICBMYXlvdXRVbml0JiBsYXN0TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbGFzdExvZ2ljYWxMZWZ0
LCBMYXlvdXRVbml0JiBsYXN0TG9naWNhbFJpZ2h0LCBjb25zdCBMb2dpY2FsU2VsZWN0aW9uT2Zm
c2V0Q2FjaGVzJiwgY29uc3QgUGFpbnRJbmZvKikgb3ZlcnJpZGU7CkBAIC01NjAsNyArNTYwLDcg
QEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogVGhlc2UgY2Fu
IGJlIG1hZGUgcHJvdGVjdGVkIGFnYWluIG9uY2UgYWxsIGNhbGxlcnMgaGF2ZSBiZWVuIG1vdmVk
IGhlcmUuCi0gICAgdm9pZCBhZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKFJvb3RJbmxp
bmVCb3gqLCBMYXlvdXRVbml0JiBkZWx0YU9mZnNldCwgYm9vbCYgb3ZlcmZsb3dzRnJhZ21lbnQs
IFJlbmRlckZyYWdtZW50ZWRGbG93Kik7IC8vIENvbXB1dGVzIGEgZGVsdGFPZmZzZXQgdmFsdWUg
dGhhdCBwdXQgYSBsaW5lIGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgcGFnZSBpZiBpdCBkb2Vzbid0
IGZpdCBvbiB0aGUgY3VycmVudCBwYWdlLgorICAgIHZvaWQgYWRqdXN0TGluZVBvc2l0aW9uRm9y
UGFnaW5hdGlvbihMZWdhY3lSb290SW5saW5lQm94KiwgTGF5b3V0VW5pdCYgZGVsdGFPZmZzZXQs
IGJvb2wmIG92ZXJmbG93c0ZyYWdtZW50LCBSZW5kZXJGcmFnbWVudGVkRmxvdyopOyAvLyBDb21w
dXRlcyBhIGRlbHRhT2Zmc2V0IHZhbHVlIHRoYXQgcHV0IGEgbGluZSBhdCB0aGUgdG9wIG9mIHRo
ZSBuZXh0IHBhZ2UgaWYgaXQgZG9lc24ndCBmaXQgb24gdGhlIGN1cnJlbnQgcGFnZS4KIAogICAg
IC8vIFBhZ2luYXRpb24gcm91dGluZXMuCiAgICAgYm9vbCByZWxheW91dEZvclBhZ2luYXRpb24o
KTsKQEAgLTY0Miw2ICs2NDIsOCBAQCBpbmxpbmUgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6
OmVuZFBhZGRpbmdXaWR0aEZvckNhcmV0KCkgY29uc3QKICAgICByZXR1cm4geyB9OwogfQogCiti
b29sIHNob3VsZENoZWNrTGluZXNGb3JMaW5lQ291bnQoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5E
RVJfT0JKRUNUKFJlbmRlckJsb2NrRmxvdywgaXNSZW5kZXJCbG9ja0Zsb3coKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNmFiYWFhN2EzNThmLi42ODM0ZjIzOGM0
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yMzQ1LDcgKzIz
NDUsNyBAQCB2b2lkIFJlbmRlckJveDo6cG9zaXRpb25MaW5lQm94KElubGluZUVsZW1lbnRCb3gm
IGJveCkKICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBjYWNoZWQgaW4gdGhlIHhQb3Mgb2Yg
dGhlIGJveC4gIFdlIG9ubHkgbmVlZCB0aGlzIHZhbHVlIGlmCiAgICAgICAgICAgICAvLyBvdXIg
b2JqZWN0IHdhcyBpbmxpbmUgb3JpZ2luYWxseSwgc2luY2Ugb3RoZXJ3aXNlIGl0IHdvdWxkIGhh
dmUgZW5kZWQgdXAgdW5kZXJuZWF0aAogICAgICAgICAgICAgLy8gdGhlIGlubGluZXMuCi0gICAg
ICAgICAgICBSb290SW5saW5lQm94JiByb290Qm94ID0gYm94LnJvb3QoKTsKKyAgICAgICAgICAg
IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBib3gucm9vdCgpOwogICAgICAgICAgICAg
cm9vdEJveC5ibG9ja0Zsb3coKS5zZXRTdGF0aWNJbmxpbmVQb3NpdGlvbkZvckNoaWxkKCp0aGlz
LCByb290Qm94LmxpbmVCb3hUb3AoKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoYm94Lmxv
Z2ljYWxMZWZ0KCkpKTsKICAgICAgICAgICAgIGlmIChzdHlsZSgpLmhhc1N0YXRpY0lubGluZVBv
c2l0aW9uKGJveC5pc0hvcml6b250YWwoKSkpCiAgICAgICAgICAgICAgICAgc2V0Q2hpbGROZWVk
c0xheW91dChNYXJrT25seVRoaXMpOyAvLyBKdXN0IG1hcmsgdGhlIHBvc2l0aW9uZWQgb2JqZWN0
IGFzIG5lZWRpbmcgbGF5b3V0LCBzbyBpdCB3aWxsIHVwZGF0ZSBpdHMgcG9zaXRpb24gcHJvcGVy
bHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAppbmRleCBkNmFkNjhkNTMxNWIuLjgyMjIwMzlkOTYyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC03MDcsNyArNzA3
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3go
SW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QKICAgICAvLyBJbmxpbmVUZXh0Qm94ZXMgdGhh
dCB0aGV5IHNob3VsZCBqdXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUgY2xpcC4KICAgICBQ
YWludEluZm8gaW5mbyhtYXNrSW1hZ2VDb250ZXh0LCBtYXNrUmVjdCwgUGFpbnRQaGFzZTo6VGV4
dENsaXAsIFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0KTsKICAgICBpZiAoYm94KSB7Ci0g
ICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKKyAgICAg
ICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IGJveC0+cm9vdCgpOwogICAg
ICAgICBib3gtPnBhaW50KGluZm8sIExheW91dFBvaW50KHNjcm9sbGVkUGFpbnRSZWN0LngoKSAt
IGJveC0+eCgpLCBzY3JvbGxlZFBhaW50UmVjdC55KCkgLSBib3gtPnkoKSksIHJvb3RCb3gubGlu
ZVRvcCgpLCByb290Qm94LmxpbmVCb3R0b20oKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTGF5
b3V0U2l6ZSBsb2NhbE9mZnNldCA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNhc3Q8UmVu
ZGVyQm94PigqdGhpcykubG9jYXRpb25PZmZzZXQoKSA6IExheW91dFNpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHAKaW5kZXggNzlkZDAzNWJlZWYyLi42N2ViYTQwNTg0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CkBAIC05MzcsMTIgKzkzNyw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojps
YXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIHNldEhlaWdo
dChvbGRIZWlnaHQpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRDaGVja0xpbmVzKGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgYmxvY2tGbG93KQotewotICAgIHJldHVybiAhYmxvY2tGbG93LmlzRmxv
YXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBibG9ja0Zsb3cuc3R5bGUoKS5oZWlnaHQo
KS5pc0F1dG8oKTsKLX0KLQotc3RhdGljIFJvb3RJbmxpbmVCb3gqIGxpbmVBdEluZGV4KGNvbnN0
IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgaW50IGkpCitzdGF0aWMgTGVnYWN5Um9vdElubGluZUJv
eCogbGluZUF0SW5kZXgoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBpbnQgaSkKIHsKICAg
ICBBU1NFUlQoaSA+PSAwKTsKIApAQCAtOTU4LDkgKzk1Myw5IEBAIHN0YXRpYyBSb290SW5saW5l
Qm94KiBsaW5lQXRJbmRleChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGludCBpKQogICAg
IH0KIAogICAgIGZvciAoYXV0byYgYmxvY2tGbG93IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyQmxv
Y2tGbG93PihmbG93KSkgewotICAgICAgICBpZiAoIXNob3VsZENoZWNrTGluZXMoYmxvY2tGbG93
KSkKKyAgICAgICAgaWYgKCFzaG91bGRDaGVja0xpbmVzRm9yTGluZUNvdW50KGJsb2NrRmxvdykp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKFJvb3RJbmxpbmVCb3gqIGJveCA9
IGxpbmVBdEluZGV4KGJsb2NrRmxvdywgaSkpCisgICAgICAgIGlmIChMZWdhY3lSb290SW5saW5l
Qm94KiBib3ggPSBsaW5lQXRJbmRleChibG9ja0Zsb3csIGkpKQogICAgICAgICAgICAgcmV0dXJu
IGJveDsKICAgICB9CiAKQEAgLTk4MCw3ICs5NzUsNyBAQCBzdGF0aWMgaW50IGdldEhlaWdodEZv
ckxpbmVDb3VudChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBpbnQgbGluZUNvdW50LCBi
bwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlbmRlckJveCogbm9ybWFsRmxvd0NoaWxkV2l0aG91
dExpbmVzID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChhdXRvKiBvYmogPSBibG9jay5maXJzdENo
aWxkQm94KCk7IG9iajsgb2JqID0gb2JqLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgICAg
ICBpZiAoaXM8UmVuZGVyQmxvY2tGbG93Pigqb2JqKSAmJiBzaG91bGRDaGVja0xpbmVzKGRvd25j
YXN0PFJlbmRlckJsb2NrRmxvdz4oKm9iaikpKSB7CisgICAgICAgICAgICBpZiAoaXM8UmVuZGVy
QmxvY2tGbG93Pigqb2JqKSAmJiBzaG91bGRDaGVja0xpbmVzRm9yTGluZUNvdW50KGRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4oKm9iaikpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9
IGdldEhlaWdodEZvckxpbmVDb3VudChkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpvYmopLCBs
aW5lQ291bnQsIGZhbHNlLCBjb3VudCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSAt
MSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIG9iai0+eSgpICsgKGluY2x1
ZGVCb3R0b20gPyAoYmxvY2suYm9yZGVyQm90dG9tKCkgKyBibG9jay5wYWRkaW5nQm90dG9tKCkp
IDogMF9sdSk7CkBAIC0xMDUyLDExICsxMDQ3LDExIEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcChGbGV4Qm94SXRlcmF0b3ImIGl0ZXJhdG9yLCBib29s
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBHZXQgdGhlIGxhc3QgbGluZQot
ICAgICAgICBSb290SW5saW5lQm94KiBsYXN0TGluZSA9IGxpbmVBdEluZGV4KGJsb2NrQ2hpbGQs
IGxpbmVDb3VudCAtIDEpOworICAgICAgICBMZWdhY3lSb290SW5saW5lQm94KiBsYXN0TGluZSA9
IGxpbmVBdEluZGV4KGJsb2NrQ2hpbGQsIGxpbmVDb3VudCAtIDEpOwogICAgICAgICBpZiAoIWxh
c3RMaW5lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUm9vdElubGluZUJveCog
bGFzdFZpc2libGVMaW5lID0gbGluZUF0SW5kZXgoYmxvY2tDaGlsZCwgbnVtVmlzaWJsZUxpbmVz
IC0gMSk7CisgICAgICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxhc3RWaXNpYmxlTGluZSA9IGxp
bmVBdEluZGV4KGJsb2NrQ2hpbGQsIG51bVZpc2libGVMaW5lcyAtIDEpOwogICAgICAgICBpZiAo
IWxhc3RWaXNpYmxlTGluZSB8fCAhbGFzdFZpc2libGVMaW5lLT5maXJzdENoaWxkKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFnbWVudGVkRmxvdy5jcHAKaW5kZXggNDJkYzE5MjA1M2JmLi5kZGQ3MDMzODBiYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNw
cApAQCAtNzY0LDcgKzc2NCw3IEBAIGJvb2wgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNoZWNrTGlu
ZXNDb25zaXN0ZW5jeShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJlbW92ZWRCCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBsaW5lUGFpciA6ICptX2xpbmVUb0ZyYWdtZW50
TWFwLmdldCgpKSB7Ci0gICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBsaW5lUGFp
ci5rZXk7CisgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmUgPSBsaW5lUGFp
ci5rZXk7CiAgICAgICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCA9IGxpbmVQ
YWlyLnZhbHVlOwogICAgICAgICBpZiAoJmxpbmUtPmJsb2NrRmxvdygpID09ICZyZW1vdmVkQmxv
Y2spCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5oCmluZGV4IGI3M2JlMmIxYjBlNC4uNDkxNWY3ZTJm
ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRl
ZEZsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZs
b3cuaApAQCAtNDEsMTEgKzQxLDExIEBAIGNsYXNzIEN1cnJlbnRSZW5kZXJGcmFnbWVudENvbnRh
aW5lck1haW50YWluZXI7CiBjbGFzcyBSZW5kZXJGcmFnbWVudGVkRmxvdzsKIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgUmVuZGVyRnJhZ21lbnRDb250YWluZXI7Ci1jbGFzcyBSb290SW5saW5l
Qm94OworY2xhc3MgTGVnYWN5Um9vdElubGluZUJveDsKIAogdHlwZWRlZiBMaXN0SGFzaFNldDxS
ZW5kZXJGcmFnbWVudENvbnRhaW5lcio+IFJlbmRlckZyYWdtZW50Q29udGFpbmVyTGlzdDsKIHR5
cGVkZWYgVmVjdG9yPFJlbmRlckxheWVyKj4gUmVuZGVyTGF5ZXJMaXN0OwotdHlwZWRlZiBIYXNo
TWFwPGNvbnN0IFJvb3RJbmxpbmVCb3gqLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcio+IENvbnRh
aW5pbmdGcmFnbWVudE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBMZWdhY3lSb290SW5saW5l
Qm94KiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqPiBDb250YWluaW5nRnJhZ21lbnRNYXA7CiAK
IC8vIFJlbmRlckZyYWdtZW50ZWRGbG93IGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIHJlbmRl
ciBvYmplY3RzIHRoYXQgcGFydGljaXBhdGUgaW4gYQogLy8gZmxvdyB0aHJlYWQuIEl0IHdpbGwg
YWxzbyBoZWxwIGluIGRvaW5nIHRoZSBsYXlvdXQuIEhvd2V2ZXIsIGl0IHdpbGwgbm90IHJlbmRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAwYWYwZTU2
ZjcyNzQuLjJlMWQwMmI4YTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6Z2VuZXJhdGVD
dWxsZWRMaW5lQm94UmVjdHMoR2VuZXJhdG9yQ29udGV4dCYgY29udGV4dCwgY29uc3QgUgogICAg
ICAgICBpZiAoaXM8UmVuZGVyQm94PihjdXJyZW50KSkgewogICAgICAgICAgICAgYXV0byYgcmVu
ZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihjdXJyZW50KTsKICAgICAgICAgICAgIGlmIChy
ZW5kZXJCb3guaW5saW5lQm94V3JhcHBlcigpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgUm9v
dElubGluZUJveCYgcm9vdEJveCA9IHJlbmRlckJveC5pbmxpbmVCb3hXcmFwcGVyKCktPnJvb3Qo
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290Qm94ID0g
cmVuZGVyQm94LmlubGluZUJveFdyYXBwZXIoKS0+cm9vdCgpOwogICAgICAgICAgICAgICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBjb250YWluZXJTdHlsZSA9IHJvb3RCb3guaXNGaXJzdExpbmUoKSA/
IGNvbnRhaW5lci0+Zmlyc3RMaW5lU3R5bGUoKSA6IGNvbnRhaW5lci0+c3R5bGUoKTsKICAgICAg
ICAgICAgICAgICBpbnQgbG9naWNhbFRvcCA9IHJvb3RCb3gubG9naWNhbFRvcCgpICsgKHJvb3RC
b3gubGluZVN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmFzY2VudCgpIC0gY29u
dGFpbmVyU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICAg
ICAgICAgICAgICBpbnQgbG9naWNhbEhlaWdodCA9IGNvbnRhaW5lclN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFJlbmRl
cklubGluZTo6Z2VuZXJhdGVDdWxsZWRMaW5lQm94UmVjdHMoR2VuZXJhdG9yQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgUgogICAgICAgICAgICAgICAgIHJlbmRlcklubGluZS5nZW5lcmF0ZUN1bGxl
ZExpbmVCb3hSZWN0cyhjb250ZXh0LCBjb250YWluZXIpOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjaGlsZExpbmUgPSByZW5kZXJJbmxp
bmUuZmlyc3RMaW5lQm94KCk7IGNoaWxkTGluZTsgY2hpbGRMaW5lID0gY2hpbGRMaW5lLT5uZXh0
TGluZUJveCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJv
b3RCb3ggPSBjaGlsZExpbmUtPnJvb3QoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgTGVn
YWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IGNoaWxkTGluZS0+cm9vdCgpOwogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY29udGFpbmVyU3R5bGUgPSByb290Qm94Lmlz
Rmlyc3RMaW5lKCkgPyBjb250YWluZXItPmZpcnN0TGluZVN0eWxlKCkgOiBjb250YWluZXItPnN0
eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBsb2dpY2FsVG9wID0gcm9vdEJveC5sb2dp
Y2FsVG9wKCkgKyAocm9vdEJveC5saW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNz
KCkuYXNjZW50KCkgLSBjb250YWluZXJTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCku
YXNjZW50KCkpOwogICAgICAgICAgICAgICAgICAgICBpbnQgbG9naWNhbEhlaWdodCA9IGNvbnRh
aW5lclN0eWxlLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CkBAIC0zMTksNyArMzE5LDcgQEAgdm9p
ZCBSZW5kZXJJbmxpbmU6OmdlbmVyYXRlQ3VsbGVkTGluZUJveFJlY3RzKEdlbmVyYXRvckNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFIKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0Pihj
dXJyZW50KSkgewogICAgICAgICAgICAgYXV0byYgY3VyclRleHQgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0PihjdXJyZW50KTsKICAgICAgICAgICAgIGZvciAoSW5saW5lVGV4dEJveCogY2hpbGRUZXh0
ID0gY3VyclRleHQuZmlyc3RUZXh0Qm94KCk7IGNoaWxkVGV4dDsgY2hpbGRUZXh0ID0gY2hpbGRU
ZXh0LT5uZXh0VGV4dEJveCgpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgUm9vdElubGluZUJv
eCYgcm9vdEJveCA9IGNoaWxkVGV4dC0+cm9vdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IExl
Z2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBjaGlsZFRleHQtPnJvb3QoKTsKICAgICAgICAg
ICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY29udGFpbmVyU3R5bGUgPSByb290Qm94LmlzRmly
c3RMaW5lKCkgPyBjb250YWluZXItPmZpcnN0TGluZVN0eWxlKCkgOiBjb250YWluZXItPnN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxUb3AgPSByb290Qm94LmxvZ2ljYWxUb3Ao
KSArIChyb290Qm94LmxpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5hc2Nl
bnQoKSAtIGNvbnRhaW5lclN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQo
KSk7CiAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxIZWlnaHQgPSBjb250YWluZXJTdHlsZS5m
b250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OmdlbmVyYXRlQ3VsbGVkTGluZUJveFJlY3RzKEdlbmVyYXRvckNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFIKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJMaW5l
QnJlYWs+KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogaW5saW5lQm94ID0gZG93
bmNhc3Q8UmVuZGVyTGluZUJyZWFrPihjdXJyZW50KS5pbmxpbmVCb3hXcmFwcGVyKCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgYSBoZWxwZXIgdG8gc2hhcmUg
dGhlc2Ugd2l0aCB0ZXh0IHBhdGguCi0gICAgICAgICAgICAgICAgY29uc3QgUm9vdElubGluZUJv
eCYgcm9vdEJveCA9IGlubGluZUJveC0+cm9vdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IExl
Z2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBpbmxpbmVCb3gtPnJvb3QoKTsKICAgICAgICAg
ICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY29udGFpbmVyU3R5bGUgPSByb290Qm94LmlzRmly
c3RMaW5lKCkgPyBjb250YWluZXItPmZpcnN0TGluZVN0eWxlKCkgOiBjb250YWluZXItPnN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxUb3AgPSByb290Qm94LmxvZ2ljYWxUb3Ao
KSArIChyb290Qm94LmxpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5hc2Nl
bnQoKSAtIGNvbnRhaW5lclN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQo
KSk7CiAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxIZWlnaHQgPSBjb250YWluZXJTdHlsZS5m
b250TWV0cmljcygpLmhlaWdodCgpOwpAQCAtNzkyLDggKzc5Miw4IEBAIExheW91dFJlY3QgUmVu
ZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAogICAgICAg
ICBsb2dpY2FsUmlnaHRTaWRlID0gc3RkOjptYXgobG9naWNhbFJpZ2h0U2lkZSwgY3Vyci0+bG9n
aWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3coKSk7CiAgICAgfQogCi0gICAgY29uc3QgUm9vdElubGlu
ZUJveCYgZmlyc3RSb290Qm94ID0gZmlyc3RMaW5lQm94KCktPnJvb3QoKTsKLSAgICBjb25zdCBS
b290SW5saW5lQm94JiBsYXN0Um9vdEJveCA9IGxhc3RMaW5lQm94KCktPnJvb3QoKTsKKyAgICBj
b25zdCBMZWdhY3lSb290SW5saW5lQm94JiBmaXJzdFJvb3RCb3ggPSBmaXJzdExpbmVCb3goKS0+
cm9vdCgpOworICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIGxhc3RSb290Qm94ID0gbGFz
dExpbmVCb3goKS0+cm9vdCgpOwogICAgIAogICAgIExheW91dFVuaXQgbG9naWNhbFRvcCA9IGZp
cnN0TGluZUJveCgpLT5sb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3coZmlyc3RSb290Qm94LmxpbmVU
b3AoKSk7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHRTaWRlIC0g
bG9naWNhbExlZnRTaWRlOwpAQCAtODIwLDcgKzgyMCw3IEBAIExheW91dFJlY3QgUmVuZGVySW5s
aW5lOjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3hJbkZyYWdtZW50KGNvbnN0IFJlbmRl
ckZyCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0OwogICAgIElubGluZUZsb3dCb3gqIGxh
c3RJbmxpbmVJbkZyYWdtZW50ID0gMDsKICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBm
aXJzdExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpIHsKLSAgICAg
ICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdCA9IGN1cnItPnJvb3QoKTsKKyAgICAgICAgY29u
c3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCA9IGN1cnItPnJvb3QoKTsKICAgICAgICAgaWYg
KHJvb3QuY29udGFpbmluZ0ZyYWdtZW50KCkgIT0gZnJhZ21lbnQpIHsKICAgICAgICAgICAgIGlm
IChsYXN0SW5saW5lSW5GcmFnbWVudCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyNzMs
NyArMTI3Myw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgVmVjdG9yPExheW91dFJl
Y3Q+IHJlY3RzOwogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KCkpOwogICAgIGZvciAoSW5s
aW5lRmxvd0JveCogY3VyciA9IGZpcnN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4
dExpbmVCb3goKSkgewotICAgICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gY3Vy
ci0+cm9vdCgpOworICAgICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290Qm94ID0g
Y3Vyci0+cm9vdCgpOwogICAgICAgICBMYXlvdXRVbml0IHRvcCA9IHN0ZDo6bWF4KHJvb3RCb3gu
bGluZVRvcCgpLCBMYXlvdXRVbml0KGN1cnItPmxvZ2ljYWxUb3AoKSkpOwogICAgICAgICBMYXlv
dXRVbml0IGJvdHRvbSA9IHN0ZDo6bWluKHJvb3RCb3gubGluZUJvdHRvbSgpLCBMYXlvdXRVbml0
KGN1cnItPmxvZ2ljYWxCb3R0b20oKSkpOwogICAgICAgICByZWN0cy5hcHBlbmQoeyBMYXlvdXRV
bml0KGN1cnItPngoKSksIHRvcCwgTGF5b3V0VW5pdChjdXJyLT5sb2dpY2FsV2lkdGgoKSksIGJv
dHRvbSAtIHRvcCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQm94TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJv
eExpc3QuY3BwCmluZGV4IDNkYzNmZjQyNjk3Ni4uNzEwMmY2MzJmYWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKQEAgLTMyLDEyICszMiwx
MiBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50
Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeVJvb3RJ
bmxpbmVCb3guaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJCbG9j
a0Zsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5l
QnJlYWsuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiUm9vdElubGluZUJv
eC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4Niw4ICsxODYsOCBAQCBib29sIFJl
bmRlckxpbmVCb3hMaXN0OjphbnlMaW5lSW50ZXJzZWN0c1JlY3QoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlbmRlcmVyLCBjbwogICAgIC8vIGludGVyc2VjdC4gIFRoaXMgaXMgYSBxdWljayBzaG9y
dC1jaXJjdWl0IHRoYXQgd2UgY2FuIHRha2UgdG8gYXZvaWQgd2Fsa2luZyBhbnkgbGluZXMuCiAg
ICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgZmxhd2VkIGluIHRoZSBmb2xsb3dpbmcgZXh0cmVt
ZWx5IG9ic2N1cmUgd2F5OgogICAgIC8vIGlmIHNvbWUgbGluZSBpbiB0aGUgbWlkZGxlIGhhcyBh
IGh1Z2Ugb3ZlcmZsb3csIGl0IG1pZ2h0IGFjdHVhbGx5IGV4dGVuZCBiZWxvdyB0aGUgbGFzdCBs
aW5lLgotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIGZpcnN0Um9vdEJveCA9IGZpcnN0TGluZUJv
eCgpLT5yb290KCk7Ci0gICAgY29uc3QgUm9vdElubGluZUJveCYgbGFzdFJvb3RCb3ggPSBsYXN0
TGluZUJveCgpLT5yb290KCk7CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgZmlyc3RS
b290Qm94ID0gZmlyc3RMaW5lQm94KCktPnJvb3QoKTsKKyAgICBjb25zdCBMZWdhY3lSb290SW5s
aW5lQm94JiBsYXN0Um9vdEJveCA9IGxhc3RMaW5lQm94KCktPnJvb3QoKTsKICAgICBMYXlvdXRV
bml0IGZpcnN0TGluZVRvcCA9IGZpcnN0TGluZUJveCgpLT5sb2dpY2FsVG9wVmlzdWFsT3ZlcmZs
b3coZmlyc3RSb290Qm94LmxpbmVUb3AoKSk7CiAgICAgaWYgKHVzZVByaW50UmVjdCAmJiAhZmly
c3RMaW5lQm94KCktPnBhcmVudCgpKQogICAgICAgICBmaXJzdExpbmVUb3AgPSBzdGQ6Om1pbihm
aXJzdExpbmVUb3AsIGZpcnN0Um9vdEJveC5saW5lVG9wKCkpOwpAQCAtMTk5LDcgKzE5OSw3IEBA
IGJvb2wgUmVuZGVyTGluZUJveExpc3Q6OmFueUxpbmVJbnRlcnNlY3RzUmVjdChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVuZGVyZXIsIGNvCiAKIGJvb2wgUmVuZGVyTGluZUJveExpc3Q6OmxpbmVJ
bnRlcnNlY3RzRGlydHlSZWN0KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgSW5saW5l
Rmxvd0JveCogYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIG9mZnNldCkgY29uc3QKIHsKLSAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0g
Ym94LT5yb290KCk7CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IGJv
eC0+cm9vdCgpOwogICAgIExheW91dFVuaXQgbG9naWNhbFRvcCA9IHN0ZDo6bWluKGJveC0+bG9n
aWNhbFRvcFZpc3VhbE92ZXJmbG93KHJvb3RCb3gubGluZVRvcCgpKSwgcm9vdEJveC5zZWxlY3Rp
b25Ub3AoKSk7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tID0gYm94LT5sb2dpY2FsQm90
dG9tVmlzdWFsT3ZlcmZsb3cocm9vdEJveC5saW5lQm90dG9tKCkpOwogICAgIHJldHVybiByYW5n
ZUludGVyc2VjdHNSZWN0KHJlbmRlcmVyLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tLCBwYWlu
dEluZm8ucmVjdCwgb2Zmc2V0KTsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFJlbmRlckxpbmVC
b3hMaXN0OjpwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIsIFBhaW50SW5mbyYg
cGFpbnRJbgogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIGRlcHJlY2F0ZWQgcGFn
aW5hdGlvbiBtb2RlbCB0aGF0IGlzIHN0aWxsIG5lZWRlZAogICAgICAgICAgICAgLy8gZm9yIGVt
YmVkZGVkIHZpZXdzIGluc2lkZSBBcHBLaXQuICBBcHBLaXQgaXMgaW5jYXBhYmxlIG9mIHBhZ2lu
YXRpbmcgdmVydGljYWwKICAgICAgICAgICAgIC8vIHRleHQgcGFnZXMsIHNvIHdlIGRvbid0IGhh
dmUgdG8gZGVhbCB3aXRoIHZlcnRpY2FsIGxpbmVzIGF0IGFsbCBoZXJlLgotICAgICAgICAgICAg
Y29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGN1cnItPnJvb3QoKTsKKyAgICAgICAgICAg
IGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBjdXJyLT5yb290KCk7CiAgICAg
ICAgICAgICBMYXlvdXRVbml0IHRvcEZvclBhZ2luYXRpb25DaGVjayA9IGN1cnItPmxvZ2ljYWxU
b3BWaXN1YWxPdmVyZmxvdyhyb290Qm94LmxpbmVUb3AoKSk7CiAgICAgICAgICAgICBMYXlvdXRV
bml0IGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayA9IGN1cnItPmxvZ2ljYWxMZWZ0VmlzdWFsT3Zl
cmZsb3coKTsKICAgICAgICAgICAgIGlmICghY3Vyci0+cGFyZW50KCkpIHsKQEAgLTI0Miw3ICsy
NDIsNyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVuZGVyZXIsIFBhaW50SW5mbyYgcGFpbnRJbgogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayAtIHRvcEZvclBhZ2luYXRpb25DaGVjayA8
PSB2LnByaW50UmVjdCgpLmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhaW50T2Zm
c2V0LnkoKSArIGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayA+IHYucHJpbnRSZWN0KCkubWF4WSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChSb290SW5saW5lQm94KiBuZXh0Um9vdEJveCA9
IHJvb3RCb3gubmV4dFJvb3RCb3goKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKExlZ2FjeVJv
b3RJbmxpbmVCb3gqIG5leHRSb290Qm94ID0gcm9vdEJveC5uZXh0Um9vdEJveCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYm90dG9tRm9yUGFnaW5hdGlvbkNoZWNrID0gc3RkOjptaW4oYm90
dG9tRm9yUGFnaW5hdGlvbkNoZWNrLCBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXh0Um9vdEJveC0+
bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KCksIG5leHRSb290Qm94LT5saW5lVG9wKCkpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGJv
dHRvbUZvclBhZ2luYXRpb25DaGVjayA+IHYucHJpbnRSZWN0KCkubWF4WSgpKSB7CkBAIC0yNTYs
NyArMjU2LDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6cGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlbmRlcmVyLCBQYWludEluZm8mIHBhaW50SW4KICAgICAgICAgfQogCiAgICAgICAg
IGlmIChsaW5lSW50ZXJzZWN0c0RpcnR5UmVjdChyZW5kZXJlciwgY3VyciwgaW5mbywgcGFpbnRP
ZmZzZXQpKSB7Ci0gICAgICAgICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gY3Vy
ci0+cm9vdCgpOworICAgICAgICAgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJv
eCA9IGN1cnItPnJvb3QoKTsKICAgICAgICAgICAgIGN1cnItPnBhaW50KGluZm8sIHBhaW50T2Zm
c2V0LCByb290Qm94LmxpbmVUb3AoKSwgcm9vdEJveC5saW5lQm90dG9tKCkpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIGJvb2wgUmVuZGVyTGluZUJveExpc3Q6OmhpdFRl
c3QoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBIaXRUZXN0UmVxCiAgICAg
Ly8gdGhlbSBmdXJ0aGVyLiAgTm90ZSB0aGF0IGJveGVzIGNhbiBlYXNpbHkgb3ZlcmxhcCwgc28g
d2UgY2FuJ3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMKICAgICAvLyBiYXNlZCBvZmYgcG9zaXRpb25z
IG9mIG91ciBmaXJzdCBsaW5lIGJveCBvciBvdXIgbGFzdCBsaW5lIGJveC4KICAgICBmb3IgKElu
bGluZUZsb3dCb3gqIGN1cnIgPSBsYXN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJl
dkxpbmVCb3goKSkgewotICAgICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gY3Vy
ci0+cm9vdCgpOworICAgICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290Qm94ID0g
Y3Vyci0+cm9vdCgpOwogICAgICAgICBpZiAocmFuZ2VJbnRlcnNlY3RzUmVjdChyZW5kZXJlciwg
Y3Vyci0+bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KHJvb3RCb3gubGluZVRvcCgpKSwgY3Vyci0+
bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KHJvb3RCb3gubGluZUJvdHRvbSgpKSwgcmVjdCwg
YWNjdW11bGF0ZWRPZmZzZXQpKSB7CiAgICAgICAgICAgICBib29sIGluc2lkZSA9IGN1cnItPm5v
ZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11bGF0
ZWRPZmZzZXQsIHJvb3RCb3gubGluZVRvcCgpLCByb290Qm94LmxpbmVCb3R0b20oKSwgaGl0VGVz
dEFjdGlvbik7CiAgICAgICAgICAgICBpZiAoaW5zaWRlKSB7CkBAIC0zMjYsNyArMzI2LDcgQEAg
dm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVy
Qm94TW9kZWxPYmplY3QmIGNvbnRhaW4KICAgICAvLyBUcnkgdG8gZmlndXJlIG91dCB3aGljaCBs
aW5lIGJveCB3ZSBiZWxvbmcgaW4uIEZpcnN0IHRyeSB0byBmaW5kIGEgcHJldmlvdXMKICAgICAv
LyBsaW5lIGJveCBieSBleGFtaW5pbmcgb3VyIHNpYmxpbmdzLiBJZiB3ZSBkaWRuJ3QgZmluZCBh
IGxpbmUgYm94LCB0aGVuIHVzZSBvdXIKICAgICAvLyBwYXJlbnQncyBmaXJzdCBsaW5lIGJveC4K
LSAgICBSb290SW5saW5lQm94KiBib3ggPSBudWxscHRyOworICAgIExlZ2FjeVJvb3RJbmxpbmVC
b3gqIGJveCA9IG51bGxwdHI7CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50OwogICAgIGZvciAo
Y3VycmVudCA9IGNoaWxkLnByZXZpb3VzU2libGluZygpOyBjdXJyZW50OyBjdXJyZW50ID0gY3Vy
cmVudC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGN1cnJlbnQtPmlzRmxvYXRp
bmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTM3NywxMiArMzc3LDEyIEBAIHZvaWQgUmVu
ZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlckJveE1vZGVs
T2JqZWN0JiBjb250YWluCiAgICAgICAgIC8vIGNhbGxzIHNldExpbmVCcmVha0luZm8gd2l0aCB0
aGUgcmVzdWx0IG9mIGZpbmROZXh0TGluZUJyZWFrLiBmaW5kTmV4dExpbmVCcmVhaywKICAgICAg
ICAgLy8gZGVzcGl0ZSB0aGUgbmFtZSwgYWN0dWFsbHkgcmV0dXJucyB0aGUgZmlyc3QgUmVuZGVy
T2JqZWN0IGFmdGVyIHRoZSBCUi4KICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzM4NDk5NDc+
ICJUeXBpbmcgYWZ0ZXIgcGFzdGluZyBsaW5lIGRvZXMgbm90IGFwcGVhciB1bnRpbCBhZnRlciB3
aW5kb3cgcmVzaXplLiIKLSAgICAgICAgaWYgKFJvb3RJbmxpbmVCb3gqIHByZXZCb3ggPSBib3gt
PnByZXZSb290Qm94KCkpCisgICAgICAgIGlmIChMZWdhY3lSb290SW5saW5lQm94KiBwcmV2Qm94
ID0gYm94LT5wcmV2Um9vdEJveCgpKQogICAgICAgICAgICAgcHJldkJveC0+bWFya0RpcnR5KCk7
CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGFsd2F5cyBkaXJ0eSB0
aGUgbmV4dCBsaW5lLiBUaGlzIGlzIG9ubHkgc3RyaWN0bHkgCiAgICAgICAgIC8vIG5lY2Vzc2Fy
eSBzb21lIG9mIHRoZSB0aW1lLCBpbiBzaXR1YXRpb25zIGludm9sdmluZyBCUnMuCi0gICAgICAg
IGlmIChSb290SW5saW5lQm94KiBuZXh0Qm94ID0gYm94LT5uZXh0Um9vdEJveCgpKSB7CisgICAg
ICAgIGlmIChMZWdhY3lSb290SW5saW5lQm94KiBuZXh0Qm94ID0gYm94LT5uZXh0Um9vdEJveCgp
KSB7CiAgICAgICAgICAgICBuZXh0Qm94LT5tYXJrRGlydHkoKTsKICAgICAgICAgICAgIC8vIERl
ZGljYXRlZCBsaW5lYm94IGZvciBmbG9hdHMgbWF5IGJlIGFkZGVkIGFzIHRoZSBsYXN0IHJvb3Ri
b3guIElmIHRoaXMgb2NjdXJzIHdpdGggQlJzIGluc2lkZSBpbmxpbmVzIHRoYXQgcHJvcGFndGUg
dGhlaXIgbGluZWJveGVzIHRvCiAgICAgICAgICAgICAvLyB0aGUgcGFyZW50IGZsb3csIHdlIG5l
ZWQgdG8gaW52YWxpZGF0ZSBpdCBleHBsaWNpdGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCBjMTg3NGUyMTllMTcuLjg1NmI4MThiMTA1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTMw
LDEwICszMCwxMCBAQAogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgogI2luY2x1ZGUg
IkxheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvci5oIgorI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNp
bmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
QmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiUm9vdElubGluZUJv
eC5oIgogI2luY2x1ZGUgIlNWR0lubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJWaXNpYmxlUG9z
aXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDI0MWQyYWVjMjVmZi4u
MjExMzg4MTRlMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwCkBAIC0xMTI2LDcgKzExMjYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpc3RNYXJr
ZXI6OmxvY2FsU2VsZWN0aW9uUmVjdCgpCiAgICAgTGVnYWN5SW5saW5lQm94KiBib3ggPSBpbmxp
bmVCb3hXcmFwcGVyKCk7CiAgICAgaWYgKCFib3gpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0
KExheW91dFBvaW50KCksIHNpemUoKSk7Ci0gICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJv
eCA9IG1faW5saW5lQm94V3JhcHBlci0+cm9vdCgpOworICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxp
bmVCb3gmIHJvb3RCb3ggPSBtX2lubGluZUJveFdyYXBwZXItPnJvb3QoKTsKICAgICBMYXlvdXRV
bml0IG5ld0xvZ2ljYWxUb3AgeyByb290Qm94LmJsb2NrRmxvdygpLnN0eWxlKCkuaXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoKSA/IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbEJvdHRvbSgp
IC0gcm9vdEJveC5zZWxlY3Rpb25Cb3R0b20oKSA6IHJvb3RCb3guc2VsZWN0aW9uVG9wKCkgLSBt
X2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxUb3AoKSB9OwogICAgIGlmIChyb290Qm94LmJsb2Nr
RmxvdygpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJu
IExheW91dFJlY3QoMF9sdSwgbmV3TG9naWNhbFRvcCwgd2lkdGgoKSwgcm9vdEJveC5zZWxlY3Rp
b25IZWlnaHQoKSk7CkBAIC0xMzY1LDcgKzEzNjUsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6
OmFkZE92ZXJmbG93RnJvbUxpc3RNYXJrZXIoKQogICAgIExheW91dFVuaXQgbWFya2VyTG9naWNh
bExlZnQ7CiAgICAgYm9vbCBoaXRTZWxmUGFpbnRpbmdMYXllciA9IGZhbHNlOwogCi0gICAgY29u
c3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGluZUJveFdyYXBwZXIoKS0+cm9vdCgpOwor
ICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBpbmxpbmVCb3hXcmFwcGVy
KCktPnJvb3QoKTsKICAgICBMYXlvdXRVbml0IGxpbmVUb3AgPSByb290Qm94LmxpbmVUb3AoKTsK
ICAgICBMYXlvdXRVbml0IGxpbmVCb3R0b20gPSByb290Qm94LmxpbmVCb3R0b20oKTsKIApAQCAt
MTk1Nyw3ICsxOTU3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25S
ZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWMKICAgICBpZiAoc2VsZWN0
aW9uU3RhdGUoKSA9PSBIaWdobGlnaHRTdGF0ZTo6Tm9uZSB8fCAhaW5saW5lQm94V3JhcHBlcigp
KQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogCi0gICAgUm9vdElubGluZUJveCYgcm9v
dEJveCA9IGlubGluZUJveFdyYXBwZXIoKS0+cm9vdCgpOworICAgIExlZ2FjeVJvb3RJbmxpbmVC
b3gmIHJvb3RCb3ggPSBpbmxpbmVCb3hXcmFwcGVyKCktPnJvb3QoKTsKICAgICBMYXlvdXRSZWN0
IHJlY3QoMF9sdSwgcm9vdEJveC5zZWxlY3Rpb25Ub3AoKSAtIHkoKSwgd2lkdGgoKSwgcm9vdEJv
eC5zZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAgICAgICAgICAKICAgICBpZiAoY2xpcFRvVmlzaWJs
ZUNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApp
bmRleCAyOGNjMmUwMWFhMTguLjVmYTkzZDI3NThjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgYm9vbCBSZW5kZXJS
ZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE8KICAgICBMYXlvdXRVbml0IHRvcCA9IGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
ICsgdmlzdWFsT3ZlcmZsb3dSZWN0KCkueSgpOwogICAgIExheW91dFVuaXQgYm90dG9tID0gYWRq
dXN0ZWRQYWludE9mZnNldC55KCkgKyB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhZKCk7CiAgICAg
aWYgKGlzU2VsZWN0ZWQoKSAmJiBtX2lubGluZUJveFdyYXBwZXIpIHsKLSAgICAgICAgY29uc3Qg
Um9vdElubGluZUJveCYgcm9vdEJveCA9IG1faW5saW5lQm94V3JhcHBlci0+cm9vdCgpOworICAg
ICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290Qm94ID0gbV9pbmxpbmVCb3hXcmFw
cGVyLT5yb290KCk7CiAgICAgICAgIExheW91dFVuaXQgc2VsVG9wID0gcGFpbnRPZmZzZXQueSgp
ICsgcm9vdEJveC5zZWxlY3Rpb25Ub3AoKTsKICAgICAgICAgTGF5b3V0VW5pdCBzZWxCb3R0b20g
PSBwYWludE9mZnNldC55KCkgKyBzZWxUb3AgKyByb290Qm94LnNlbGVjdGlvbkhlaWdodCgpOwog
ICAgICAgICB0b3AgPSBzdGQ6Om1pbihzZWxUb3AsIHRvcCk7CkBAIC03MzMsNyArNzMzLDcgQEAg
TGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6bG9jYWxTZWxlY3Rpb25SZWN0KGJvb2wgY2hlY2tX
aGV0aGVyU2VsZWN0ZWQpIGNvbnN0CiAgICAgICAgIC8vIFdlJ3JlIGEgYmxvY2stbGV2ZWwgcmVw
bGFjZWQgZWxlbWVudC4gIEp1c3QgcmV0dXJuIG91ciBvd24gZGltZW5zaW9ucy4KICAgICAgICAg
cmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoKSwgc2l6ZSgpKTsKICAgICAKLSAgICBjb25z
dCBSb290SW5saW5lQm94JiByb290Qm94ID0gbV9pbmxpbmVCb3hXcmFwcGVyLT5yb290KCk7Cisg
ICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IG1faW5saW5lQm94V3JhcHBl
ci0+cm9vdCgpOwogICAgIExheW91dFVuaXQgbmV3TG9naWNhbFRvcCB7IHJvb3RCb3guYmxvY2tG
bG93KCkuc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gbV9pbmxpbmVCb3hX
cmFwcGVyLT5sb2dpY2FsQm90dG9tKCkgLSByb290Qm94LnNlbGVjdGlvbkJvdHRvbSgpIDogcm9v
dEJveC5zZWxlY3Rpb25Ub3AoKSAtIG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbFRvcCgpIH07
CiAgICAgaWYgKHJvb3RCb3guYmxvY2tGbG93KCkuc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgwX2x1LCBuZXdMb2dpY2FsVG9wLCB3
aWR0aCgpLCByb290Qm94LnNlbGVjdGlvbkhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmNwcAppbmRleCA1YWNkMjcwM2QxNzEuLjBhMjgxYWE3NmYxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtMTU0LDcg
KzE1NCw3IEBAIHZvaWQgUmVuZGVyUnVieVJ1bjo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQpCiAgICAgLy8gUGxhY2UgdGhlIFJlbmRlclJ1
YnlUZXh0IHN1Y2ggdGhhdCBpdHMgYm90dG9tIGlzIGZsdXNoIHdpdGggdGhlIGxpbmVUb3Agb2Yg
dGhlIGZpcnN0IGxpbmUgb2YgdGhlIFJlbmRlclJ1YnlCYXNlLgogICAgIExheW91dFVuaXQgbGFz
dExpbmVSdWJ5VGV4dEJvdHRvbSA9IHJ0LT5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgTGF5b3V0VW5p
dCBmaXJzdExpbmVSdWJ5VGV4dFRvcDsKLSAgICBSb290SW5saW5lQm94KiByb290Qm94ID0gcnQt
Pmxhc3RSb290Qm94KCk7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogcm9vdEJveCA9IHJ0LT5s
YXN0Um9vdEJveCgpOwogICAgIGlmIChyb290Qm94KSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRv
IGFsaWduLCB3ZSBoYXZlIHRvIGlnbm9yZSBuZWdhdGl2ZSBsZWFkaW5nLgogICAgICAgICBmaXJz
dExpbmVSdWJ5VGV4dFRvcCA9IHJ0LT5maXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcExheW91dE92
ZXJmbG93KCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUhlaWdodCkKICAgICAg
ICAgaWYgKFJlbmRlclJ1YnlCYXNlKiByYiA9IHJ1YnlCYXNlKCkpIHsKICAgICAgICAgICAgIExh
eW91dFVuaXQgZmlyc3RMaW5lVG9wOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBsYXN0TGluZUJv
dHRvbSA9IGxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RC
b3ggPSByYi0+Zmlyc3RSb290Qm94KCk7CisgICAgICAgICAgICBMZWdhY3lSb290SW5saW5lQm94
KiByb290Qm94ID0gcmItPmZpcnN0Um9vdEJveCgpOwogICAgICAgICAgICAgaWYgKHJvb3RCb3gp
CiAgICAgICAgICAgICAgICAgZmlyc3RMaW5lVG9wID0gcm9vdEJveC0+bG9naWNhbFRvcExheW91
dE92ZXJmbG93KCk7CiAgICAgICAgICAgICBmaXJzdExpbmVUb3AgKz0gcmItPmxvZ2ljYWxUb3Ao
KTsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OmxheW91dEJsb2NrKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0KQogICAgIH0gZWxzZSBp
ZiAoc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPT0gKHN0eWxlKCkucnVieVBv
c2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpBZnRlcikpIHsKICAgICAgICAgTGF5b3V0VW5pdCBm
aXJzdExpbmVUb3A7CiAgICAgICAgIGlmIChSZW5kZXJSdWJ5QmFzZSogcmIgPSBydWJ5QmFzZSgp
KSB7Ci0gICAgICAgICAgICBSb290SW5saW5lQm94KiByb290Qm94ID0gcmItPmZpcnN0Um9vdEJv
eCgpOworICAgICAgICAgICAgTGVnYWN5Um9vdElubGluZUJveCogcm9vdEJveCA9IHJiLT5maXJz
dFJvb3RCb3goKTsKICAgICAgICAgICAgIGlmIChyb290Qm94KQogICAgICAgICAgICAgICAgIGZp
cnN0TGluZVRvcCA9IHJvb3RCb3gtPmxvZ2ljYWxUb3BMYXlvdXRPdmVyZmxvdygpOwogICAgICAg
ICAgICAgZmlyc3RMaW5lVG9wICs9IHJiLT5sb2dpY2FsVG9wKCk7CkBAIC0xOTQsNyArMTk0LDcg
QEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IExheW91dFVuaXQgcGFnZUhlaWdodCkKICAgICB9IGVsc2UgewogICAgICAgICBMYXlvdXRVbml0
IGxhc3RMaW5lQm90dG9tID0gbG9naWNhbEhlaWdodCgpOwogICAgICAgICBpZiAoUmVuZGVyUnVi
eUJhc2UqIHJiID0gcnVieUJhc2UoKSkgewotICAgICAgICAgICAgUm9vdElubGluZUJveCogcm9v
dEJveCA9IHJiLT5sYXN0Um9vdEJveCgpOworICAgICAgICAgICAgTGVnYWN5Um9vdElubGluZUJv
eCogcm9vdEJveCA9IHJiLT5sYXN0Um9vdEJveCgpOwogICAgICAgICAgICAgaWYgKHJvb3RCb3gp
CiAgICAgICAgICAgICAgICAgbGFzdExpbmVCb3R0b20gPSByb290Qm94LT5sb2dpY2FsQm90dG9t
TGF5b3V0T3ZlcmZsb3coKTsKICAgICAgICAgICAgIGxhc3RMaW5lQm90dG9tICs9IHJiLT5sb2dp
Y2FsVG9wKCk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpnZXRPdmVy
aGFuZyhib29sIGZpcnN0TGluZSwgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyLCBSZW4KICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IHRoaXMtPmxvZ2ljYWxXaWR0aCgpOwogICAgIGZs
b2F0IGxvZ2ljYWxMZWZ0T3ZlcmhhbmcgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
KCk7CiAgICAgZmxvYXQgbG9naWNhbFJpZ2h0T3ZlcmhhbmcgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6bWF4KCk7Ci0gICAgZm9yIChSb290SW5saW5lQm94KiByb290SW5saW5lQm94ID0g
cnVieUJhc2UtPmZpcnN0Um9vdEJveCgpOyByb290SW5saW5lQm94OyByb290SW5saW5lQm94ID0g
cm9vdElubGluZUJveC0+bmV4dFJvb3RCb3goKSkgeworICAgIGZvciAoYXV0byogcm9vdElubGlu
ZUJveCA9IHJ1YnlCYXNlLT5maXJzdFJvb3RCb3goKTsgcm9vdElubGluZUJveDsgcm9vdElubGlu
ZUJveCA9IHJvb3RJbmxpbmVCb3gtPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgbG9naWNhbExl
ZnRPdmVyaGFuZyA9IHN0ZDo6bWluPGZsb2F0Pihsb2dpY2FsTGVmdE92ZXJoYW5nLCByb290SW5s
aW5lQm94LT5sb2dpY2FsTGVmdCgpKTsKICAgICAgICAgbG9naWNhbFJpZ2h0T3ZlcmhhbmcgPSBz
dGQ6Om1pbjxmbG9hdD4obG9naWNhbFJpZ2h0T3ZlcmhhbmcsIGxvZ2ljYWxXaWR0aCAtIHJvb3RJ
bmxpbmVCb3gtPmxvZ2ljYWxSaWdodCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKaW5kZXggMjYzYzRmNDhkYzFkLi5hYmI0
M2UzMGQyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
TGluZUJveGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExp
bmVCb3hlcy5jcHAKQEAgLTI4LDEwICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiRWxsaXBzaXNCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5Um9vdElubGlu
ZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgog
I2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
NzgsOCArMTc4LDggQEAgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpkaXJ0eUFsbCgpCiAKIGJv
b2wgUmVuZGVyVGV4dExpbmVCb3hlczo6ZGlydHlSYW5nZShSZW5kZXJUZXh0JiByZW5kZXJlciwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgaW50IGxlbmd0aERlbHRhKQogewotICAgIFJv
b3RJbmxpbmVCb3gqIGZpcnN0Um9vdEJveCA9IG51bGxwdHI7Ci0gICAgUm9vdElubGluZUJveCog
bGFzdFJvb3RCb3ggPSBudWxscHRyOworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGZpcnN0Um9v
dEJveCA9IG51bGxwdHI7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbGFzdFJvb3RCb3ggPSBu
dWxscHRyOwogCiAgICAgLy8gRGlydHkgYWxsIHRleHQgYm94ZXMgdGhhdCBpbmNsdWRlIGNoYXJh
Y3RlcnMgaW4gYmV0d2VlbiBvZmZzZXQgYW5kIG9mZnNldCtsZW4uCiAgICAgYm9vbCBkaXJ0aWVk
TGluZXMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFp
bGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFp
bGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaAppbmRleCBlZTUxNjZiYTQxZjguLmY5NzAzOWFjNTU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9v
dElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0
c1Jvb3RJbmxpbmVCb3guaApAQCAtMjUsMTUgKzI1LDE1IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3gu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxp
bmVCb3ggZmluYWwgOiBwdWJsaWMgUm9vdElubGluZUJveCB7CitjbGFzcyBUcmFpbGluZ0Zsb2F0
c1Jvb3RJbmxpbmVCb3ggZmluYWwgOiBwdWJsaWMgTGVnYWN5Um9vdElubGluZUJveCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3gpOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveChSZW5kZXJCbG9j
a0Zsb3cmIGJsb2NrRmxvdykKLSAgICAgICAgOiBSb290SW5saW5lQm94KGJsb2NrRmxvdykKKyAg
ICAgICAgOiBMZWdhY3lSb290SW5saW5lQm94KGJsb2NrRmxvdykKICAgICB7CiAgICAgICAgIHNl
dEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0U3RhdGUuaAppbmRleCBkMDY4OWI0ODFmNTcuLmRjNDc1
MDM0ZWYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dFN0YXRlLmgKQEAgLTExNiw4ICsxMTYsOCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBlbmRM
aW5lTG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kTGluZUxvZ2ljYWxUb3A7IH0KICAg
ICB2b2lkIHNldEVuZExpbmVMb2dpY2FsVG9wKExheW91dFVuaXQgbG9naWNhbFRvcCkgeyBtX2Vu
ZExpbmVMb2dpY2FsVG9wID0gbG9naWNhbFRvcDsgfQogCi0gICAgUm9vdElubGluZUJveCogZW5k
TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kTGluZTsgfQotICAgIHZvaWQgc2V0RW5kTGluZShS
b290SW5saW5lQm94KiBsaW5lKSB7IG1fZW5kTGluZSA9IGxpbmU7IH0KKyAgICBMZWdhY3lSb290
SW5saW5lQm94KiBlbmRMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRMaW5lOyB9CisgICAgdm9p
ZCBzZXRFbmRMaW5lKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmUpIHsgbV9lbmRMaW5lID0gbGlu
ZTsgfQogCiAgICAgTGF5b3V0VW5pdCBhZGp1c3RlZExvZ2ljYWxMaW5lVG9wKCkgY29uc3QgeyBy
ZXR1cm4gbV9hZGp1c3RlZExvZ2ljYWxMaW5lVG9wOyB9CiAgICAgdm9pZCBzZXRBZGp1c3RlZExv
Z2ljYWxMaW5lVG9wKExheW91dFVuaXQgdmFsdWUpIHsgbV9hZGp1c3RlZExvZ2ljYWxMaW5lVG9w
ID0gdmFsdWU7IH0KQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVwYWlu
dExvZ2ljYWxUb3AgPSBtX3JlcGFpbnRMb2dpY2FsQm90dG9tID0gbG9naWNhbEhlaWdodDsKICAg
ICB9CiAKLSAgICB2b2lkIHVwZGF0ZVJlcGFpbnRSYW5nZUZyb21Cb3goUm9vdElubGluZUJveCog
Ym94LCBMYXlvdXRVbml0IHBhZ2luYXRpb25EZWx0YSA9IDBfbHUpCisgICAgdm9pZCB1cGRhdGVS
ZXBhaW50UmFuZ2VGcm9tQm94KExlZ2FjeVJvb3RJbmxpbmVCb3gqIGJveCwgTGF5b3V0VW5pdCBw
YWdpbmF0aW9uRGVsdGEgPSAwX2x1KQogICAgIHsKICAgICAgICAgbV91c2VzUmVwYWludEJvdW5k
cyA9IHRydWU7CiAgICAgICAgIG1fcmVwYWludExvZ2ljYWxUb3AgPSBzdGQ6Om1pbihtX3JlcGFp
bnRMb2dpY2FsVG9wLCBib3gtPmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdygpICsgc3RkOjptaW48
TGF5b3V0VW5pdD4ocGFnaW5hdGlvbkRlbHRhLCAwKSk7CkBAIC0xNTYsNyArMTU2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBMaW5lSW5mbyBtX2xpbmVJbmZvOwogICAgIExheW91dFVuaXQg
bV9lbmRMaW5lTG9naWNhbFRvcDsKLSAgICBSb290SW5saW5lQm94KiBtX2VuZExpbmUgeyBudWxs
cHRyIH07CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbV9lbmRMaW5lIHsgbnVsbHB0ciB9Owog
CiAgICAgTGF5b3V0VW5pdCBtX2FkanVzdGVkTG9naWNhbExpbmVUb3A7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5k
ZXggMTk1MmFmMWFmOTNmLi5lZDhmMjBmOTg1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC05OCw3ICs5OCw3
IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6Om1pcnJvcklmTmVlZGVkKExheW91dFVu
aXQgaG9yaXpvbnRhbE9mZnNldCwgTGF5b3V0CiBMYXlvdXRVbml0IFJlbmRlck1hdGhNTEJsb2Nr
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBv
c2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBtYXRobWwuY3NzIHNldHMgbWF0aCB7IC13ZWJr
aXQtbGluZS1ib3gtY29udGFpbjogZ2x5cGhzIHJlcGxhY2VkOyBsaW5lLWhlaWdodDogMDsgfSwg
c28gd2hlbiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyB3
ZSB3YW50IHRvCi0gICAgLy8gcmV0dXJuIDAgaGVyZSB0byBtYXRjaCBvdXIgbGluZS1oZWlnaHQu
IFRoaXMgbWF0dGVycyB3aGVuIFJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERlc2NlbnRGb3JCb3gg
aXMgY2FsbGVkIG9uIGEgUm9vdElubGluZUJveCBmb3IgYW4gaW5saW5lLWJsb2NrLgorICAgIC8v
IHJldHVybiAwIGhlcmUgdG8gbWF0Y2ggb3VyIGxpbmUtaGVpZ2h0LiBUaGlzIG1hdHRlcnMgd2hl
biBMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGlzIGNhbGxlZCBv
biBhIFJvb3RJbmxpbmVCb3ggZm9yIGFuIGlubGluZS1ibG9jay4KICAgICBpZiAobGluZVBvc2l0
aW9uTW9kZSA9PSBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCiAgICAgICAgIHJldHVybiAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApp
bmRleCBkMGQyYjQwNWRjZDguLmJlMzJhM2U4NjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBS
ZW5kZXJTVkdUZXh0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXQKIAogVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250ZW50cywgY29uc3QgUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50KQogewotICAgIFJvb3RJbmxpbmVCb3gqIHJv
b3RCb3ggPSBmaXJzdFJvb3RCb3goKTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiByb290Qm94
ID0gZmlyc3RSb290Qm94KCk7CiAgICAgaWYgKCFyb290Qm94KQogICAgICAgICByZXR1cm4gY3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKaW5kZXggYTA2
M2Y5YzA0YTc1Li4yZGNiMThiZDRjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU1ZHUm9vdElubGluZUJveCk7
CiAKIFNWR1Jvb3RJbmxpbmVCb3g6OlNWR1Jvb3RJbmxpbmVCb3goUmVuZGVyU1ZHVGV4dCYgcmVu
ZGVyU1ZHVGV4dCkKLSAgICA6IFJvb3RJbmxpbmVCb3gocmVuZGVyU1ZHVGV4dCkKKyAgICA6IExl
Z2FjeVJvb3RJbmxpbmVCb3gocmVuZGVyU1ZHVGV4dCkKICAgICAsIG1fbG9naWNhbEhlaWdodCgw
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290
SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVC
b3guaAppbmRleCBjYjczM2NhNjlhNDEuLjJiMzA4YTBkZjhhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmgKQEAgLTIyLDcgKzIyLDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCisjaW5jbHVkZSAi
TGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlNWR1RleHRMYXlvdXRFbmdpbmUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZW5kZXJTVkdUZXh0OwogY2xhc3MgU1ZHSW5saW5lVGV4dEJveDsKIAotY2xh
c3MgU1ZHUm9vdElubGluZUJveCBmaW5hbCA6IHB1YmxpYyBSb290SW5saW5lQm94IHsKK2NsYXNz
IFNWR1Jvb3RJbmxpbmVCb3ggZmluYWwgOiBwdWJsaWMgTGVnYWN5Um9vdElubGluZUJveCB7CiAg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTVkdSb290SW5saW5lQm94KTsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTVkdSb290SW5saW5lQm94KFJlbmRlclNWR1RleHQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDExODhhMTMxMDc2Yy4uZWY0
OWIzY2U0YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiSW5saW5lVGV4dEJveC5oIgotI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRl
ICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiVGV4dFVuZGVybGluZU9mZnNldC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Niw3ICs2Niw3IEBAIGZsb2F0IGNvbXB1dGVV
bmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBvc2l0aW9uLCBU
ZXh0VW5kZXJsCiAgICAgY2FzZSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyOiB7CiAgICAg
ICAgIEFTU0VSVChpbmxpbmVUZXh0Qm94KTsKICAgICAgICAgLy8gUG9zaXRpb24gdW5kZXJsaW5l
IHJlbGF0aXZlIHRvIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgbG93ZXN0IGVsZW1lbnQncyBjb250
ZW50IGJveC4KLSAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGluZVRl
eHRCb3gtPnJvb3QoKTsKKyAgICAgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJv
eCA9IGlubGluZVRleHRCb3gtPnJvb3QoKTsKICAgICAgICAgY29uc3QgUmVuZGVyRWxlbWVudCog
ZGVjb3JhdGlvblJlbmRlcmVyID0gaW5saW5lVGV4dEJveC0+cGFyZW50KCktPnJlbmRlcmVyKCku
ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oVGV4dERlY29yYXRpb246OlVuZGVy
bGluZSwgaW5saW5lVGV4dEJveC0+aXNGaXJzdExpbmUoKSk7CiAgICAgICAgIAogICAgICAgICBm
bG9hdCBvZmZzZXQ7Cg==
</data>
<flag name="commit-queue"
          id="451764"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430346</attachid>
            <date>2021-06-02 07:18:07 -0700</date>
            <delta_ts>2021-06-02 09:20:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-root-inline-box-rename-2.patch</filename>
            <type>text/plain</type>
            <size>143677</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMjAxNjU5ZTg4NDguLjYyM2E4NTllNDUzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzNSBAQAorMjAyMS0wNi0wMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIFJvb3RJbmxpbmVCb3ggdG8gTGVnYWN5Um9vdElubGluZUJv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9yZSBs
ZWdhY3kgbGluZSBsYXlvdXQgcGF0aCByZW5hbWluZy4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldE5leHRTb2Z0QnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnZhbHVlV2l0aEhhcmRMaW5lQnJlYWtzIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRv
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aExpbmU6OmxlZ2Fj
eVJvb3RJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpMaW5lSXRlcmF0b3JM
ZWdhY3lQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRl
cmF0b3JMZWdhY3lQYXRoOjpzZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjps
ZWdhY3lSb290SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bGVnYWN5Um9v
dElubGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JMZWdhY3lQYXRoOjpSdW5JdGVyYXRvckxlZ2FjeVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aDo6cm9vdElubGluZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0VsbGlw
c2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjptYXJrdXBCb3ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRp
bmdPYmplY3RzLmg6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6b3JpZ2luYXRp
bmdMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpzZXRPcmln
aW5hdGluZ0xpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmlubmVyVGV4dElmVHJ1bmNhdGVkIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlTG9naWNhbEJveEhlaWdodHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
cGFpbnRNYXJrZWRUZXh0QmFja2dyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OnJvb3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94Ojpyb290KToKKyAgICAgICAg
KiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2Fj
eUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91dDo6Y3Jl
YXRlUm9vdElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpj
cmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxp
bmVMYXlvdXQ6OmNvbnN0cnVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdp
ZHRoRm9yVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojp1cGRh
dGVSdWJ5Rm9ySnVzdGlmaWVkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5
b3V0Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVj
dGlvblBvc2l0aW9uc0ZvclNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxh
eW91dDo6cmVtb3ZlSW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxp
bmVMYXlvdXQ6OmNvbXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91dDo6Y3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5z
KToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUxpbmVSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lMaW5lTGF5b3V0OjpsYXlvdXRSdW5zQW5kRmxvYXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OnJlYXR0YWNoQ2xlYW5MaW5lRmxvYXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNoZWNrRmxvYXRJbkNsZWFuTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpkZXRlcm1pbmVTdGFydFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmRldGVybWluZUVu
ZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNoZWNrUGFn
aW5hdGlvbkFuZEZsb2F0c0F0RW5kTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5l
TGF5b3V0OjpsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5lQ2hhbmdlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjptYXRjaGVkRW5kTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpsaW5lQ291bnRVbnRpbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpkZWxldGVFbGxpcHNpc0xp
bmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpjaGVja0xpbmVz
Rm9yVGV4dE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OnVw
ZGF0ZUZyYWdtZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUxp
bmVMYXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmZpcnN0Um9v
dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpsYXN0Um9v
dEJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OkxlZ2FjeVJvb3RJbmxpbmVCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6fkxlZ2FjeVJvb3RJbmxpbmVCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6ZGV0YWNoRWxsaXBzaXNCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmlzSHlwaGVuYXRlZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpiYXNlbGluZVBv
c2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6Omxp
bmVIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6
bGluZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9v
dElubGluZUJveDo6cGxhY2VFbGxpcHNpcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290
SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJv
b3RJbmxpbmVCb3g6OnBhaW50RWxsaXBzaXNCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Um9vdElubGluZUJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9v
dElubGluZUJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElu
bGluZUJveDo6YWRqdXN0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElu
bGluZUJveDo6Y2hpbGRSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxp
bmVCb3g6OmNvbnRhaW5pbmdGcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94OjpjbGVhckNvbnRhaW5pbmdGcmFnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpzZXRDb250YWluaW5nRnJhZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6YWxpZ25Cb3hlc0luQmxvY2tEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6YmVmb3JlQW5ub3Rh
dGlvbnNBZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxp
bmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVJvb3RJbmxpbmVCb3g6OmZpcnN0U2VsZWN0ZWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Um9vdElubGluZUJveDo6bGFzdFNlbGVjdGVkQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpibG9ja0JlZm9yZVdpdGhpblNlbGVjdGlvblJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9j
ayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpzZWxlY3Rp
b25Cb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6
YmxvY2tGbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6
OmxpbmVCcmVha0JpZGlTdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9v
dElubGluZUJveDo6c2V0TGluZUJyZWFrSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lS
b290SW5saW5lQm94OjplbGxpcHNpc0JveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94OjpyZW1vdmVMaW5lQm94RnJvbVJlbmRlck9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpleHRyYWN0TGluZUJveEZyb21SZW5kZXJP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6YXR0YWNoTGlu
ZUJveFRvUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVC
b3g6OnBhZGRlZExheW91dE92ZXJmbG93UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRBc2NlbnRBbmREZXNjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVC
b3g6OmFzY2VudEFuZERlc2NlbnRGb3JCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5Um9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlRm9udEZvckJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlR2x5
cGhzRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6
OmluY2x1ZGVJbml0aWFsTGV0dGVyRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVNYXJnaW5Gb3JCb3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6Zml0c1RvR2x5cGhzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVzUm9vdExpbmVCb3hGb250
T3JMZWFkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6
Om91dHB1dExpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGlu
ZUJveDo6Ym94TmFtZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxp
bmVCb3guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmguCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpsaW5lVG9wIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmxpbmVCb3R0b20g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6bGluZUJveFRv
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpsaW5lQm94
Qm90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6Omxp
bmVCb3hIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJv
eDo6cGFnaW5hdGlvblN0cnV0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJ
bmxpbmVCb3g6OnNldFBhZ2luYXRpb25TdHJ1dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lS
b290SW5saW5lQm94Ojppc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6c2V0SXNGaXJzdEFmdGVyUGFnZUJyZWFrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnBhZ2luYXRlZExpbmVXaWR0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpzZXRQYWdpbmF0
ZWRMaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6c2Vs
ZWN0aW9uSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVC
b3g6OnNlbGVjdGlvbkhlaWdodEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6c2V0TGluZVRvcEJvdHRvbVBvc2l0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpsaW5lQnJlYWtP
YmogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6bGluZUJy
ZWFrUG9zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnNl
dExpbmVCcmVha1Bvcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojph
cHBlbmRGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpyZW1v
dmVGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpmbG9hdHNQ
dHIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6YmFzZWxpbmVUeXBl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6Omhhc0Fubm90
YXRpb25zQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVC
b3g6Omhhc0Fubm90YXRpb25zQWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
Um9vdElubGluZUJveDo6bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojpsb2dpY2Fs
VG9wTGF5b3V0T3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElu
bGluZUJveDo6bG9naWNhbEJvdHRvbUxheW91dE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmlzVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6Om5leHRSb290
Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnByZXZS
b290Qm94IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhbGN1bGF0ZU1pbmltdW1QYWdlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Om5lZWRz
QXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Rmxvdzo6YWRqdXN0TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKToKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZEluY2x1ZGVMaW5lc0ZvclBhcmVudExpbmVDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVDb3VudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyVHJ1bmNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkZEZvY3VzUmluZ1JlY3RzRm9ySW5saW5lQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpvdXRwdXRMaW5lVHJlZUFuZE1h
cmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQ2hlY2tMaW5lcyk6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2tGbG93OjpsaW5lR3JpZEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OnNldExpbmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6Zmlyc3RSb290Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6bGFzdFJvb3RCb3ggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bGluZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
SGVpZ2h0Rm9yTGluZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQ2hl
Y2tMaW5lcyk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRG
bG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93OjpjaGVja0xp
bmVzQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVu
dGVkRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpnZW5lcmF0ZUN1bGxlZExpbmVCb3hSZWN0cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmxpbmVzVmlzdWFsT3ZlcmZsb3dC
b3VuZGluZ0JveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmxpbmVz
VmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveEluRnJhZ21lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW5saW5lOjpwYWludE91dGxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaW5lQm94TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlz
dDo6YW55TGluZUludGVyc2VjdHNSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpbmVCb3hMaXN0OjpsaW5lSW50ZXJzZWN0c0RpcnR5UmVjdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6cGFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjps
b2NhbFNlbGVjdGlvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6
YWRkT3ZlcmZsb3dGcm9tTGlzdE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpzaG91
bGRQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6bG9jYWxTZWxlY3Rp
b25SZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpnZXRPdmVyaGFuZyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dExpbmVCb3hlczo6ZGlydHlSYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1RyYWlsaW5n
RmxvYXRzUm9vdElubGluZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVMYXlv
dXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjplbmRMaW5lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6c2V0RW5kTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnVwZGF0ZVJlcGFpbnRSYW5nZUZyb21C
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Um9vdElubGluZUJveDo6U1ZHUm9vdElubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdSb290SW5saW5lQm94Lmg6CisgICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVVbmRlcmxpbmVPZmZzZXQpOgorCiAyMDIx
LTA2LTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKHIyNzY4ODIpOiBTdHlsZSBub3QgaW52YWxpZGF0ZWQgY29ycmVjdGx5IGZvciBtZWRp
YSBxdWVyaWVzIGluIHNoYWRvdyB0cmVlcyB0aGF0IHNoYXJlIHN0eWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCBkYTI3YjQxOTExZjEuLjg5ZTI5OTY2Yjk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xNTMxLDYgKzE1MzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcmVuZGVyaW5nL0xheWVyRnJhZ21lbnQuaAogICAgIHJlbmRlcmluZy9MZWdhY3lJbmxp
bmVCb3guaAogICAgIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmgKKyAgICByZW5kZXJpbmcv
TGVnYWN5Um9vdElubGluZUJveC5oCiAgICAgcmVuZGVyaW5nL01hcmtlZFRleHQuaAogICAgIHJl
bmRlcmluZy9PcmRlckl0ZXJhdG9yLmgKICAgICByZW5kZXJpbmcvT3ZlcmxhcFRlc3RSZXF1ZXN0
Q2xpZW50LmgKQEAgLTE1NzYsNyArMTU3Nyw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAogICAgIHJlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKLSAgICByZW5kZXJpbmcv
Um9vdElubGluZUJveC5oCiAgICAgcmVuZGVyaW5nL1Njcm9sbEFsaWdubWVudC5oCiAgICAgcmVu
ZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNGM0NjM5ZmFl
NzgyLi4yZmIxM2YyM2ViMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjY2LDYgKzIyNjYsNyBAQCBy
ZW5kZXJpbmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmNwcAogcmVuZGVyaW5nL0xheW91dFJlcGFp
bnRlci5jcHAKIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3BwCiByZW5kZXJpbmcvTGVnYWN5
TGluZUxheW91dC5jcHAKK3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAogcmVuZGVy
aW5nL01hcmtlZFRleHQuY3BwCiByZW5kZXJpbmcvTWFya2VkVGV4dFN0eWxlLmNwcAogcmVuZGVy
aW5nL09yZGVySXRlcmF0b3IuY3BwCkBAIC0yMzUzLDcgKzIzNTQsNiBAQCByZW5kZXJpbmcvUmVu
ZGVyVlRUQ3VlLmNwcAogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAogcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAotcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwCiByZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcAogcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHAKIHJlbmRlcmluZy9UYWJsZUxheW91dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMzc4ZDlk
OWY2M2YuLmIxN2NkOTA1ZjY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzU3Miw3ICszNTcyLDcgQEAKIAkJQThDRkYwNEUw
QTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkYwNDkwQTE1NEYwOTAwMEE0MjM0IC8qIEF1
dG9UYWJsZUxheW91dC5oICovOyB9OwogCQlBOENGRjA0RjBBMTU0RjA5MDAwQTQyMzQgLyogRml4
ZWRUYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThDRkYwNEEwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCAqLzsg
fTsKIAkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjA0QzBBMTU0RjA5MDAw
QTQyMzQgLyogVGFibGVMYXlvdXQuaCAqLzsgfTsKLQkJQThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0
IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4Q0ZGNURBMEExNTVBMDUwMDBBNDIzNCAvKiBSb290SW5saW5lQm94LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQThDRkY1RTEw
QTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeVJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNURBMEExNTVBMDUwMDBBNDIzNCAv
KiBMZWdhY3lSb290SW5saW5lQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dC
b3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZG
NURDMEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVGbG93Qm94LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThDRkY1RTUwQTE1NUEwNTAwMEE0MjM0
IC8qIExlZ2FjeUlubGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDRkY1REUwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4Q0ZG
NkJFMEExNTYxMTgwMDBBNDIzNCAvKiBFbGxpcHNpc0JveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkY2QkQwQTE1NjExODAwMEE0MjM0IC8qIEVs
bGlwc2lzQm94LmggKi87IH07CkBAIC0xMzE2MCwxMiArMTMxNjAsMTIgQEAKIAkJQThDRkYwNEEw
QTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZpeGVkVGFibGVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThDRkYwNEIwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b1RhYmxlTGF5b3V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkYwNEMwQTE1NEYwOTAwMEE0MjM0
IC8qIFRhYmxlTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJs
ZUxheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOENGRjVEQTBBMTU1QTA1
MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUm9vdElubGluZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOENG
RjVEQTBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5Um9vdElubGluZUJveC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5Um9vdElubGluZUJveC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOENGRjVEQzBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5lRmxv
d0JveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lRmxvd0JveC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENGRjVERDBBMTU1QTA1MDAwQTQyMzQg
LyogSW5saW5lRmxvd0JveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5saW5lRmxvd0JveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZG
NURFMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeUlubGluZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOENGRjVERjBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5SW5saW5lQm94LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lJbmxpbmVCb3gu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOENGRjVFMDBBMTU1QTA1MDAwQTQy
MzQgLyogUm9vdElubGluZUJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUm9vdElubGluZUJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4
Q0ZGNUUwMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lSb290SW5saW5lQm94LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lSb290SW5saW5lQm94LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkY2QkQwQTE1NjExODAwMEE0MjM0IC8q
IEVsbGlwc2lzQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGxpcHNp
c0JveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENGRjZDQTBBMTU2MUNEMDAw
QTQyMzQgLyogRWxsaXBzaXNCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVsbGlwc2lzQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThD
RkY3OTgwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxGb250RWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvbnRFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjEwLDYgKzMwMjEwLDggQEAKIAkJCQlBMTIwQUNBMDEz
Rjk5ODM3MDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmggKi8sCiAJCQkJQkNFQTQ4MTMwOTdE
OTMwMjAwOTRDOUU0IC8qIExlZ2FjeUxpbmVMYXlvdXQuY3BwICovLAogCQkJCUU0QTFBQzc4MjJG
QUZENTAwMDE3Qjc1QiAvKiBMZWdhY3lMaW5lTGF5b3V0LmggKi8sCisJCQkJQThDRkY1RTAwQTE1
NUEwNTAwMEE0MjM0IC8qIExlZ2FjeVJvb3RJbmxpbmVCb3guY3BwICovLAorCQkJCUE4Q0ZGNURB
MEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lSb290SW5saW5lQm94LmggKi8sCiAJCQkJOUJBMjcz
RjMxNzIyMDZCQjAwOTdDRTQ3IC8qIExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCAqLywK
IAkJCQlDRTE4NjY0MjFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5jcHAgKi8sCiAJCQkJ
Q0UxODY2NDMxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuaCAqLywKQEAgLTMwNDA0LDgg
KzMwNDA2LDYgQEAKIAkJCQlCRTIwNTA3QzE4QTQ1OEIxMDA4MDY0N0UgLyogUmVuZGVyVlRUQ3Vl
LmggKi8sCiAJCQkJQTg3MURGRTEwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAg
Ki8sCiAJCQkJQTg3MURGRTAwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5oICovLAot
CQkJCUE4Q0ZGNUUwMEExNTVBMDUwMDBBNDIzNCAvKiBSb290SW5saW5lQm94LmNwcCAqLywKLQkJ
CQlBOENGRjVEQTBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5oICovLAogCQkJCTVE
OTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGlnbm1lbnQuY3BwICovLAogCQkJCTVE
OTI1QjY2MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGlnbm1lbnQuaCAqLywKIAkJCQk0NEIz
OEJGOTI1MzY5QTg4MDBBNDQ1OEQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcCAqLywKQEAgLTM1
MDM3LDcgKzM1MDM3LDcgQEAKIAkJCQlGRDMxNjBBOTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
Q29udm9sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBQjEyQjAyNkY3MDBDMUEzNTkg
LyogUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFEMTJC
MDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICov
LAorCQkJCUE4Q0ZGNUUxMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lSb290SW5saW5lQm94Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDOTBFRjg2RDQ3MDA5RDBDQUYgLyogUm90YXRlVHJh
bnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzNGOTVGRjEyQzk3QkZFMDAz
MUFBRjkgLyogUm91bmRlZFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RTIzMzYzMURDN0RB
MjQwMEYyOEQwMSAvKiBSc2FPdGhlclByaW1lc0luZm8uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGZjYmJmNWU2YjgyYi4uYTViNDMwMjM4NGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgi
CiAjaW5jbHVkZSAiTGFiZWxzTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJMZWdhY3lSb290SW5saW5l
Qm94LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlz
dC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgpAQCAtNTEsNyArNTIsNiBAQAogI2luY2x1
ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJXaWRnZXQuaCIKLSNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVk
ZSAiU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDA0N2M5M2Q3ZGU0MC4uMDdjYWE5YjhiMzE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcApAQCAtNjgxLDkgKzY4MSw5IEBAIHVuc2lnbmVkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjppbmRleEZvclBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwYXNzZWRQb3NpCiAgICAgcmV0
dXJuIGluZGV4OwogfQogCi1zdGF0aWMgdm9pZCBnZXROZXh0U29mdEJyZWFrKFJvb3RJbmxpbmVC
b3gqJiBsaW5lLCBOb2RlKiYgYnJlYWtOb2RlLCB1bnNpZ25lZCYgYnJlYWtPZmZzZXQpCitzdGF0
aWMgdm9pZCBnZXROZXh0U29mdEJyZWFrKExlZ2FjeVJvb3RJbmxpbmVCb3gqJiBsaW5lLCBOb2Rl
KiYgYnJlYWtOb2RlLCB1bnNpZ25lZCYgYnJlYWtPZmZzZXQpCiB7Ci0gICAgUm9vdElubGluZUJv
eCogbmV4dDsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBuZXh0OwogICAgIGZvciAoOyBsaW5l
OyBsaW5lID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gbGluZS0+bmV4dFJvb3RCb3goKTsKICAg
ICAgICAgaWYgKG5leHQgJiYgIWxpbmUtPmVuZHNXaXRoQnJlYWsoKSkgewpAQCAtNzE1LDcgKzcx
NSw3IEBAIFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmFsdWVXaXRoSGFyZExp
bmVCcmVha3MoKSBjb25zdAogCiAgICAgTm9kZSogYnJlYWtOb2RlOwogICAgIHVuc2lnbmVkIGJy
ZWFrT2Zmc2V0OwotICAgIFJvb3RJbmxpbmVCb3gqIGxpbmUgPSByZW5kZXJlci0+Zmlyc3RSb290
Qm94KCk7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbGluZSA9IHJlbmRlcmVyLT5maXJzdFJv
b3RCb3goKTsKICAgICBpZiAoIWxpbmUpCiAgICAgICAgIHJldHVybiB2YWx1ZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oCmluZGV4IDYxMDUyMzdkMTUxYS4uOGViNDQxNTJi
ODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaApAQCAtNzEsNyArNzEsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdDsKIAogICAgIGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7Ci0gICAgY29uc3QgUm9vdElu
bGluZUJveCogbGVnYWN5Um9vdElubGluZUJveCgpIGNvbnN0OworICAgIGNvbnN0IExlZ2FjeVJv
b3RJbmxpbmVCb3gqIGxlZ2FjeVJvb3RJbmxpbmVCb3goKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIGZyaWVuZCBjbGFzcyBMaW5lSXRlcmF0b3I7CkBAIC04Miw3ICs4Miw3IEBAIHByb3RlY3Rl
ZDoKIGNsYXNzIExpbmVJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgTGluZUl0ZXJhdG9yKCkgOiBt
X2xpbmUoTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCB7IG51bGxwdHIgfSkgeyB9OwotICAgIExpbmVJ
dGVyYXRvcihjb25zdCBSb290SW5saW5lQm94KiByb290SW5saW5lQm94KSA6IG1fbGluZShMaW5l
SXRlcmF0b3JMZWdhY3lQYXRoIHsgcm9vdElubGluZUJveCB9KSB7IH07CisgICAgTGluZUl0ZXJh
dG9yKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIHJvb3RJbmxpbmVCb3gpIDogbV9saW5lKExp
bmVJdGVyYXRvckxlZ2FjeVBhdGggeyByb290SW5saW5lQm94IH0pIHsgfTsKICAgICBMaW5lSXRl
cmF0b3IoUGF0aExpbmU6OlBhdGhWYXJpYW50JiYpOwogCiAgICAgTGluZUl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBp
bmxpbmUgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBQYXRoTGluZTo6Y29udGFpbmluZ0Jsb2NrKCkg
Y29uc3QKICAgICB9KTsKIH0KIAotaW5saW5lIGNvbnN0IFJvb3RJbmxpbmVCb3gqIFBhdGhMaW5l
OjpsZWdhY3lSb290SW5saW5lQm94KCkgY29uc3QKK2lubGluZSBjb25zdCBMZWdhY3lSb290SW5s
aW5lQm94KiBQYXRoTGluZTo6bGVnYWN5Um9vdElubGluZUJveCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgewog
ICAgICAgICByZXR1cm4gcGF0aC5sZWdhY3lSb290SW5saW5lQm94KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRl
cmF0b3JMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5kZXggYWFkOGJmOTI2ZTQ4
Li5jZTIwMWNjNDNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3JMZWdhY3lQYXRoLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uSW5saW5lQ29udGVudC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3JMZWdhY3lQYXRoLmgiCi0jaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUg
IkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKIGNsYXNzIExpbmVJdGVy
YXRvckxlZ2FjeVBhdGggewogcHVibGljOgotICAgIExpbmVJdGVyYXRvckxlZ2FjeVBhdGgoY29u
c3QgUm9vdElubGluZUJveCogcm9vdElubGluZUJveCkKKyAgICBMaW5lSXRlcmF0b3JMZWdhY3lQ
YXRoKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIHJvb3RJbmxpbmVCb3gpCiAgICAgICAgIDog
bV9yb290SW5saW5lQm94KHJvb3RJbmxpbmVCb3gpCiAgICAgewogICAgIH0KQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9yb290
SW5saW5lQm94LT5saW5lVG9wKCk7IH0KICAgICBMYXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdElubGluZUJveC0+bGluZUJvdHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBz
ZWxlY3Rpb25Ub3AoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPnNlbGVjdGlvblRv
cCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9yb290SW5saW5lQm94LT5zZWxlY3Rpb25Ub3AoUm9vdElubGluZUJveDo6Rm9y
SGl0VGVzdGluZzo6WWVzKTsgfQorICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9wRm9ySGl0VGVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+c2VsZWN0aW9uVG9wKExlZ2Fj
eVJvb3RJbmxpbmVCb3g6OkZvckhpdFRlc3Rpbmc6Olllcyk7IH0KICAgICBMYXlvdXRVbml0IHNl
bGVjdGlvbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+c2VsZWN0aW9u
Qm90dG9tKCk7IH0KICAgICBMYXlvdXRVbml0IGxpbmVCb3hUb3AoKSBjb25zdCB7IHJldHVybiBt
X3Jvb3RJbmxpbmVCb3gtPmxpbmVCb3hUb3AoKTsgfQogICAgIExheW91dFVuaXQgbGluZUJveEJv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bGluZUJveEJvdHRvbSgpOyB9
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+aXNIb3Jpem9udGFsKCk7IH0KIAogICAgIGNvbnN0
IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9yb290
SW5saW5lQm94LT5ibG9ja0Zsb3coKTsgfQotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIGxlZ2Fj
eVJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3g7IH0KKyAgICBj
b25zdCBMZWdhY3lSb290SW5saW5lQm94KiBsZWdhY3lSb290SW5saW5lQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290SW5saW5lQm94OyB9CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dCgpCiAgICAg
ewpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGNvbnN0
IFJvb3RJbmxpbmVCb3gqIG1fcm9vdElubGluZUJveDsKKyAgICBjb25zdCBMZWdhY3lSb290SW5s
aW5lQm94KiBtX3Jvb3RJbmxpbmVCb3g7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rl
cm5QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggOWZmODAxYmZmZmM1Li5hODIxMDQ2
MWVjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNIb3Jpem9udGFsKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250
YWluaW5nQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmNvbnRhaW5pbmdC
bG9jaygpOyB9Ci0gICAgY29uc3QgUm9vdElubGluZUJveCogbGVnYWN5Um9vdElubGluZUJveCgp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94
KiBsZWdhY3lSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAg
dm9pZCB0cmF2ZXJzZU5leHQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5kZXggNDZhY2E5YzE1NDg1Li40MDUyMzJlZTc2MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCkBAIC0y
Niw4ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIK
KyNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5o
IgotI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICB7IH0KIAogICAgIGVudW0gY2xhc3MgTG9naWNhbE9yZGVyIHsgU3RhcnQsIEVuZCB9
OwotICAgIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBSb290SW5saW5lQm94JiByb290LCBM
b2dpY2FsT3JkZXIgb3JkZXIpCisgICAgUnVuSXRlcmF0b3JMZWdhY3lQYXRoKGNvbnN0IExlZ2Fj
eVJvb3RJbmxpbmVCb3gmIHJvb3QsIExvZ2ljYWxPcmRlciBvcmRlcikKICAgICAgICAgOiBtX2xv
Z2ljYWxPcmRlckNhY2hlKGlubGluZUJveGVzSW5Mb2dpY2FsT3JkZXIocm9vdCkpCiAgICAgewog
ICAgICAgICBpZiAoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKSB7CkBAIC0xMjAsMTIg
KzEyMCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2lu
bGluZUJveDsgfQogCiAgICAgTGVnYWN5SW5saW5lQm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PExlZ2FjeUlubGluZUJveCo+KG1faW5saW5lQm94KTsgfQot
ICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBt
X2lubGluZUJveC0+cm9vdCgpOyB9CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9v
dElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94LT5yb290KCk7IH0KIAogcHJp
dmF0ZToKICAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gpOyB9CiAKLSAgICBzdGF0
aWMgVmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+IGlubGluZUJveGVzSW5Mb2dpY2FsT3Jk
ZXIoY29uc3QgUm9vdElubGluZUJveCYgcm9vdCkKKyAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IExl
Z2FjeUlubGluZUJveCo+IGlubGluZUJveGVzSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVnYWN5Um9v
dElubGluZUJveCYgcm9vdCkKICAgICB7CiAgICAgICAgIFZlY3RvcjxMZWdhY3lJbmxpbmVCb3gq
PiBpbmxpbmVCb3hlczsKICAgICAgICAgcm9vdC5jb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3Jk
ZXIoaW5saW5lQm94ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Vs
bGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAK
aW5kZXggZjg1OWExZDI1ZDEwLi5iYzk5Y2ZiYWQ3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmNwcApAQCAtMjUsOCArMjUsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlBh
aW50SW5mby5oIgotI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJUZXh0UnVu
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtODcsNyArODcsNyBA
QCBMZWdhY3lJbmxpbmVCb3gqIEVsbGlwc2lzQm94OjptYXJrdXBCb3goKSBjb25zdAogICAgIGlm
ICghbV9zaG91bGRQYWludE1hcmt1cEJveCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSb290
SW5saW5lQm94KiBsYXN0TGluZSA9IGJsb2NrRmxvdygpLmxhc3RSb290Qm94KCk7CisgICAgTGVn
YWN5Um9vdElubGluZUJveCogbGFzdExpbmUgPSBibG9ja0Zsb3coKS5sYXN0Um9vdEJveCgpOwog
ICAgIGlmICghbGFzdExpbmUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMTYsNyArMTE2LDcg
QEAgSW50UmVjdCBFbGxpcHNpc0JveDo6c2VsZWN0aW9uUmVjdCgpCiB7CiAgICAgY29uc3QgUmVu
ZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgpOwogICAgIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCk7Ci0gICAgY29uc3QgUm9vdElu
bGluZUJveCYgcm9vdEJveCA9IHJvb3QoKTsKKyAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94
JiByb290Qm94ID0gcm9vdCgpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRS
PyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgogICAgIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdCB7IExheW91dFVuaXQoeCgpKSwgTGF5b3V0VW5pdCh5KCkgKyBy
b290Qm94LnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSksIDBfbHUsIHJv
b3RCb3guc2VsZWN0aW9uSGVpZ2h0QWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpIH07CiAgICAg
Zm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4
dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKSwgc2VsZWN0aW9uUmVj
dCk7CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnRTZWxlY3Rpb24o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGEKICAgICBpZiAo
dGV4dENvbG9yID09IGMpCiAgICAgICAgIGMgPSBjLmludmVydGVkQ29sb3JXaXRoQWxwaGEoMS4w
KTsKIAotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7CisgICAgY29u
c3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IHJvb3QoKTsKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgLy8gRklYTUU6IFdoeSBp
cyB0aGlzIGFsd2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNvcnJlY3QgdGV4dCBydW4gZmxhZ3Mg
YmVsb3cuCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0IHsgTGF5b3V0VW5pdCh4KCkgKyBw
YWludE9mZnNldC54KCkpLCBMYXlvdXRVbml0KHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIHJvb3RC
b3guc2VsZWN0aW9uVG9wKCkpLCAwX2x1LCByb290Qm94LnNlbGVjdGlvbkhlaWdodCgpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDMzZTE3
NmUzMWI0OS4uZjU5NjJhYjk0OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxv
YXRpbmdPYmplY3RzLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBTYW1lU2l6ZUFzRmxvYXRpbmdPYmplY3QgewogICAgIFdlYWtQdHI8UmVuZGVyQm94
PiByZW5kZXJlcjsKLSAgICBXZWFrUHRyPFJvb3RJbmxpbmVCb3g+IG9yaWdpbmF0aW5nTGluZTsK
KyAgICBXZWFrUHRyPExlZ2FjeVJvb3RJbmxpbmVCb3g+IG9yaWdpbmF0aW5nTGluZTsKICAgICBM
YXlvdXRSZWN0IHJlY3Q7CiAgICAgaW50IHBhZ2luYXRpb25TdHJ1dDsKICAgICBMYXlvdXRTaXpl
IHNpemU7CkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzRmxvYXRpbmdPYmplY3Qg
ewogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEZsb2F0aW5nT2JqZWN0KSA9PSBzaXplb2YoU2FtZVNp
emVBc0Zsb2F0aW5nT2JqZWN0KSwgRmxvYXRpbmdPYmplY3Rfc2hvdWxkX3N0YXlfc21hbGwpOwog
I2lmICFBU1NFUlRfRU5BQkxFRAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFdlYWtQdHI8UmVuZGVy
Qm94PikgPT0gc2l6ZW9mKHZvaWQqKSwgV2Vha1B0cl9zaG91bGRfYmVfc2FtZV9zaXplX2FzX3Jh
d19wb2ludGVyKTsKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihXZWFrUHRyPFJvb3RJbmxpbmVCb3g+
KSA9PSBzaXplb2Yodm9pZCopLCBXZWFrUHRyX3Nob3VsZF9iZV9zYW1lX3NpemVfYXNfcmF3X3Bv
aW50ZXIpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFdlYWtQdHI8TGVnYWN5Um9vdElubGluZUJv
eD4pID09IHNpemVvZih2b2lkKiksIFdlYWtQdHJfc2hvdWxkX2JlX3NhbWVfc2l6ZV9hc19yYXdf
cG9pbnRlcik7CiAjZW5kaWYKIAogRmxvYXRpbmdPYmplY3Q6OkZsb2F0aW5nT2JqZWN0KFJlbmRl
ckJveCYgcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxv
YXRpbmdPYmplY3RzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3Rz
LmgKaW5kZXggZjgzY2Y5NDAzZDc1Li5mYWNkMGIyZTVhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKQEAgLTIzLDcgKzIzLDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCisjaW5jbHVkZSAiTGVnYWN5Um9vdElu
bGluZUJveC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKQEAgLTg4LDkgKzg4LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNEZXNj
ZW5kYW50KGJvb2wgaXNEZXNjZW5kYW50KSB7IG1faXNEZXNjZW5kYW50ID0gaXNEZXNjZW5kYW50
OyB9CiAKICAgICAvLyBGSVhNRTogQ2FsbGVycyBvZiB0aGVzZSBtZXRob2RzIGFyZSBkYW5nZXJv
dXMgYW5kIHNob3VsZCBiZSBhbGxvd2VkIGV4cGxpY2l0bHkgb3IgcmVtb3ZlZC4KLSAgICBSb290
SW5saW5lQm94KiBvcmlnaW5hdGluZ0xpbmUoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmF0aW5n
TGluZS5nZXQoKTsgfQorICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIG9yaWdpbmF0aW5nTGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYXRpbmdMaW5lLmdldCgpOyB9CiAgICAgdm9pZCBjbGVh
ck9yaWdpbmF0aW5nTGluZSgpIHsgbV9vcmlnaW5hdGluZ0xpbmUgPSBudWxscHRyOyB9Ci0gICAg
dm9pZCBzZXRPcmlnaW5hdGluZ0xpbmUoUm9vdElubGluZUJveCYgbGluZSkgeyBtX29yaWdpbmF0
aW5nTGluZSA9IG1ha2VXZWFrUHRyKGxpbmUpOyB9CisgICAgdm9pZCBzZXRPcmlnaW5hdGluZ0xp
bmUoTGVnYWN5Um9vdElubGluZUJveCYgbGluZSkgeyBtX29yaWdpbmF0aW5nTGluZSA9IG1ha2VX
ZWFrUHRyKGxpbmUpOyB9CiAKICAgICBMYXlvdXRTaXplIGxvY2F0aW9uT2Zmc2V0T2ZCb3JkZXJC
b3goKSBjb25zdAogICAgIHsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxSZW5kZXJCb3g+IG1fcmVuZGVyZXI7Ci0gICAgV2Vha1B0cjxSb290SW5s
aW5lQm94PiBtX29yaWdpbmF0aW5nTGluZTsKKyAgICBXZWFrUHRyPExlZ2FjeVJvb3RJbmxpbmVC
b3g+IG1fb3JpZ2luYXRpbmdMaW5lOwogICAgIExheW91dFJlY3QgbV9mcmFtZVJlY3Q7CiAgICAg
TGF5b3V0VW5pdCBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBMYXlvdXRTaXplIG1fbWFyZ2luT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDkw
ZDA3NWY4OWQwNS4uYzZkZDM2OGNjMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6
OmlubmVyVGV4dElmVHJ1bmNhdGVkKFRleHREaXJlY3Rpb24mIGRpcikgY29uc3QKICAgICAgICAg
ICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgICAg
ICBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVu
ZGVyZXIpOwogICAgICAgICAgICAgICAgIGlmIChibG9jay5zdHlsZSgpLnRleHRPdmVyZmxvdygp
ID09IFRleHRPdmVyZmxvdzo6RWxsaXBzaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChS
b290SW5saW5lQm94KiBsaW5lID0gYmxvY2suZmlyc3RSb290Qm94KCk7IGxpbmU7IGxpbmUgPSBs
aW5lLT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byogbGlu
ZSA9IGJsb2NrLmZpcnN0Um9vdEJveCgpOyBsaW5lOyBsaW5lID0gbGluZS0+bmV4dFJvb3RCb3go
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmUtPmhhc0VsbGlwc2lzQm94KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSBibG9jay5zdHlsZSgpLmRpcmVj
dGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVt
ZW50PigqdHJ1bmNhdGVkTm9kZSkuaW5uZXJUZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggODk0NTZkMTI1MWQ2Li40YjZjZTVkYjYyYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0
Qm94LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkxlZ2FjeVJvb3RJ
bmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlcklu
bGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC0zOCw3ICszOSw2IEBACiAjaW5j
bHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTUy
Nyw3ICs1MjcsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmFkanVzdE1heEFzY2VudEFuZERlc2Nl
bnQoTGF5b3V0VW5pdCYgbWF4QXNjZW50LCBMYXlvdXRVbml0JgogICAgIH0KIH0KIAotdm9pZCBJ
bmxpbmVGbG93Qm94Ojpjb21wdXRlTG9naWNhbEJveEhlaWdodHMoUm9vdElubGluZUJveCYgcm9v
dEJveCwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Ub3AsIExheW91dFVuaXQmIG1heFBvc2l0aW9u
Qm90dG9tLAordm9pZCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlTG9naWNhbEJveEhlaWdodHMoTGVn
YWN5Um9vdElubGluZUJveCYgcm9vdEJveCwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Ub3AsIExh
eW91dFVuaXQmIG1heFBvc2l0aW9uQm90dG9tLAogICAgIExheW91dFVuaXQmIG1heEFzY2VudCwg
TGF5b3V0VW5pdCYgbWF4RGVzY2VudCwgYm9vbCYgc2V0TWF4QXNjZW50LCBib29sJiBzZXRNYXhE
ZXNjZW50LAogICAgIGJvb2wgc3RyaWN0TW9kZSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9u
dHNNYXAmIHRleHRCb3hEYXRhTWFwLAogICAgIEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIFZl
cnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlKQpAQCAtMTE1Nyw3ICsx
MTU3LDcgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICAvLyBDb25zdHJhaW4gb3VyIGhp
dCB0ZXN0aW5nIHRvIHRoZSBsaW5lIHRvcCBhbmQgYm90dG9tIGlmIG5lY2Vzc2FyeS4KICAgICBi
b29sIG5vUXVpcmtzTW9kZSA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5pbk5vUXVpcmtzTW9kZSgp
OwogICAgIGlmICghbm9RdWlya3NNb2RlICYmICFoYXNUZXh0Q2hpbGRyZW4oKSAmJiAhKGRlc2Nl
bmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiBoYXNUZXh0RGVzY2VuZGFu
dHMoKSkpIHsKLSAgICAgICAgUm9vdElubGluZUJveCYgcm9vdEJveCA9IHJvb3QoKTsKKyAgICAg
ICAgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IHJvb3QoKTsKICAgICAgICAgTGF5b3V0
VW5pdCB0b3AgeyBpc0hvcml6b250YWwoKSA/IHkoKSA6IHgoKX07CiAgICAgICAgIExheW91dFVu
aXQgbG9naWNhbEhlaWdodCB7IGlzSG9yaXpvbnRhbCgpID8gaGVpZ2h0KCkgOiB3aWR0aCgpIH07
CiAgICAgICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjptaW4ocm9vdEJveC5saW5lQm90dG9t
KCksIHRvcCArIGxvZ2ljYWxIZWlnaHQpOwpAQCAtMTMzMCw3ICsxMzMwLDcgQEAgdm9pZCBJbmxp
bmVGbG93Qm94Ojpjb25zdHJhaW5Ub0xpbmVUb3BBbmRCb3R0b21JZk5lZWRlZChMYXlvdXRSZWN0
JiByZWN0KSBjb25zdAogewogICAgIGJvb2wgbm9RdWlya3NNb2RlID0gcmVuZGVyZXIoKS5kb2N1
bWVudCgpLmluTm9RdWlya3NNb2RlKCk7CiAgICAgaWYgKCFub1F1aXJrc01vZGUgJiYgIWhhc1Rl
eHRDaGlsZHJlbigpICYmICEoZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGlu
ZSgpICYmIGhhc1RleHREZXNjZW5kYW50cygpKSkgewotICAgICAgICBjb25zdCBSb290SW5saW5l
Qm94JiByb290Qm94ID0gcm9vdCgpOworICAgICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94
JiByb290Qm94ID0gcm9vdCgpOwogICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBpc0hv
cml6b250YWwoKSA/IHJlY3QueSgpIDogcmVjdC54KCk7CiAgICAgICAgIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gcmVjdC5oZWlnaHQoKSA6IHJlY3Qud2lkdGgo
KTsKICAgICAgICAgTGF5b3V0VW5pdCBib3R0b20gPSBzdGQ6Om1pbihyb290Qm94LmxpbmVCb3R0
b20oKSwgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmgKaW5kZXggYzI1ZTkwNTBlZTlmLi5lNzFhN2ZjZjg4ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApAQCAtMTg1LDcgKzE4NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7CiAgICAg
fQogCi0gICAgdm9pZCBjb21wdXRlTG9naWNhbEJveEhlaWdodHMoUm9vdElubGluZUJveCYsIExh
eW91dFVuaXQmIG1heFBvc2l0aW9uVG9wLCBMYXlvdXRVbml0JiBtYXhQb3NpdGlvbkJvdHRvbSwK
KyAgICB2b2lkIGNvbXB1dGVMb2dpY2FsQm94SGVpZ2h0cyhMZWdhY3lSb290SW5saW5lQm94Jiwg
TGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Ub3AsIExheW91dFVuaXQmIG1heFBvc2l0aW9uQm90dG9t
LAogICAgICAgICBMYXlvdXRVbml0JiBtYXhBc2NlbnQsIExheW91dFVuaXQmIG1heERlc2NlbnQs
IGJvb2wmIHNldE1heEFzY2VudCwgYm9vbCYgc2V0TWF4RGVzY2VudCwKICAgICAgICAgYm9vbCBz
dHJpY3RNb2RlLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIEZvbnRCYXNlbGlu
ZSwgVmVydGljYWxQb3NpdGlvbkNhY2hlJik7CiAgICAgdm9pZCBhZGp1c3RNYXhBc2NlbnRBbmRE
ZXNjZW50KExheW91dFVuaXQmIG1heEFzY2VudCwgTGF5b3V0VW5pdCYgbWF4RGVzY2VudCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCBjOGJhZDk2OGQ3
ZWYuLmE4MThkMzEzZmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcApAQCAtOTczLDcgKzk3Myw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJr
ZWRUZXh0QmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQCiAgICAg
Ly8gZHJhdyBpdHMgb3duIGhpZ2hsaWdodC4KICAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVU
ZXh0UnVuKCk7CiAKLSAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOwor
ICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7CiAgICAgTGF5
b3V0VW5pdCBzZWxlY3Rpb25Cb3R0b20gPSByb290Qm94LnNlbGVjdGlvbkJvdHRvbSgpOwogICAg
IExheW91dFVuaXQgc2VsZWN0aW9uVG9wID0gcm9vdEJveC5zZWxlY3Rpb25Ub3BBZGp1c3RlZEZv
clByZWNlZGluZ0Jsb2NrKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZUJveC5jcHAKaW5kZXggYzAyMjhjZjllOGY0Li43Yjc0ZTgwYjkyNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3BwCkBAIC0yNCw5ICsyNCw5IEBA
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiSW5saW5lRmxvd0JveC5oIgorI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIK
LSNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTE4NCwxOCArMTg0
LDE4IEBAIHZvaWQgTGVnYWN5SW5saW5lQm94OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxv
YXQgZHkpCiAgICAgICAgIGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSkubW92ZShMYXlv
dXRVbml0KGR4KSwgTGF5b3V0VW5pdChkeSkpOwogfQogCi1jb25zdCBSb290SW5saW5lQm94JiBM
ZWdhY3lJbmxpbmVCb3g6OnJvb3QoKSBjb25zdAorY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYg
TGVnYWN5SW5saW5lQm94Ojpyb290KCkgY29uc3QKIHsgCiAgICAgaWYgKHBhcmVudCgpKQogICAg
ICAgICByZXR1cm4gcGFyZW50KCktPnJvb3QoKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8Um9vdElu
bGluZUJveD4oKnRoaXMpOworICAgIHJldHVybiBkb3duY2FzdDxMZWdhY3lSb290SW5saW5lQm94
PigqdGhpcyk7CiB9CiAKLVJvb3RJbmxpbmVCb3gmIExlZ2FjeUlubGluZUJveDo6cm9vdCgpCitM
ZWdhY3lSb290SW5saW5lQm94JiBMZWdhY3lJbmxpbmVCb3g6OnJvb3QoKQogeyAKICAgICBpZiAo
cGFyZW50KCkpCiAgICAgICAgIHJldHVybiBwYXJlbnQoKS0+cm9vdCgpOwotICAgIHJldHVybiBk
b3duY2FzdDxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAgcmV0dXJuIGRvd25jYXN0PExlZ2Fj
eVJvb3RJbmxpbmVCb3g+KCp0aGlzKTsKIH0KIAogYm9vbCBMZWdhY3lJbmxpbmVCb3g6Om5leHRP
bkxpbmVFeGlzdHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUlubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZUJveC5oCmluZGV4IGZhYzBjYmY4NzNhMi4uOTRlY2UzMTFhNjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7Ci1jbGFzcyBSb290SW5saW5lQm94
OworY2xhc3MgTGVnYWN5Um9vdElubGluZUJveDsKIAogLy8gTGVnYWN5SW5saW5lQm94IHJlcHJl
c2VudHMgYSByZWN0YW5nbGUgdGhhdCBvY2N1cnMgb24gYSBsaW5lLiBJdCBjb3JyZXNwb25kcyB0
bwogLy8gc29tZSBSZW5kZXJPYmplY3QgKGkuZS4sIGl0IHJlcHJlc2VudHMgYSBwb3J0aW9uIG9m
IHRoYXQgUmVuZGVyT2JqZWN0KS4KQEAgLTE0Niw4ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHZvaWQgc2V0UGFyZW50KElubGluZUZsb3dCb3gqIHBhcikgeyBtX3BhcmVudCA9IHBhcjsg
fQogCi0gICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdCgpIGNvbnN0OwotICAgIFJvb3RJbmxp
bmVCb3gmIHJvb3QoKTsKKyAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290KCkgY29u
c3Q7CisgICAgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCgpOwogCiAgICAgLy8geCgpIGlzIHRo
ZSBsZWZ0IHNpZGUgb2YgdGhlIGJveCBpbiB0aGUgY29udGFpbmluZyBibG9jaydzIGNvb3JkaW5h
dGUgc3lzdGVtLgogICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1fdG9wTGVmdC5zZXRYKHgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKaW5kZXgg
YzVjZjZmODRiMTFlLi5hNmM0YzRmMDJlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIExlZ2FjeUxp
bmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMs
IGludCBzdGFydAogICAgIH0KIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJvb3RJbmxpbmVCb3g+IExl
Z2FjeUxpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQorc3RkOjp1bmlxdWVfcHRyPExl
Z2FjeVJvb3RJbmxpbmVCb3g+IExlZ2FjeUxpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3go
KQogewogICAgIGlmIChpczxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7CiAgICAgICAgIGF1dG8g
Ym94ID0gbWFrZVVuaXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0
PihtX2Zsb3cpKTsKQEAgLTE0MSwxMyArMTQxLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5s
aW5lQm94PiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KCkKICAgICAgICAg
cmV0dXJuIGJveDsKICAgICB9CiAgICAgICAgIAotICAgIHJldHVybiBtYWtlVW5pcXVlPFJvb3RJ
bmxpbmVCb3g+KG1fZmxvdyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Um9vdElubGlu
ZUJveD4obV9mbG93KTsKIH0KIAotUm9vdElubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6Y3Jl
YXRlQW5kQXBwZW5kUm9vdElubGluZUJveCgpCitMZWdhY3lSb290SW5saW5lQm94KiBMZWdhY3lM
aW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKIHsKICAgICBhdXRvIG5l
d1Jvb3RCb3ggPSBjcmVhdGVSb290SW5saW5lQm94KCk7Ci0gICAgUm9vdElubGluZUJveCogcm9v
dEJveCA9IG5ld1Jvb3RCb3guZ2V0KCk7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogcm9vdEJv
eCA9IG5ld1Jvb3RCb3guZ2V0KCk7CiAgICAgbV9saW5lQm94ZXMuYXBwZW5kTGluZUJveChXVEZN
b3ZlKG5ld1Jvb3RCb3gpKTsKIAogICAgIGlmIChVTkxJS0VMWShBWE9iamVjdENhY2hlOjphY2Nl
c3NpYmlsaXR5RW5hYmxlZCgpKSAmJiBmaXJzdFJvb3RCb3goKSA9PSByb290Qm94KSB7CkBAIC0y
OTAsNyArMjkwLDcgQEAgc3RhdGljIGJvb2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKGNvbnN0
IEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucykKICAgICByZXR1cm4gZW5kc1dpdGhIVE1M
U3BhY2VzKHRleHQuY2hhcmFjdGVyczE2KCksIHBvc2l0aW9uLCBsZW5ndGgpOwogfQogCi1Sb290
SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJp
ZGlSdW4+JiBiaWRpUnVucywgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvKQorTGVnYWN5Um9vdElu
bGluZUJveCogTGVnYWN5TGluZUxheW91dDo6Y29uc3RydWN0TGluZShCaWRpUnVuTGlzdDxCaWRp
UnVuPiYgYmlkaVJ1bnMsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbykKIHsKICAgICBBU1NFUlQo
YmlkaVJ1bnMuZmlyc3RSdW4oKSk7CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIExlZ2FjeUxp
bmVMYXlvdXQ6OnNldE1hcmdpbnNGb3JSdWJ5UnVuKEJpZGlSdW4qIHJ1biwgUmVuZGVyUnVieVJ1
biYgcmVuZGVyZQogICAgIG1fZmxvdy5zZXRNYXJnaW5FbmRGb3JDaGlsZChyZW5kZXJlciwgTGF5
b3V0VW5pdCgtZW5kT3ZlcmhhbmcpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldExvZ2lj
YWxXaWR0aEZvclRleHRSdW4oUm9vdElubGluZUJveCogbGluZUJveCwgQmlkaVJ1biogcnVuLCBS
ZW5kZXJUZXh0JiByZW5kZXJlciwgZmxvYXQgeFBvcywgY29uc3QgTGluZUluZm8mIGxpbmVJbmZv
LAorc3RhdGljIGlubGluZSB2b2lkIHNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4oTGVnYWN5Um9v
dElubGluZUJveCogbGluZUJveCwgQmlkaVJ1biogcnVuLCBSZW5kZXJUZXh0JiByZW5kZXJlciwg
ZmxvYXQgeFBvcywgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLAogICAgIEdseXBoT3ZlcmZsb3dB
bmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hl
JiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVu
dHMpCiB7CiAgICAgSGFzaFNldDxjb25zdCBGb250Kj4gZmFsbGJhY2tGb250czsKQEAgLTU4Niw3
ICs1ODYsNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OnVwZGF0ZVJ1YnlGb3JKdXN0aWZpZWRU
ZXh0KFJlbmRlclJ1YnlSdW4mIHJ1YnlSdW4sIEJpZGlSdQogICAgIHJ1YnlSdW4uc2V0TmVlZHNM
YXlvdXQoTWFya09ubHlUaGlzKTsKICAgICByb290Qm94Lm1hcmtEaXJ0eSgpOwogICAgIGlmIChS
ZW5kZXJSdWJ5VGV4dCogcnVieVRleHQgPSBydWJ5UnVuLnJ1YnlUZXh0KCkpIHsKLSAgICAgICAg
aWYgKFJvb3RJbmxpbmVCb3gqIHRleHRSb290Qm94ID0gcnVieVRleHQtPmZpcnN0Um9vdEJveCgp
KQorICAgICAgICBpZiAoTGVnYWN5Um9vdElubGluZUJveCogdGV4dFJvb3RCb3ggPSBydWJ5VGV4
dC0+Zmlyc3RSb290Qm94KCkpCiAgICAgICAgICAgICB0ZXh0Um9vdEJveC0+bWFya0RpcnR5KCk7
CiAgICAgfQogICAgIHJ1YnlSdW4ubGF5b3V0QmxvY2sodHJ1ZSk7CkBAIC02MjgsNyArNjI4LDcg
QEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4
dChCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVIKICAgICB9CiB9CiAKLXZvaWQgTGVnYWN5TGluZUxh
eW91dDo6dXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KFJlbmRlckJsb2NrRmxvdyYgZmxv
dywgY29uc3QgVGV4dEFsaWduTW9kZSYgdGV4dEFsaWduLCBjb25zdCBSb290SW5saW5lQm94KiBy
b290SW5saW5lQm94LCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBmbG9hdCYgbG9naWNhbExl
ZnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCwgaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpCit2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6
OnVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNv
bnN0IFRleHRBbGlnbk1vZGUmIHRleHRBbGlnbiwgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCog
cm9vdElubGluZUJveCwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxM
ZWZ0LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQogewogICAgIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uOwogICAgIGlmIChyb290SW5saW5lQm94ICYmIGZsb3cuc3R5bGUoKS51bmljb2Rl
QmlkaSgpID09IFBsYWludGV4dCkKQEAgLTY4OSw3ICs2ODksNyBAQCBzdGF0aWMgdm9pZCB1cGRh
dGVMb2dpY2FsSW5saW5lUG9zaXRpb25zKFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGZsb2F0JiBs
aW5lTG9naQogICAgIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxpbmVMb2dpY2FsUmlnaHQgLSBs
aW5lTG9naWNhbExlZnQ7CiB9CiAKLXZvaWQgTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGlu
ZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZUJveCwgY29uc3Qg
TGluZUluZm8mIGxpbmVJbmZvLCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdT
cGFjZVJ1biwgYm9vbCByZWFjaGVkRW5kLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01h
cCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlv
bkNhY2hlLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQordm9pZCBMZWdhY3lM
aW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShMZWdhY3lS
b290SW5saW5lQm94KiBsaW5lQm94LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIEJpZGlSdW4q
IGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJlYWNoZWRFbmQsIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQ
b3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIFdvcmRNZWFzdXJlbWVudHMmIHdv
cmRNZWFzdXJlbWVudHMpCiB7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSB0ZXh0QWxp
Z25tZW50Rm9yTGluZSghcmVhY2hlZEVuZCAmJiAhbGluZUJveC0+ZW5kc1dpdGhCcmVhaygpKTsK
ICAgICAKQEAgLTg0MSw3ICs4NDEsNyBAQCBzdGF0aWMgYm9vbCBpc0xhc3RJbkZsb3dSdW4oQmlk
aVJ1biYgcnVuVG9DaGVjaykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQmlkaVJ1biogTGVnYWN5
TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9v
dElubGluZUJveCogbGluZUJveCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBUZXh0QWxpZ25N
b2RlIHRleHRBbGlnbiwgZmxvYXQmIGxpbmVMb2dpY2FsTGVmdCwKK0JpZGlSdW4qIExlZ2FjeUxp
bmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KExlZ2Fj
eVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgVGV4dEFs
aWduTW9kZSB0ZXh0QWxpZ24sIGZsb2F0JiBsaW5lTG9naWNhbExlZnQsCiAgICAgZmxvYXQmIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5n
U3BhY2VSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1h
cCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsCiAgICAgV29y
ZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIHsKQEAgLTEwMDIsNyArMTAwMiw3IEBA
IEJpZGlSdW4qIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCCiAgICAgcmV0dXJuIHJ1bjsKIH0KIAotdm9pZCBMZWdh
Y3lMaW5lTGF5b3V0OjpyZW1vdmVJbmxpbmVCb3goQmlkaVJ1biYgcnVuLCBjb25zdCBSb290SW5s
aW5lQm94JiByb290TGluZUJveCkgY29uc3QKK3ZvaWQgTGVnYWN5TGluZUxheW91dDo6cmVtb3Zl
SW5saW5lQm94KEJpZGlSdW4mIHJ1biwgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdExp
bmVCb3gpIGNvbnN0CiB7CiAgICAgYXV0byogaW5saW5lQm94ID0gcnVuLmJveCgpOwogI2lmIEFT
U0VSVF9FTkFCTEVECkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6
OnJlbW92ZUlubGluZUJveChCaWRpUnVuJiBydW4sIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RM
aQogICAgIH0KIH0KIAotdm9pZCBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlQmxvY2tEaXJlY3Rp
b25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSdW4qIGZpcnN0
UnVuLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZl
cnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlKQordm9pZCBMZWdhY3lM
aW5lTGF5b3V0Ojpjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKExlZ2FjeVJv
b3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSdW4qIGZpcnN0UnVuLCBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYg
dmVydGljYWxQb3NpdGlvbkNhY2hlKQogewogICAgIG1fZmxvdy5zZXRMb2dpY2FsSGVpZ2h0KGxp
bmVCb3gtPmFsaWduQm94ZXNJbkJsb2NrRGlyZWN0aW9uKG1fZmxvdy5sb2dpY2FsSGVpZ2h0KCks
IHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpKTsKIApAQCAtMTIzNiw3ICsx
MjM2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVudChJ
bmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNv
bnN0cnVjdHMgbGluZSBib3hlcyBmb3IgYWxsIG9mIHRoZSB0ZXh0IHJ1bnMgaW4gdGhlIHJlc29s
dmVyIGFuZCBjb21wdXRlcyB0aGVpciBwb3NpdGlvbi4KLVJvb3RJbmxpbmVCb3gqIExlZ2FjeUxp
bmVMYXlvdXQ6OmNyZWF0ZUxpbmVCb3hlc0Zyb21CaWRpUnVucyh1bnNpZ25lZCBiaWRpTGV2ZWws
IEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVu
ZCwgTGluZUluZm8mIGxpbmVJbmZvLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9z
aXRpb25DYWNoZSwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgV29yZE1lYXN1cmVtZW50cyYg
d29yZE1lYXN1cmVtZW50cykKK0xlZ2FjeVJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlvdXQ6
OmNyZWF0ZUxpbmVCb3hlc0Zyb21CaWRpUnVucyh1bnNpZ25lZCBiaWRpTGV2ZWwsIEJpZGlSdW5M
aXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZCwgTGluZUlu
Zm8mIGxpbmVJbmZvLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNo
ZSwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1
cmVtZW50cykKIHsKICAgICBpZiAoIWJpZGlSdW5zLnJ1bkNvdW50KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgUm9vdElubGluZUJveCogTGVnYWN5TGlu
ZUxheW91dDo6Y3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5zKHVuc2lnbmVkIGJpZGlMZXZlbCwK
ICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgb25seSBkb25lIHdoZW4gd2UgaGFkIHJ1bnM/CiAg
ICAgbGluZUluZm8uc2V0TGFzdExpbmUoIWVuZC5yZW5kZXJlcigpKTsKIAotICAgIFJvb3RJbmxp
bmVCb3gqIGxpbmVCb3ggPSBjb25zdHJ1Y3RMaW5lKGJpZGlSdW5zLCBsaW5lSW5mbyk7CisgICAg
TGVnYWN5Um9vdElubGluZUJveCogbGluZUJveCA9IGNvbnN0cnVjdExpbmUoYmlkaVJ1bnMsIGxp
bmVJbmZvKTsKICAgICBpZiAoIWxpbmVCb3gpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC0xMjc4LDE0ICsxMjc4LDE0IEBAIFJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlvdXQ6OmNy
ZWF0ZUxpbmVCb3hlc0Zyb21CaWRpUnVucyh1bnNpZ25lZCBiaWRpTGV2ZWwsCiAgICAgcmV0dXJu
IGxpbmVCb3g7CiB9CiAKLXN0YXRpYyB2b2lkIGRlbGV0ZUxpbmVSYW5nZShMaW5lTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBSb290SW5saW5lQm94KiBzdGFydExpbmUsIFJvb3RJbmxpbmVCb3gq
IHN0b3BMaW5lID0gMCkKK3N0YXRpYyB2b2lkIGRlbGV0ZUxpbmVSYW5nZShMaW5lTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBMZWdhY3lSb290SW5saW5lQm94KiBzdGFydExpbmUsIExlZ2FjeVJv
b3RJbmxpbmVCb3gqIHN0b3BMaW5lID0gMCkKIHsKLSAgICBSb290SW5saW5lQm94KiBib3hUb0Rl
bGV0ZSA9IHN0YXJ0TGluZTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBib3hUb0RlbGV0ZSA9
IHN0YXJ0TGluZTsKICAgICB3aGlsZSAoYm94VG9EZWxldGUgJiYgYm94VG9EZWxldGUgIT0gc3Rv
cExpbmUpIHsKICAgICAgICAgbGF5b3V0U3RhdGUudXBkYXRlUmVwYWludFJhbmdlRnJvbUJveChi
b3hUb0RlbGV0ZSk7CiAgICAgICAgIC8vIE5vdGU6IGRlbGV0ZUxpbmVSYW5nZShmaXJzdFJvb3RC
b3goKSkgaXMgbm90IGlkZW50aWNhbCB0byBkZWxldGVMaW5lQm94VHJlZSgpLgogICAgICAgICAv
LyBkZWxldGVMaW5lQm94VHJlZSB1c2VzIG5leHRMaW5lQm94KCkgaW5zdGVhZCBvZiBuZXh0Um9v
dEJveCgpIHdoZW4gdHJhdmVyc2luZy4KLSAgICAgICAgUm9vdElubGluZUJveCogbmV4dCA9IGJv
eFRvRGVsZXRlLT5uZXh0Um9vdEJveCgpOworICAgICAgICBMZWdhY3lSb290SW5saW5lQm94KiBu
ZXh0ID0gYm94VG9EZWxldGUtPm5leHRSb290Qm94KCk7CiAgICAgICAgIGJveFRvRGVsZXRlLT5k
ZWxldGVMaW5lKCk7CiAgICAgICAgIGJveFRvRGVsZXRlID0gbmV4dDsKICAgICB9CkBAIC0xMzA5
LDExICsxMzA5LDExIEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6bGF5b3V0UnVuc0FuZEZsb2F0
cyhMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBib29sIGhhCiB7CiAgICAgLy8gV2Ugd2Fu
dCB0byBza2lwIGFoZWFkIHRvIHRoZSBmaXJzdCBkaXJ0eSBsaW5lCiAgICAgSW5saW5lQmlkaVJl
c29sdmVyIHJlc29sdmVyOwotICAgIFJvb3RJbmxpbmVCb3gqIHN0YXJ0TGluZSA9IGRldGVybWlu
ZVN0YXJ0UG9zaXRpb24obGF5b3V0U3RhdGUsIHJlc29sdmVyKTsKKyAgICBMZWdhY3lSb290SW5s
aW5lQm94KiBzdGFydExpbmUgPSBkZXRlcm1pbmVTdGFydFBvc2l0aW9uKGxheW91dFN0YXRlLCBy
ZXNvbHZlcik7CiAgICAgCiAgICAgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMg
PSAwOwogICAgIGlmIChzdGFydExpbmUpIHsKLSAgICAgICAgZm9yIChSb290SW5saW5lQm94KiBs
aW5lID0gc3RhcnRMaW5lLT5wcmV2Um9vdEJveCgpOyBsaW5lICYmIGxpbmUtPmlzSHlwaGVuYXRl
ZCgpOyBsaW5lID0gbGluZS0+cHJldlJvb3RCb3goKSkKKyAgICAgICAgZm9yIChhdXRvKiBsaW5l
ID0gc3RhcnRMaW5lLT5wcmV2Um9vdEJveCgpOyBsaW5lICYmIGxpbmUtPmlzSHlwaGVuYXRlZCgp
OyBsaW5lID0gbGluZS0+cHJldlJvb3RCb3goKSkKICAgICAgICAgICAgIGNvbnNlY3V0aXZlSHlw
aGVuYXRlZExpbmVzKys7CiAgICAgfQogCkBAIC0xNDU1LDcgKzE0NTUsNyBAQCB2b2lkIExlZ2Fj
eUxpbmVMYXlvdXQ6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsCiAgICAgICAgICAgICAvLyBpbmxpbmUgZmxvdyBib3hlcy4KIAogICAgICAg
ICAgICAgTGF5b3V0VW5pdCBvbGRMb2dpY2FsSGVpZ2h0ID0gbV9mbG93LmxvZ2ljYWxIZWlnaHQo
KTsKLSAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIGxpbmVCb3ggPSBjcmVhdGVMaW5lQm94ZXNG
cm9tQmlkaVJ1bnMocmVzb2x2ZXIuc3RhdHVzKCkuY29udGV4dC0+bGV2ZWwoKSwgYmlkaVJ1bnMs
IGVuZCwgbGF5b3V0U3RhdGUubGluZUluZm8oKSwgdmVydGljYWxQb3NpdGlvbkNhY2hlLCB0cmFp
bGluZ1NwYWNlUnVuLCB3b3JkTWVhc3VyZW1lbnRzKTsKKyAgICAgICAgICAgIExlZ2FjeVJvb3RJ
bmxpbmVCb3gqIGxpbmVCb3ggPSBjcmVhdGVMaW5lQm94ZXNGcm9tQmlkaVJ1bnMocmVzb2x2ZXIu
c3RhdHVzKCkuY29udGV4dC0+bGV2ZWwoKSwgYmlkaVJ1bnMsIGVuZCwgbGF5b3V0U3RhdGUubGlu
ZUluZm8oKSwgdmVydGljYWxQb3NpdGlvbkNhY2hlLCB0cmFpbGluZ1NwYWNlUnVuLCB3b3JkTWVh
c3VyZW1lbnRzKTsKIAogICAgICAgICAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKICAgICAgICAgICAg
IHJlc29sdmVyLm1hcmtDdXJyZW50UnVuRW1wdHkoKTsgLy8gRklYTUU6IFRoaXMgY2FuIHByb2Jh
Ymx5IGJlIHJlcGxhY2VkIGJ5IGFuIEFTU0VSVCAob3IganVzdCByZW1vdmVkKS4KQEAgLTE1Mzcs
MTEgKzE1MzcsMTEgQEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0OjpsYXlvdXRSdW5zQW5kRmxvYXRz
SW5SYW5nZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLAogICAgICAgICAvLyBIb3dldmVy
LCB3ZSdsbCBwcmlvcml0aXplIG9ycGhhbnMgLSBzbyBub3RoaW5nIHdlIGRvIGhlcmUgc2hvdWxk
IGNyZWF0ZQogICAgICAgICAvLyBhIG5ldyBvcnBoYW4uCiAKLSAgICAgICAgUm9vdElubGluZUJv
eCogbGluZUJveCA9IGxhc3RSb290Qm94KCk7CisgICAgICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gq
IGxpbmVCb3ggPSBsYXN0Um9vdEJveCgpOwogCiAgICAgICAgIC8vIENvdW50IGZyb20gdGhlIGVu
ZCBvZiB0aGUgYmxvY2sgYmFja3dhcmRzLCB0byBzZWUgaG93IG1hbnkgaGFuZ2luZwogICAgICAg
ICAvLyBsaW5lcyB3ZSBoYXZlLgotICAgICAgICBSb290SW5saW5lQm94KiBmaXJzdExpbmVJbkJs
b2NrID0gZmlyc3RSb290Qm94KCk7CisgICAgICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGZpcnN0
TGluZUluQmxvY2sgPSBmaXJzdFJvb3RCb3goKTsKICAgICAgICAgaW50IG51bUxpbmVzSGFuZ2lu
ZyA9IDE7CiAgICAgICAgIHdoaWxlIChsaW5lQm94ICYmIGxpbmVCb3ggIT0gZmlyc3RMaW5lSW5C
bG9jayAmJiAhbGluZUJveC0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkpIHsKICAgICAgICAgICAg
ICsrbnVtTGluZXNIYW5naW5nOwpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgdm9pZCBMZWdhY3lMaW5l
TGF5b3V0OjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5lTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLAogICAgICAgICAgICAgLy8gbGluZXMgdGhlcmUgYXJlIG9uIHRoZSBwcmV2aW91cyBw
YWdlLCBhbmQgaG93IG1hbnkgd2UgbmVlZAogICAgICAgICAgICAgLy8gdG8gc3RlYWwuCiAgICAg
ICAgICAgICBpbnQgbnVtTGluZXNOZWVkZWQgPSBzdHlsZSgpLndpZG93cygpIC0gbnVtTGluZXNI
YW5naW5nOwotICAgICAgICAgICAgUm9vdElubGluZUJveCogY3VycmVudEZpcnN0TGluZU9mTmV3
UGFnZSA9IGxpbmVCb3g7CisgICAgICAgICAgICBMZWdhY3lSb290SW5saW5lQm94KiBjdXJyZW50
Rmlyc3RMaW5lT2ZOZXdQYWdlID0gbGluZUJveDsKIAogICAgICAgICAgICAgLy8gQ291bnQgdGhl
IG51bWJlciBvZiBsaW5lcyBpbiB0aGUgcHJldmlvdXMgcGFnZS4KICAgICAgICAgICAgIGxpbmVC
b3ggPSBsaW5lQm94LT5wcmV2Um9vdEJveCgpOwpAQCAtMTYwMCw3ICsxNjAwLDcgQEAgdm9pZCBM
ZWdhY3lMaW5lTGF5b3V0OjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5lTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLAogICAgIG1fZmxvdy5jbGVhckRpZEJyZWFrQXRMaW5lVG9Bdm9pZFdp
ZG93KCk7CiB9CiAKLXZvaWQgTGVnYWN5TGluZUxheW91dDo6cmVhdHRhY2hDbGVhbkxpbmVGbG9h
dHMoUm9vdElubGluZUJveCYgY2xlYW5MaW5lLCBMYXlvdXRVbml0IGRlbHRhLCBib29sIGlzRmly
c3RDbGVhbkxpbmUpCit2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OnJlYXR0YWNoQ2xlYW5MaW5lRmxv
YXRzKExlZ2FjeVJvb3RJbmxpbmVCb3gmIGNsZWFuTGluZSwgTGF5b3V0VW5pdCBkZWx0YSwgYm9v
bCBpc0ZpcnN0Q2xlYW5MaW5lKQogewogICAgIGF1dG8qIGNsZWFuTGluZUZsb2F0cyA9IGNsZWFu
TGluZS5mbG9hdHNQdHIoKTsKICAgICBpZiAoIWNsZWFuTGluZUZsb2F0cykKQEAgLTE4MDgsNyAr
MTgwOCw3IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6bGF5b3V0TGluZUJveGVzKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWluCiAgICAgICAgIGNoZWNrTGluZXNGb3JU
ZXh0T3ZlcmZsb3coKTsKIH0KIAotdm9pZCBMZWdhY3lMaW5lTGF5b3V0OjpjaGVja0Zsb2F0SW5D
bGVhbkxpbmUoUm9vdElubGluZUJveCYgY2xlYW5MaW5lLCBSZW5kZXJCb3gmIGZsb2F0Qm94T25D
bGVhbkxpbmUsIEZsb2F0V2l0aFJlY3QmIG1hdGNoaW5nRmxvYXRXaXRoUmVjdCwKK3ZvaWQgTGVn
YWN5TGluZUxheW91dDo6Y2hlY2tGbG9hdEluQ2xlYW5MaW5lKExlZ2FjeVJvb3RJbmxpbmVCb3gm
IGNsZWFuTGluZSwgUmVuZGVyQm94JiBmbG9hdEJveE9uQ2xlYW5MaW5lLCBGbG9hdFdpdGhSZWN0
JiBtYXRjaGluZ0Zsb2F0V2l0aFJlY3QsCiAgICAgYm9vbCYgZW5jb3VudGVyZWROZXdGbG9hdCwg
Ym9vbCYgZGlydGllZEJ5RmxvYXQpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oIWZsb2F0Qm94T25DbGVhbkxpbmUuc3R5bGUoKS5kZWxldGlvbkhhc0JlZ3VuKCkpOwpA
QCAtMTgzOCwxMCArMTgzOCwxMCBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmNoZWNrRmxvYXRJ
bkNsZWFuTGluZShSb290SW5saW5lQm94JiBjbGVhbkxpbmUsIFJlbmRlckJveAogICAgIGRpcnRp
ZWRCeUZsb2F0ID0gdHJ1ZTsKIH0KIAotUm9vdElubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6
ZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQorTGVnYWN5Um9vdElubGluZUJveCogTGVnYWN5TGlu
ZUxheW91dDo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQogewotICAgIFJvb3RJbmxpbmVCb3gq
IGN1cnJlbnRMaW5lID0gbnVsbHB0cjsKLSAgICBSb290SW5saW5lQm94KiBsYXN0TGluZSA9IG51
bGxwdHI7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogY3VycmVudExpbmUgPSBudWxscHRyOwor
ICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lID0gbnVsbHB0cjsKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIGVudGlyZSBmbG9hdC1jaGVja2luZyBibG9jayBuZWVkcyB0byBiZSBicm9rZW4g
aW50byBhIG5ldyBmdW5jdGlvbi4KICAgICBhdXRvJiBmbG9hdHMgPSBsYXlvdXRTdGF0ZS5mbG9h
dExpc3QoKTsKQEAgLTE5MTYsNyArMTkxNiw3IEBAIFJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVM
YXlvdXQ6OmRldGVybWluZVN0YXJ0UG9zaXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGN1cnJlbnRMaW5lKSB7CiAgICAgICAgICAgICAvLyBX
ZSBoYXZlIGEgZGlydHkgbGluZS4KLSAgICAgICAgICAgIGlmIChSb290SW5saW5lQm94KiBwcmV2
Um9vdEJveCA9IGN1cnJlbnRMaW5lLT5wcmV2Um9vdEJveCgpKSB7CisgICAgICAgICAgICBpZiAo
TGVnYWN5Um9vdElubGluZUJveCogcHJldlJvb3RCb3ggPSBjdXJyZW50TGluZS0+cHJldlJvb3RC
b3goKSkgewogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBwcmV2aW91cyBsaW5lLgogICAg
ICAgICAgICAgICAgIGlmICghZGlydGllZEJ5RmxvYXQgJiYgKCFwcmV2Um9vdEJveC0+ZW5kc1dp
dGhCcmVhaygpCiAgICAgICAgICAgICAgICAgICAgIHx8ICFwcmV2Um9vdEJveC0+bGluZUJyZWFr
T2JqKCkKQEAgLTE5MzUsNyArMTkzNSw3IEBAIFJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlv
dXQ6OmRldGVybWluZVN0YXJ0UG9zaXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTCiAgICAg
aWYgKCFmbG9hdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIExheW91dFVuaXQgc2F2ZWRMb2dpY2Fs
SGVpZ2h0ID0gbV9mbG93LmxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgLy8gUmVzdG9yZSBmbG9h
dHMgZnJvbSBjbGVhbiBsaW5lcy4KLSAgICAgICAgUm9vdElubGluZUJveCogbGluZSA9IGZpcnN0
Um9vdEJveCgpOworICAgICAgICBMZWdhY3lSb290SW5saW5lQm94KiBsaW5lID0gZmlyc3RSb290
Qm94KCk7CiAgICAgICAgIHdoaWxlIChsaW5lICE9IGN1cnJlbnRMaW5lKSB7CiAgICAgICAgICAg
ICBpZiAoYXV0byogY2xlYW5MaW5lRmxvYXRzID0gbGluZS0+ZmxvYXRzUHRyKCkpIHsKICAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGZsb2F0aW5nQm94IDogKmNsZWFuTGluZUZsb2F0cykgewpA
QCAtMTk3Myw3ICsxOTczLDcgQEAgUm9vdElubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6ZGV0
ZXJtaW5lU3RhcnRQb3NpdGlvbihMaW5lTGF5b3V0U3RhdGUmIGxheW91dFMKICAgICByZXR1cm4g
Y3VycmVudExpbmU7CiB9CiAKLXZvaWQgTGVnYWN5TGluZUxheW91dDo6ZGV0ZXJtaW5lRW5kUG9z
aXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgUm9vdElubGluZUJveCogc3RhcnRM
aW5lLCBJbmxpbmVJdGVyYXRvciYgY2xlYW5MaW5lU3RhcnQsIEJpZGlTdGF0dXMmIGNsZWFuTGlu
ZUJpZGlTdGF0dXMpCit2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmRldGVybWluZUVuZFBvc2l0aW9u
KExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIExlZ2FjeVJvb3RJbmxpbmVCb3gqIHN0YXJ0
TGluZSwgSW5saW5lSXRlcmF0b3ImIGNsZWFuTGluZVN0YXJ0LCBCaWRpU3RhdHVzJiBjbGVhbkxp
bmVCaWRpU3RhdHVzKQogewogICAgIGF1dG8gaXRlcmF0b3JGb3JGaXJzdERpcnR5RmxvYXQgPSBb
XShMaW5lTGF5b3V0U3RhdGU6OkZsb2F0TGlzdCYgZmxvYXRzKSB7CiAgICAgICAgIGF1dG8gbGFz
dENsZWFuRmxvYXQgPSBmbG9hdHMubGFzdENsZWFuRmxvYXQoKTsKQEAgLTE5ODcsOCArMTk4Nyw4
IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6ZGV0ZXJtaW5lRW5kUG9zaXRpb24oTGluZUxheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgUm9vdEluCiAgICAgQVNTRVJUKCFsYXlvdXRTdGF0ZS5lbmRM
aW5lKCkpOwogICAgIGF1dG8gZmxvYXRzSXRlcmF0b3IgPSBpdGVyYXRvckZvckZpcnN0RGlydHlG
bG9hdChsYXlvdXRTdGF0ZS5mbG9hdExpc3QoKSk7CiAgICAgYXV0byBlbmQgPSBsYXlvdXRTdGF0
ZS5mbG9hdExpc3QoKS5lbmQoKTsKLSAgICBSb290SW5saW5lQm94KiBsYXN0TGluZSA9IG51bGxw
dHI7Ci0gICAgZm9yIChSb290SW5saW5lQm94KiBjdXJyZW50TGluZSA9IHN0YXJ0TGluZS0+bmV4
dFJvb3RCb3goKTsgY3VycmVudExpbmU7IGN1cnJlbnRMaW5lID0gY3VycmVudExpbmUtPm5leHRS
b290Qm94KCkpIHsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBsYXN0TGluZSA9IG51bGxwdHI7
CisgICAgZm9yIChhdXRvKiBjdXJyZW50TGluZSA9IHN0YXJ0TGluZS0+bmV4dFJvb3RCb3goKTsg
Y3VycmVudExpbmU7IGN1cnJlbnRMaW5lID0gY3VycmVudExpbmUtPm5leHRSb290Qm94KCkpIHsK
ICAgICAgICAgaWYgKCFjdXJyZW50TGluZS0+aXNEaXJ0eSgpKSB7CiAgICAgICAgICAgICBpZiAo
YXV0byogY2xlYW5MaW5lRmxvYXRzID0gY3VycmVudExpbmUtPmZsb2F0c1B0cigpKSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBlbmNvdW50ZXJlZE5ld0Zsb2F0ID0gZmFsc2U7CkBAIC0yMDE1LDEy
ICsyMDE1LDEyIEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6ZGV0ZXJtaW5lRW5kUG9zaXRpb24o
TGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgUm9vdEluCiAKICAgICAvLyBBdCB0aGlzIHBv
aW50LCB8bGFzdHwgaXMgdGhlIGZpcnN0IGxpbmUgaW4gYSBydW4gb2YgY2xlYW4gbGluZXMgdGhh
dCBlbmRzIHdpdGggdGhlIGxhc3QgbGluZQogICAgIC8vIGluIHRoZSBibG9jay4KLSAgICBSb290
SW5saW5lQm94KiBwcmV2aW91c0xpbmUgPSBsYXN0TGluZS0+cHJldlJvb3RCb3goKTsKKyAgICBM
ZWdhY3lSb290SW5saW5lQm94KiBwcmV2aW91c0xpbmUgPSBsYXN0TGluZS0+cHJldlJvb3RCb3go
KTsKICAgICBjbGVhbkxpbmVTdGFydCA9IElubGluZUl0ZXJhdG9yKCZtX2Zsb3csIHByZXZpb3Vz
TGluZS0+bGluZUJyZWFrT2JqKCksIHByZXZpb3VzTGluZS0+bGluZUJyZWFrUG9zKCkpOwogICAg
IGNsZWFuTGluZUJpZGlTdGF0dXMgPSBwcmV2aW91c0xpbmUtPmxpbmVCcmVha0JpZGlTdGF0dXMo
KTsKICAgICBsYXlvdXRTdGF0ZS5zZXRFbmRMaW5lTG9naWNhbFRvcChwcmV2aW91c0xpbmUtPmxp
bmVCb3hCb3R0b20oKSk7CiAKLSAgICBmb3IgKFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBsYXN0TGlu
ZTsgbGluZTsgbGluZSA9IGxpbmUtPm5leHRSb290Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIGxp
bmUgPSBsYXN0TGluZTsgbGluZTsgbGluZSA9IGxpbmUtPm5leHRSb290Qm94KCkpIHsKICAgICAg
ICAgLy8gRGlzY29ubmVjdCBhbGwgbGluZSBib3hlcyBmcm9tIHRoZWlyIHJlbmRlciBvYmplY3Rz
IHdoaWxlIHByZXNlcnZpbmcgdGhlaXIgY29ubmVjdGlvbnMgdG8gb25lIGFub3RoZXIuCiAgICAg
ICAgIGxpbmUtPmV4dHJhY3RMaW5lKCk7CiAgICAgfQpAQCAtMjAzNSw3ICsyMDM1LDcgQEAgYm9v
bCBMZWdhY3lMaW5lTGF5b3V0OjpjaGVja1BhZ2luYXRpb25BbmRGbG9hdHNBdEVuZExpbmUoTGlu
ZUxheW91dFN0YXRlJiBsYXlvdXQKICAgICBpZiAocGFnaW5hdGVkICYmIGxheW91dFN0YXRlLmZy
YWdtZW50ZWRGbG93KCkpIHsKICAgICAgICAgLy8gQ2hlY2sgYWxsIGxpbmVzIGZyb20gaGVyZSB0
byB0aGUgZW5kLCBhbmQgc2VlIGlmIHRoZSBoeXBvdGhldGljYWwgbmV3IHBvc2l0aW9uIGZvciB0
aGUgbGluZXMgd2lsbCByZXN1bHQKICAgICAgICAgLy8gaW4gYSBkaWZmZXJlbnQgYXZhaWxhYmxl
IGxpbmUgd2lkdGguCi0gICAgICAgIGZvciAoUm9vdElubGluZUJveCogbGluZUJveCA9IGxheW91
dFN0YXRlLmVuZExpbmUoKTsgbGluZUJveDsgbGluZUJveCA9IGxpbmVCb3gtPm5leHRSb290Qm94
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBsaW5lQm94ID0gbGF5b3V0U3RhdGUuZW5kTGluZSgp
OyBsaW5lQm94OyBsaW5lQm94ID0gbGluZUJveC0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICAg
ICAgaWYgKHBhZ2luYXRlZCkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXNuJ3QgdGhlIHJl
YWwgbW92ZSB3ZSdyZSBnb2luZyB0byBkbywgc28gZG9uJ3QgdXBkYXRlIHRoZSBsaW5lIGJveCdz
IHBhZ2luYXRpb24KICAgICAgICAgICAgICAgICAvLyBzdHJ1dCB5ZXQuCkBAIC0yMDU2LDggKzIw
NTYsOCBAQCBib29sIExlZ2FjeUxpbmVMYXlvdXQ6OmNoZWNrUGFnaW5hdGlvbkFuZEZsb2F0c0F0
RW5kTGluZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dAogICAgIC8vIFNlZSBpZiBhbnkgZmxvYXRz
IGVuZCBpbiB0aGUgcmFuZ2UgYWxvbmcgd2hpY2ggd2Ugd2FudCB0byBzaGlmdCB0aGUgbGluZXMg
dmVydGljYWxseS4KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBzdGQ6Om1pbihtX2Zsb3cu
bG9naWNhbEhlaWdodCgpLCBsYXlvdXRTdGF0ZS5lbmRMaW5lTG9naWNhbFRvcCgpKTsKIAotICAg
IFJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lID0gbGF5b3V0U3RhdGUuZW5kTGluZSgpOwotICAgIHdo
aWxlIChSb290SW5saW5lQm94KiBuZXh0TGluZSA9IGxhc3RMaW5lLT5uZXh0Um9vdEJveCgpKQor
ICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lID0gbGF5b3V0U3RhdGUuZW5kTGluZSgp
OworICAgIHdoaWxlIChMZWdhY3lSb290SW5saW5lQm94KiBuZXh0TGluZSA9IGxhc3RMaW5lLT5u
ZXh0Um9vdEJveCgpKQogICAgICAgICBsYXN0TGluZSA9IG5leHRMaW5lOwogCiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsQm90dG9tID0gbGFzdExpbmUtPmxpbmVCb3hCb3R0b20oKSArIGFic29sdXRl
VmFsdWUobGluZURlbHRhKTsKQEAgLTIwNzMsNyArMjA3Myw3IEBAIGJvb2wgTGVnYWN5TGluZUxh
eW91dDo6Y2hlY2tQYWdpbmF0aW9uQW5kRmxvYXRzQXRFbmRMaW5lKExpbmVMYXlvdXRTdGF0ZSYg
bGF5b3V0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTGVnYWN5TGluZUxheW91dDo6bGlu
ZVdpZHRoRm9yUGFnaW5hdGVkTGluZUNoYW5nZWQoUm9vdElubGluZUJveCogcm9vdEJveCwgTGF5
b3V0VW5pdCBsaW5lRGVsdGEsIFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdykg
Y29uc3QKK2Jvb2wgTGVnYWN5TGluZUxheW91dDo6bGluZVdpZHRoRm9yUGFnaW5hdGVkTGluZUNo
YW5nZWQoTGVnYWN5Um9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3V0VW5pdCBsaW5lRGVsdGEs
IFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdykgY29uc3QKIHsKICAgICBpZiAo
IWZyYWdtZW50ZWRGbG93KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDk2LDggKzIwOTYs
OCBAQCBib29sIExlZ2FjeUxpbmVMYXlvdXQ6Om1hdGNoZWRFbmRMaW5lKExpbmVMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IElubGluZQogICAgIC8vIFRoZSBmaXJzdCBjbGVhbiBsaW5l
IGRvZXNuJ3QgbWF0Y2gsIGJ1dCB3ZSBjYW4gY2hlY2sgYSBoYW5kZnVsIG9mIGZvbGxvd2luZyBs
aW5lcyB0byB0cnkKICAgICAvLyB0byBtYXRjaCBiYWNrIHVwLgogICAgIHN0YXRpYyBjb25zdCBp
bnQgbnVtTGluZXMgPSA4OyAvLyBUaGUgIyBvZiBsaW5lcyB3ZSdyZSB3aWxsaW5nIHRvIG1hdGNo
IGFnYWluc3QuCi0gICAgUm9vdElubGluZUJveCogb3JpZ2luYWxFbmRMaW5lID0gbGF5b3V0U3Rh
dGUuZW5kTGluZSgpOwotICAgIFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBvcmlnaW5hbEVuZExpbmU7
CisgICAgTGVnYWN5Um9vdElubGluZUJveCogb3JpZ2luYWxFbmRMaW5lID0gbGF5b3V0U3RhdGUu
ZW5kTGluZSgpOworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmUgPSBvcmlnaW5hbEVuZExp
bmU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1MaW5lcyAmJiBsaW5lOyBpKyssIGxpbmUg
PSBsaW5lLT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgIGlmIChsaW5lLT5saW5lQnJlYWtPYmoo
KSA9PSByZXNvbHZlci5wb3NpdGlvbigpLnJlbmRlcmVyKCkgJiYgbGluZS0+bGluZUJyZWFrUG9z
KCkgPT0gcmVzb2x2ZXIucG9zaXRpb24oKS5vZmZzZXQoKSkgewogICAgICAgICAgICAgLy8gV2Ug
aGF2ZSBhIG1hdGNoLgpAQCAtMjEwNSw3ICsyMTA1LDcgQEAgYm9vbCBMZWdhY3lMaW5lTGF5b3V0
OjptYXRjaGVkRW5kTGluZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBJbmxp
bmUKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIC4uLmJ1dCB0aGUgYmlkaSBzdGF0
ZSBkb2Vzbid0IG1hdGNoLgogICAgICAgICAgICAgCiAgICAgICAgICAgICBib29sIG1hdGNoZWQg
PSBmYWxzZTsKLSAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJlc3VsdCA9IGxpbmUtPm5leHRS
b290Qm94KCk7CisgICAgICAgICAgICBMZWdhY3lSb290SW5saW5lQm94KiByZXN1bHQgPSBsaW5l
LT5uZXh0Um9vdEJveCgpOwogICAgICAgICAgICAgbGF5b3V0U3RhdGUuc2V0RW5kTGluZShyZXN1
bHQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgIGxheW91dFN0
YXRlLnNldEVuZExpbmVMb2dpY2FsVG9wKGxpbmUtPmxpbmVCb3hCb3R0b20oKSk7CkBAIC0yMTI5
LDcgKzIxMjksNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmFkZE92ZXJmbG93RnJvbUlubGlu
ZUNoaWxkcmVuKCkKICAgICAgICAgZW5kUGFkZGluZyA9IG1fZmxvdy5lbmRQYWRkaW5nV2lkdGhG
b3JDYXJldCgpOwogICAgIGlmIChtX2Zsb3cuaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWVuZFBhZGRp
bmcgJiYgbV9mbG93LmVsZW1lbnQoKSAmJiBtX2Zsb3cuZWxlbWVudCgpLT5pc1Jvb3RFZGl0YWJs
ZUVsZW1lbnQoKSAmJiBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAg
ZW5kUGFkZGluZyA9IDE7Ci0gICAgZm9yIChSb290SW5saW5lQm94KiBjdXJyID0gZmlyc3RSb290
Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgpKSB7CisgICAgZm9yIChhdXRv
KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgp
KSB7CiAgICAgICAgIG1fZmxvdy5hZGRMYXlvdXRPdmVyZmxvdyhjdXJyLT5wYWRkZWRMYXlvdXRP
dmVyZmxvd1JlY3QoZW5kUGFkZGluZykpOwogICAgICAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5l
ciogZnJhZ21lbnQgPSBtX2Zsb3cuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKSA/IGN1cnItPmNv
bnRhaW5pbmdGcmFnbWVudCgpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKGZyYWdtZW50KQpAQCAt
MjE1Miw3ICsyMTUyLDcgQEAgc2l6ZV90IExlZ2FjeUxpbmVMYXlvdXQ6OmxpbmVDb3VudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvdW50OwogfQogCi1zaXplX3QgTGVnYWN5TGluZUxheW91dDo6bGlu
ZUNvdW50VW50aWwoY29uc3QgUm9vdElubGluZUJveCogc3RvcFJvb3RJbmxpbmVCb3gpIGNvbnN0
CitzaXplX3QgTGVnYWN5TGluZUxheW91dDo6bGluZUNvdW50VW50aWwoY29uc3QgTGVnYWN5Um9v
dElubGluZUJveCogc3RvcFJvb3RJbmxpbmVCb3gpIGNvbnN0CiB7CiAgICAgc2l6ZV90IGNvdW50
ID0gMDsKICAgICBmb3IgKGF1dG8qIGJveCA9IGZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJv
eC0+bmV4dFJvb3RCb3goKSkgewpAQCAtMjE2OSw3ICsyMTY5LDcgQEAgdm9pZCBMZWdhY3lMaW5l
TGF5b3V0OjpkZWxldGVFbGxpcHNpc0xpbmVCb3hlcygpCiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwogICAgIGJvb2wgbHRyID0gc3R5bGUoKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRl
eHQgPSBJbmRlbnRUZXh0OwotICAgIGZvciAoUm9vdElubGluZUJveCogY3VyciA9IGZpcnN0Um9v
dEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkgeworICAgIGZvciAoYXV0
byogY3VyciA9IGZpcnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3go
KSkgewogICAgICAgICBpZiAoY3Vyci0+aGFzRWxsaXBzaXNCb3goKSkgewogICAgICAgICAgICAg
Y3Vyci0+Y2xlYXJUcnVuY2F0aW9uKCk7CiAKQEAgLTIyMDUsNyArMjIwNSw3IEBAIHZvaWQgTGVn
YWN5TGluZUxheW91dDo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZmxvdygpCiAgICAgYm9vbCBsdHIg
PSBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICBUZXh0QWxpZ25Nb2RlIHRl
eHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CiAgICAgYm9vbCBmaXJzdExpbmUgPSB0cnVl
OwotICAgIGZvciAoUm9vdElubGluZUJveCogY3VyciA9IGZpcnN0Um9vdEJveCgpOyBjdXJyOyBj
dXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkgeworICAgIGZvciAoYXV0byogY3VyciA9IGZpcnN0
Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICBJ
bmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCA9IGZpcnN0TGluZSA/IEluZGVudFRleHQg
OiBEb05vdEluZGVudFRleHQ7CiAgICAgICAgIExheW91dFVuaXQgYmxvY2tSaWdodEVkZ2UgPSBt
X2Zsb3cubG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShjdXJyLT5saW5lVG9wKCksIHNob3VsZElu
ZGVudFRleHQpOwogICAgICAgICBMYXlvdXRVbml0IGJsb2NrTGVmdEVkZ2UgPSBtX2Zsb3cubG9n
aWNhbExlZnRPZmZzZXRGb3JMaW5lKGN1cnItPmxpbmVUb3AoKSwgc2hvdWxkSW5kZW50VGV4dCk7
CkBAIC0yMjg5LDcgKzIyODksNyBAQCBib29sIExlZ2FjeUxpbmVMYXlvdXQ6OnBvc2l0aW9uTmV3
RmxvYXRPbkxpbmUoY29uc3QgRmxvYXRpbmdPYmplY3QmIG5ld0Zsb2F0LCBGbAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OnVwZGF0ZUZyYWdtZW50Rm9yTGlu
ZShSb290SW5saW5lQm94KiBsaW5lQm94KSBjb25zdAordm9pZCBMZWdhY3lMaW5lTGF5b3V0Ojp1
cGRhdGVGcmFnbWVudEZvckxpbmUoTGVnYWN5Um9vdElubGluZUJveCogbGluZUJveCkgY29uc3QK
IHsKICAgICBBU1NFUlQobGluZUJveCk7CiAKQEAgLTIzMDIsNyArMjMwMiw3IEBAIHZvaWQgTGVn
YWN5TGluZUxheW91dDo6dXBkYXRlRnJhZ21lbnRGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVC
b3gpIGNvbnN0CiAgICAgICAgICAgICBsaW5lQm94LT5jbGVhckNvbnRhaW5pbmdGcmFnbWVudCgp
OwogICAgIH0KIAotICAgIFJvb3RJbmxpbmVCb3gqIHByZXZMaW5lQm94ID0gbGluZUJveC0+cHJl
dlJvb3RCb3goKTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBwcmV2TGluZUJveCA9IGxpbmVC
b3gtPnByZXZSb290Qm94KCk7CiAgICAgaWYgKCFwcmV2TGluZUJveCkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuaAppbmRleCBh
NjIyYjg5YzFiNmYuLmQyMDY2MjdiNGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5TGluZUxheW91dC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIExpbmVMYXlvdXRTdGF0
ZTsKIGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJl
bmRlclJ1YnlSdW47Ci1jbGFzcyBSb290SW5saW5lQm94OworY2xhc3MgTGVnYWN5Um9vdElubGlu
ZUJveDsKIGNsYXNzIFZlcnRpY2FsUG9zaXRpb25DYWNoZTsKIHN0cnVjdCBCaWRpU3RhdHVzOwog
c3RydWN0IFdvcmRNZWFzdXJlbWVudDsKQEAgLTYxLDUxICs2MSw1MSBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyTGluZUJveExpc3QmIGxpbmVCb3hlcygpIHsgcmV0dXJuIG1fbGluZUJveGVzOyB9CiAg
ICAgY29uc3QgUmVuZGVyTGluZUJveExpc3QmIGxpbmVCb3hlcygpIGNvbnN0IHsgcmV0dXJuIG1f
bGluZUJveGVzOyB9CiAKLSAgICBSb290SW5saW5lQm94KiBmaXJzdFJvb3RCb3goKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxSb290SW5saW5lQm94PihtX2xpbmVCb3hlcy5maXJzdExpbmVCb3go
KSk7IH0KLSAgICBSb290SW5saW5lQm94KiBsYXN0Um9vdEJveCgpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PFJvb3RJbmxpbmVCb3g+KG1fbGluZUJveGVzLmxhc3RMaW5lQm94KCkpOyB9CisgICAg
TGVnYWN5Um9vdElubGluZUJveCogZmlyc3RSb290Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8TGVnYWN5Um9vdElubGluZUJveD4obV9saW5lQm94ZXMuZmlyc3RMaW5lQm94KCkpOyB9Cisg
ICAgTGVnYWN5Um9vdElubGluZUJveCogbGFzdFJvb3RCb3goKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxMZWdhY3lSb290SW5saW5lQm94PihtX2xpbmVCb3hlcy5sYXN0TGluZUJveCgpKTsgfQog
CiAgICAgdm9pZCBsYXlvdXRMaW5lQm94ZXMoYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRV
bml0JiByZXBhaW50TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxCb3R0b20p
OwogCi0gICAgUm9vdElubGluZUJveCogY29uc3RydWN0TGluZShCaWRpUnVuTGlzdDxCaWRpUnVu
PiYsIGNvbnN0IExpbmVJbmZvJik7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogY29uc3RydWN0
TGluZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYsIGNvbnN0IExpbmVJbmZvJik7CiAgICAgYm9vbCBw
b3NpdGlvbk5ld0Zsb2F0T25MaW5lKGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBuZXdGbG9hdCwgRmxv
YXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIExpbmVJbmZvJiwgTGluZVdp
ZHRoJik7CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbigpOwogCiAgICAg
c2l6ZV90IGxpbmVDb3VudCgpIGNvbnN0OwotICAgIHNpemVfdCBsaW5lQ291bnRVbnRpbChjb25z
dCBSb290SW5saW5lQm94KikgY29uc3Q7CisgICAgc2l6ZV90IGxpbmVDb3VudFVudGlsKGNvbnN0
IExlZ2FjeVJvb3RJbmxpbmVCb3gqKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGFwcGVuZFJ1
bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qLCBpbnQgc3RhcnQsIGludCBlbmQsIFJl
bmRlck9iamVjdCYsIElubGluZUJpZGlSZXNvbHZlciYpOwotICAgIHN0YXRpYyB2b2lkIHVwZGF0
ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBUZXh0QWxp
Z25Nb2RlJiwgY29uc3QgUm9vdElubGluZUJveCosIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4s
IGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIHRvdGFsTG9naWNhbFdpZHRoLCBmbG9hdCYgYXZh
aWxhYmxlTG9naWNhbFdpZHRoLCBpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk7CisgICAg
c3RhdGljIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KFJlbmRlckJsb2NrRmxv
dyYsIGNvbnN0IFRleHRBbGlnbk1vZGUmLCBjb25zdCBMZWdhY3lSb290SW5saW5lQm94KiwgQmlk
aVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgdG90YWxM
b2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGludCBleHBhbnNpb25P
cHBvcnR1bml0eUNvdW50KTsKIAogcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElu
bGluZUJveD4gY3JlYXRlUm9vdElubGluZUJveCgpOwotICAgIFJvb3RJbmxpbmVCb3gqIGNyZWF0
ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Um9v
dElubGluZUJveD4gY3JlYXRlUm9vdElubGluZUJveCgpOworICAgIExlZ2FjeVJvb3RJbmxpbmVC
b3gqIGNyZWF0ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKTsKICAgICBMZWdhY3lJbmxpbmVCb3gq
IGNyZWF0ZUlubGluZUJveEZvclJlbmRlcmVyKFJlbmRlck9iamVjdCosIGJvb2wgaXNPbmx5UnVu
ID0gZmFsc2UpOwogICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmpl
Y3QqLCBjb25zdCBMaW5lSW5mbyYsIExlZ2FjeUlubGluZUJveCopOwogICAgIFRleHRBbGlnbk1v
ZGUgdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Q7CiAg
ICAgdm9pZCBzZXRNYXJnaW5zRm9yUnVieVJ1bihCaWRpUnVuKiwgUmVuZGVyUnVieVJ1biYsIFJl
bmRlck9iamVjdCogcHJldmlvdXNPYmplY3QsIGNvbnN0IExpbmVJbmZvJik7CiAgICAgdm9pZCB1
cGRhdGVSdWJ5Rm9ySnVzdGlmaWVkVGV4dChSZW5kZXJSdWJ5UnVuJiwgQmlkaVJ1biYsIGNvbnN0
IFZlY3Rvcjx1bnNpZ25lZCwgMTY+JiBleHBhbnNpb25PcHBvcnR1bml0aWVzLCB1bnNpZ25lZCYg
ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIHRvdGFsTG9naWNhbFdpZHRoLCBmbG9h
dCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHNpemVfdCYpOwogICAgIHZvaWQgY29tcHV0ZUV4cGFu
c2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5n
U3BhY2VSdW4sIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMTY+JiBleHBhbnNpb25PcHBvcnR1bml0
aWVzLCB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCB0b3RhbExvZ2lj
YWxXaWR0aCwgZmxvYXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKLSAgICB2b2lkIGNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5l
SW5mbyYsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBib29s
IHJlYWNoZWRFbmQsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQ
b3NpdGlvbkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYpOwotICAgIEJpZGlSdW4qIGNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCb3gqLCBjb25zdCBM
aW5lSW5mbyYsIFRleHRBbGlnbk1vZGUsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3Bh
Y2VSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlv
bkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYpOwotICAgIHZvaWQgcmVtb3ZlSW5saW5lQm94KEJp
ZGlSdW4mLCBjb25zdCBSb290SW5saW5lQm94JikgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlQmxv
Y2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVuKiBmaXJz
dFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBW
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKKyAgICB2b2lkIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Q
b3NpdGlvbnNGb3JMaW5lKExlZ2FjeVJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIEJp
ZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJlYWNoZWRF
bmQsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNh
Y2hlJiwgV29yZE1lYXN1cmVtZW50cyYpOworICAgIEJpZGlSdW4qIGNvbXB1dGVJbmxpbmVEaXJl
Y3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KExlZ2FjeVJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5l
SW5mbyYsIFRleHRBbGlnbk1vZGUsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VS
dW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNh
Y2hlJiwgV29yZE1lYXN1cmVtZW50cyYpOworICAgIHZvaWQgcmVtb3ZlSW5saW5lQm94KEJpZGlS
dW4mLCBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRl
QmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKExlZ2FjeVJvb3RJbmxpbmVCb3gqLCBCaWRp
UnVuKiBmaXJzdFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hE
YXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKICAgICBpbmxpbmUgQmlkaVJ1biogaGFu
ZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBCaWRpQ29u
dGV4dCogY3VycmVudENvbnRleHQpOwogICAgIHZvaWQgYXBwZW5kRmxvYXRpbmdPYmplY3RUb0xh
c3RMaW5lKEZsb2F0aW5nT2JqZWN0Jik7Ci0gICAgUm9vdElubGluZUJveCogY3JlYXRlTGluZUJv
eGVzRnJvbUJpZGlSdW5zKHVuc2lnbmVkIGJpZGlMZXZlbCwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4m
IGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5kLCBMaW5lSW5mbyYsIFZlcnRpY2Fs
UG9zaXRpb25DYWNoZSYsIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIFdvcmRNZWFzdXJlbWVu
dHMmKTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBjcmVhdGVMaW5lQm94ZXNGcm9tQmlkaVJ1
bnModW5zaWduZWQgYmlkaUxldmVsLCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNv
bnN0IElubGluZUl0ZXJhdG9yJiBlbmQsIExpbmVJbmZvJiwgVmVydGljYWxQb3NpdGlvbkNhY2hl
JiwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgV29yZE1lYXN1cmVtZW50cyYpOwogICAgIHZv
aWQgbGF5b3V0UnVuc0FuZEZsb2F0cyhMaW5lTGF5b3V0U3RhdGUmLCBib29sIGhhc0lubGluZUNo
aWxkKTsKICAgICBpbmxpbmUgY29uc3QgSW5saW5lSXRlcmF0b3ImIHJlc3RhcnRMYXlvdXRSdW5z
QW5kRmxvYXRzSW5SYW5nZShMYXlvdXRVbml0IG9sZExvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQg
bmV3TG9naWNhbEhlaWdodCwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xp
bmUsIElubGluZUJpZGlSZXNvbHZlciYsICBjb25zdCBJbmxpbmVJdGVyYXRvciYgb2xkRW5kKTsK
ICAgICB2b2lkIGxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYsIElu
bGluZUJpZGlSZXNvbHZlciYsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBjbGVhbkxpbmVTdGFydCwg
Y29uc3QgQmlkaVN0YXR1cyYgY2xlYW5MaW5lQmlkaVN0YXR1cywgdW5zaWduZWQgY29uc2VjdXRp
dmVIeXBoZW5hdGVkTGluZXMpOwotICAgIHZvaWQgcmVhdHRhY2hDbGVhbkxpbmVGbG9hdHMoUm9v
dElubGluZUJveCYgY2xlYW5MaW5lLCBMYXlvdXRVbml0IGRlbHRhLCBib29sIGlzRmlyc3RDbGVh
bkxpbmUpOworICAgIHZvaWQgcmVhdHRhY2hDbGVhbkxpbmVGbG9hdHMoTGVnYWN5Um9vdElubGlu
ZUJveCYgY2xlYW5MaW5lLCBMYXlvdXRVbml0IGRlbHRhLCBib29sIGlzRmlyc3RDbGVhbkxpbmUp
OwogICAgIHZvaWQgbGlua1RvRW5kTGluZUlmTmVlZGVkKExpbmVMYXlvdXRTdGF0ZSYpOwotICAg
IHZvaWQgY2hlY2tGbG9hdEluQ2xlYW5MaW5lKFJvb3RJbmxpbmVCb3gmIGNsZWFuTGluZSwgUmVu
ZGVyQm94JiBmbG9hdEJveE9uQ2xlYW5MaW5lLCBGbG9hdFdpdGhSZWN0JiBtYXRjaGluZ0Zsb2F0
V2l0aFJlY3QsIGJvb2wmIGVuY291bnRlcmVkTmV3RmxvYXQsIGJvb2wmIGRpcnRpZWRCeUZsb2F0
KTsKLSAgICBSb290SW5saW5lQm94KiBkZXRlcm1pbmVTdGFydFBvc2l0aW9uKExpbmVMYXlvdXRT
dGF0ZSYsIElubGluZUJpZGlSZXNvbHZlciYpOwotICAgIHZvaWQgZGV0ZXJtaW5lRW5kUG9zaXRp
b24oTGluZUxheW91dFN0YXRlJiwgUm9vdElubGluZUJveCogc3RhcnRMaW5lLCBJbmxpbmVJdGVy
YXRvciYgY2xlYW5MaW5lU3RhcnQsIEJpZGlTdGF0dXMmIGNsZWFuTGluZUJpZGlTdGF0dXMpOwor
ICAgIHZvaWQgY2hlY2tGbG9hdEluQ2xlYW5MaW5lKExlZ2FjeVJvb3RJbmxpbmVCb3gmIGNsZWFu
TGluZSwgUmVuZGVyQm94JiBmbG9hdEJveE9uQ2xlYW5MaW5lLCBGbG9hdFdpdGhSZWN0JiBtYXRj
aGluZ0Zsb2F0V2l0aFJlY3QsIGJvb2wmIGVuY291bnRlcmVkTmV3RmxvYXQsIGJvb2wmIGRpcnRp
ZWRCeUZsb2F0KTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBkZXRlcm1pbmVTdGFydFBvc2l0
aW9uKExpbmVMYXlvdXRTdGF0ZSYsIElubGluZUJpZGlSZXNvbHZlciYpOworICAgIHZvaWQgZGV0
ZXJtaW5lRW5kUG9zaXRpb24oTGluZUxheW91dFN0YXRlJiwgTGVnYWN5Um9vdElubGluZUJveCog
c3RhcnRMaW5lLCBJbmxpbmVJdGVyYXRvciYgY2xlYW5MaW5lU3RhcnQsIEJpZGlTdGF0dXMmIGNs
ZWFuTGluZUJpZGlTdGF0dXMpOwogICAgIGJvb2wgY2hlY2tQYWdpbmF0aW9uQW5kRmxvYXRzQXRF
bmRMaW5lKExpbmVMYXlvdXRTdGF0ZSYpOwotICAgIGJvb2wgbGluZVdpZHRoRm9yUGFnaW5hdGVk
TGluZUNoYW5nZWQoUm9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3V0VW5pdCBsaW5lRGVsdGEs
IFJlbmRlckZyYWdtZW50ZWRGbG93KikgY29uc3Q7CisgICAgYm9vbCBsaW5lV2lkdGhGb3JQYWdp
bmF0ZWRMaW5lQ2hhbmdlZChMZWdhY3lSb290SW5saW5lQm94KiByb290Qm94LCBMYXlvdXRVbml0
IGxpbmVEZWx0YSwgUmVuZGVyRnJhZ21lbnRlZEZsb3cqKSBjb25zdDsKICAgICBib29sIG1hdGNo
ZWRFbmRMaW5lKExpbmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZUJpZGlSZXNvbHZlciYsIGNv
bnN0IElubGluZUl0ZXJhdG9yJiBlbmRMaW5lU3RhcnQsIGNvbnN0IEJpZGlTdGF0dXMmIGVuZExp
bmVTdGF0dXMpOwogICAgIHZvaWQgZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMoKTsKICAgICB2b2lk
IGNoZWNrTGluZXNGb3JUZXh0T3ZlcmZsb3coKTsKLSAgICB2b2lkIHVwZGF0ZUZyYWdtZW50Rm9y
TGluZShSb290SW5saW5lQm94KikgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcmFnbWVudEZvckxp
bmUoTGVnYWN5Um9vdElubGluZUJveCopIGNvbnN0OwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKCkgY29uc3Q7CiAgICAgY29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxp
bmVCb3guY3BwCnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwCmluZGV4IGZiZDg2ZDY4NTA0Mi4uODE4ZDM4
NjI4ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3gu
Y3BwCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAK
ICNpbmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAgLTQzLDIw
ICs0MywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChSb290SW5saW5lQm94KTsKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChMZWdh
Y3lSb290SW5saW5lQm94KTsKIAotc3RydWN0IFNhbWVTaXplQXNSb290SW5saW5lQm94IDogcHVi
bGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSb290SW5saW5lQm94PiB7
CitzdHJ1Y3QgU2FtZVNpemVBc0xlZ2FjeVJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxv
d0JveCwgcHVibGljIENhbk1ha2VXZWFrUHRyPExlZ2FjeVJvb3RJbmxpbmVCb3g+IHsKICAgICB1
bnNpZ25lZCB2YXJpYWJsZXNbN107CiAgICAgV2Vha1B0cjxSZW5kZXJPYmplY3Q+IGxpbmVCcmVh
a09iajsKICAgICB2b2lkKiBwb2ludGVyc1syXTsKIH07CiAKLUNPTVBJTEVfQVNTRVJUKHNpemVv
ZihSb290SW5saW5lQm94KSA9PSBzaXplb2YoU2FtZVNpemVBc1Jvb3RJbmxpbmVCb3gpLCBSb290
SW5saW5lQm94X3Nob3VsZF9zdGF5X3NtYWxsKTsKK0NPTVBJTEVfQVNTRVJUKHNpemVvZihMZWdh
Y3lSb290SW5saW5lQm94KSA9PSBzaXplb2YoU2FtZVNpemVBc0xlZ2FjeVJvb3RJbmxpbmVCb3gp
LCBMZWdhY3lSb290SW5saW5lQm94X3Nob3VsZF9zdGF5X3NtYWxsKTsKICNpZiAhQVNTRVJUX0VO
QUJMRUQKIENPTVBJTEVfQVNTRVJUKHNpemVvZihXZWFrUHRyPFJlbmRlck9iamVjdD4pID09IHNp
emVvZih2b2lkKiksIFdlYWtQdHJfc2hvdWxkX2JlX3NhbWVfc2l6ZV9hc19yYXdfcG9pbnRlcik7
CiAjZW5kaWYKIAotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUm9vdElubGluZUJveCosIHN0
ZDo6dW5pcXVlX3B0cjxFbGxpcHNpc0JveD4+IEVsbGlwc2lzQm94TWFwOwordHlwZWRlZiBXVEY6
Okhhc2hNYXA8Y29uc3QgTGVnYWN5Um9vdElubGluZUJveCosIHN0ZDo6dW5pcXVlX3B0cjxFbGxp
cHNpc0JveD4+IEVsbGlwc2lzQm94TWFwOwogc3RhdGljIEVsbGlwc2lzQm94TWFwKiBnRWxsaXBz
aXNCb3hNYXA7CiAKIHN0YXRpYyBDb250YWluaW5nRnJhZ21lbnRNYXAmIGNvbnRhaW5pbmdGcmFn
bWVudE1hcChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrKQpAQCAtNjUsMTMgKzY1LDEzIEBAIHN0YXRp
YyBDb250YWluaW5nRnJhZ21lbnRNYXAmIGNvbnRhaW5pbmdGcmFnbWVudE1hcChSZW5kZXJCbG9j
a0Zsb3cmIGJsb2NrKQogICAgIHJldHVybiBibG9jay5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygp
LT5jb250YWluaW5nRnJhZ21lbnRNYXAoKTsKIH0KIAotUm9vdElubGluZUJveDo6Um9vdElubGlu
ZUJveChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrKQorTGVnYWN5Um9vdElubGluZUJveDo6TGVnYWN5
Um9vdElubGluZUJveChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrKQogICAgIDogSW5saW5lRmxvd0Jv
eChibG9jaykKIHsKICAgICBzZXRJc0hvcml6b250YWwoYmxvY2suaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSk7CiB9CiAKLVJvb3RJbmxpbmVCb3g6On5Sb290SW5saW5lQm94KCkKK0xlZ2FjeVJv
b3RJbmxpbmVCb3g6On5MZWdhY3lSb290SW5saW5lQm94KCkKIHsKICAgICBkZXRhY2hFbGxpcHNp
c0JveCgpOwogCkBAIC03OSw3ICs3OSw3IEBAIFJvb3RJbmxpbmVCb3g6On5Sb290SW5saW5lQm94
KCkKICAgICAgICAgY29udGFpbmluZ0ZyYWdtZW50TWFwKGJsb2NrRmxvdygpKS5yZW1vdmUodGhp
cyk7CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6ZGV0YWNoRWxsaXBzaXNCb3goKQordm9pZCBM
ZWdhY3lSb290SW5saW5lQm94OjpkZXRhY2hFbGxpcHNpc0JveCgpCiB7CiAgICAgaWYgKGhhc0Vs
bGlwc2lzQm94KCkpIHsKICAgICAgICAgYXV0byBib3ggPSBnRWxsaXBzaXNCb3hNYXAtPnRha2Uo
dGhpcyk7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6ZGV0YWNoRWxsaXBz
aXNCb3goKQogICAgIH0KIH0KIAotdm9pZCBSb290SW5saW5lQm94OjpjbGVhclRydW5jYXRpb24o
KQordm9pZCBMZWdhY3lSb290SW5saW5lQm94OjpjbGVhclRydW5jYXRpb24oKQogewogICAgIGlm
IChoYXNFbGxpcHNpc0JveCgpKSB7CiAgICAgICAgIGRldGFjaEVsbGlwc2lzQm94KCk7CkBAIC05
Niw3ICs5Niw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKCkKICAgICB9
CiB9CiAKLWJvb2wgUm9vdElubGluZUJveDo6aXNIeXBoZW5hdGVkKCkgY29uc3QKK2Jvb2wgTGVn
YWN5Um9vdElubGluZUJveDo6aXNIeXBoZW5hdGVkKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8q
IGJveCA9IGZpcnN0TGVhZkRlc2NlbmRhbnQoKTsgYm94OyBib3ggPSBib3gtPm5leHRMZWFmT25M
aW5lKCkpIHsKICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpib3gpICYmIGRvd25jYXN0
PElubGluZVRleHRCb3g+KCpib3gpLmhhc0h5cGhlbigpKQpAQCAtMTA1LDI5ICsxMDUsMjkgQEAg
Ym9vbCBSb290SW5saW5lQm94Ojppc0h5cGhlbmF0ZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeVJvb3RJbmxpbmVC
b3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gcmVuZGVyZXIoKS5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgaXNG
aXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKIH0KIAotTGF5b3V0VW5pdCBSb290SW5s
aW5lQm94OjpsaW5lSGVpZ2h0KCkgY29uc3QKK0xheW91dFVuaXQgTGVnYWN5Um9vdElubGluZUJv
eDo6bGluZUhlaWdodCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkubGluZUhlaWdo
dChpc0ZpcnN0TGluZSgpLCBpc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGlj
YWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOwogfQogCi1ib29sIFJvb3RJbmxp
bmVCb3g6OmxpbmVDYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdl
LCBpbnQgbGluZUJveEVkZ2UsIGludCBlbGxpcHNpc1dpZHRoKQorYm9vbCBMZWdhY3lSb290SW5s
aW5lQm94OjpsaW5lQ2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRn
ZSwgaW50IGxpbmVCb3hFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCkKIHsKICAgICAvLyBGaXJzdCBz
YW5pdHktY2hlY2sgdGhlIHVub3ZlcmZsb3dlZCB3aWR0aCBvZiB0aGUgd2hvbGUgbGluZSB0byBz
ZWUgaWYgdGhlcmUgaXMgc3VmZmljaWVudCByb29tLgogICAgIGludCBkZWx0YSA9IGx0ciA/IGxp
bmVCb3hFZGdlIC0gYmxvY2tFZGdlIDogYmxvY2tFZGdlIC0gbGluZUJveEVkZ2U7CiAgICAgaWYg
KGxvZ2ljYWxXaWR0aCgpIC0gZGVsdGEgPCBlbGxpcHNpc1dpZHRoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAvLyBOZXh0IGl0ZXJhdGUgb3ZlciBhbGwgdGhlIGxpbmUgYm94ZXMgb24g
dGhlIGxpbmUuICBJZiB3ZSBmaW5kIGEgcmVwbGFjZWQgZWxlbWVudCB0aGF0IGludGVyc2VjdHMK
LSAgICAvLyB0aGVuIHdlIHJlZnVzZSB0byBhY2NvbW1vZGF0ZSB0aGUgZWxsaXBzaXMuICBPdGhl
cndpc2Ugd2UncmUgb2suCisgICAgLy8gTmV4dCBpdGVyYXRlIG92ZXIgYWxsIHRoZSBsaW5lIGJv
eGVzIG9uIHRoZSBsaW5lLiBJZiB3ZSBmaW5kIGEgcmVwbGFjZWQgZWxlbWVudCB0aGF0IGludGVy
c2VjdHMKKyAgICAvLyB0aGVuIHdlIHJlZnVzZSB0byBhY2NvbW1vZGF0ZSB0aGUgZWxsaXBzaXMu
IE90aGVyd2lzZSB3ZSdyZSBvay4KICAgICByZXR1cm4gSW5saW5lRmxvd0JveDo6Y2FuQWNjb21t
b2RhdGVFbGxpcHNpcyhsdHIsIGJsb2NrRWRnZSwgZWxsaXBzaXNXaWR0aCk7CiB9CiAKLWZsb2F0
IFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNT
dHIsICBib29sIGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwgZmxvYXQgYmxvY2tSaWdodEVkZ2Us
IGZsb2F0IGVsbGlwc2lzV2lkdGgsIExlZ2FjeUlubGluZUJveCogbWFya3VwQm94KQorZmxvYXQg
TGVnYWN5Um9vdElubGluZUJveDo6cGxhY2VFbGxpcHNpcyhjb25zdCBBdG9tU3RyaW5nJiBlbGxp
cHNpc1N0ciwgIGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9ja1JpZ2h0
RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgTGVnYWN5SW5saW5lQm94KiBtYXJrdXBCb3gpCiB7
CiAgICAgaWYgKCFnRWxsaXBzaXNCb3hNYXApCiAgICAgICAgIGdFbGxpcHNpc0JveE1hcCA9IG5l
dyBFbGxpcHNpc0JveE1hcCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIGZsb2F0IFJvb3RJbmxpbmVC
b3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsICBib29sIGx0
ciwgZmxvCiAgICAgcmV0dXJuIHRydW5jYXRlZFdpZHRoOwogfQogCi1mbG9hdCBSb290SW5saW5l
Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9h
dCBibG9ja1JpZ2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdp
ZHRoLCBib29sJiBmb3VuZEJveCkKK2Zsb2F0IExlZ2FjeVJvb3RJbmxpbmVCb3g6OnBsYWNlRWxs
aXBzaXNCb3goYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRF
ZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBmbG9hdCAmdHJ1bmNhdGVkV2lkdGgsIGJvb2wmIGZv
dW5kQm94KQogewogICAgIGZsb2F0IHJlc3VsdCA9IElubGluZUZsb3dCb3g6OnBsYWNlRWxsaXBz
aXNCb3gobHRyLCBibG9ja0xlZnRFZGdlLCBibG9ja1JpZ2h0RWRnZSwgZWxsaXBzaXNXaWR0aCwg
dHJ1bmNhdGVkV2lkdGgsIGZvdW5kQm94KTsKICAgICBpZiAocmVzdWx0ID09IC0xKSB7CkBAIC0x
NjEsMTkgKzE2MSwxOSBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KGJv
b2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9jawogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6cGFpbnRFbGxpcHNpc0JveChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgY29uc3QKK3ZvaWQgTGVnYWN5Um9vdElubGlu
ZUJveDo6cGFpbnRFbGxpcHNpc0JveChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJv
dHRvbSkgY29uc3QKIHsKICAgICBpZiAoaGFzRWxsaXBzaXNCb3goKSAmJiBwYWludEluZm8uc2hv
dWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZTo6Rm9yZWdyb3VuZCkKICAgICAgICAgZWxsaXBzaXNCb3goKS0+cGFpbnQocGFpbnRJ
bmZvLCBwYWludE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSk7CiB9CiAKLXZvaWQgUm9vdElu
bGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCit2
b2lkIExlZ2FjeVJvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5p
dCBsaW5lQm90dG9tKQogewogICAgIElubGluZUZsb3dCb3g6OnBhaW50KHBhaW50SW5mbywgcGFp
bnRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20pOwogICAgIHBhaW50RWxsaXBzaXNCb3gocGFp
bnRJbmZvLCBwYWludE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSk7CiB9CiAKLWJvb2wgUm9v
dElubGluZUJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29u
dGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQg
bGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rp
b24pCitib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVz
dEFjdGlvbiBoaXRUZXN0QWN0aW9uKQogewogICAgIGlmIChoYXNFbGxpcHNpc0JveCgpICYmIHZp
c2libGVUb0hpdFRlc3RpbmcocmVxdWVzdCkpIHsKICAgICAgICAgaWYgKGVsbGlwc2lzQm94KCkt
Pm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11
bGF0ZWRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20sIGhpdFRlc3RBY3Rpb24pKSB7CkBAIC0x
ODQsNyArMTg0LDcgQEAgYm9vbCBSb290SW5saW5lQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICByZXR1cm4gSW5saW5l
Rmxvd0JveDo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVy
LCBhY2N1bXVsYXRlZE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSwgaGl0VGVzdEFjdGlvbik7
CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZsb2F0
IGR5KQordm9pZCBMZWdhY3lSb290SW5saW5lQm94OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwg
ZmxvYXQgZHkpCiB7CiAgICAgSW5saW5lRmxvd0JveDo6YWRqdXN0UG9zaXRpb24oZHgsIGR5KTsK
ICAgICBMYXlvdXRVbml0IGJsb2NrRGlyZWN0aW9uRGVsdGEgeyBpc0hvcml6b250YWwoKSA/IGR5
IDogZHggfTsgLy8gVGhlIGJsb2NrIGRpcmVjdGlvbiBkZWx0YSBpcyBhIExheW91dFVuaXQuCkBA
IC0xOTYsMTggKzE5NiwxOCBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9uKGZs
b2F0IGR4LCBmbG9hdCBkeSkKICAgICAgICAgZWxsaXBzaXNCb3goKS0+YWRqdXN0UG9zaXRpb24o
ZHgsIGR5KTsKIH0KIAotdm9pZCBSb290SW5saW5lQm94OjpjaGlsZFJlbW92ZWQoTGVnYWN5SW5s
aW5lQm94KiBib3gpCit2b2lkIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmNoaWxkUmVtb3ZlZChMZWdh
Y3lJbmxpbmVCb3gqIGJveCkKIHsKICAgICBpZiAoJmJveC0+cmVuZGVyZXIoKSA9PSBtX2xpbmVC
cmVha09iaikKICAgICAgICAgc2V0TGluZUJyZWFrSW5mbyhudWxscHRyLCAwLCBCaWRpU3RhdHVz
KCkpOwogCi0gICAgZm9yIChSb290SW5saW5lQm94KiBwcmV2ID0gcHJldlJvb3RCb3goKTsgcHJl
diAmJiBwcmV2LT5saW5lQnJlYWtPYmooKSA9PSAmYm94LT5yZW5kZXJlcigpOyBwcmV2ID0gcHJl
di0+cHJldlJvb3RCb3goKSkgeworICAgIGZvciAoYXV0byogcHJldiA9IHByZXZSb290Qm94KCk7
IHByZXYgJiYgcHJldi0+bGluZUJyZWFrT2JqKCkgPT0gJmJveC0+cmVuZGVyZXIoKTsgcHJldiA9
IHByZXYtPnByZXZSb290Qm94KCkpIHsKICAgICAgICAgcHJldi0+c2V0TGluZUJyZWFrSW5mbyhu
dWxscHRyLCAwLCBCaWRpU3RhdHVzKCkpOwogICAgICAgICBwcmV2LT5tYXJrRGlydHkoKTsKICAg
ICB9CiB9CiAKLVJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBSb290SW5saW5lQm94Ojpjb250YWlu
aW5nRnJhZ21lbnQoKSBjb25zdAorUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIExlZ2FjeVJvb3RJ
bmxpbmVCb3g6OmNvbnRhaW5pbmdGcmFnbWVudCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmluZ0Zy
YWdtZW50TWFwJiBmcmFnbWVudE1hcCA9IGNvbnRhaW5pbmdGcmFnbWVudE1hcChibG9ja0Zsb3co
KSk7CiAgICAgYm9vbCBoYXNDb250YWluaW5nRnJhZ21lbnQgPSBmcmFnbWVudE1hcC5jb250YWlu
cyh0aGlzKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogUm9v
dElubGluZUJveDo6Y29udGFpbmluZ0ZyYWdtZW50KCkgY29uc3QKICAgICByZXR1cm4gZnJhZ21l
bnQ7CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6Y2xlYXJDb250YWluaW5nRnJhZ21lbnQoKQor
dm9pZCBMZWdhY3lSb290SW5saW5lQm94OjpjbGVhckNvbnRhaW5pbmdGcmFnbWVudCgpCiB7CiAg
ICAgQVNTRVJUKCFpc0RpcnR5KCkpOwogCkBAIC0yMzQsMTQgKzIzNCwxNCBAQCB2b2lkIFJvb3RJ
bmxpbmVCb3g6OmNsZWFyQ29udGFpbmluZ0ZyYWdtZW50KCkKICAgICBjb250YWluaW5nRnJhZ21l
bnRNYXAoYmxvY2tGbG93KCkpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9pZCBSb290SW5saW5lQm94
OjpzZXRDb250YWluaW5nRnJhZ21lbnQoUmVuZGVyRnJhZ21lbnRDb250YWluZXImIGZyYWdtZW50
KQordm9pZCBMZWdhY3lSb290SW5saW5lQm94OjpzZXRDb250YWluaW5nRnJhZ21lbnQoUmVuZGVy
RnJhZ21lbnRDb250YWluZXImIGZyYWdtZW50KQogewogICAgIEFTU0VSVCghaXNEaXJ0eSgpKTsK
IAogICAgIGNvbnRhaW5pbmdGcmFnbWVudE1hcChibG9ja0Zsb3coKSkuc2V0KHRoaXMsICZmcmFn
bWVudCk7CiB9CiAKLUxheW91dFVuaXQgUm9vdElubGluZUJveDo6YWxpZ25Cb3hlc0luQmxvY2tE
aXJlY3Rpb24oTGF5b3V0VW5pdCBoZWlnaHRPZkJsb2NrLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJh
Y2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGlj
YWxQb3NpdGlvbkNhY2hlKQorTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94OjphbGlnbkJv
eGVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IGhlaWdodE9mQmxvY2ssIEdseXBoT3ZlcmZs
b3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNh
Y2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpCiB7CiAgICAgLy8gU1ZHIHdpbGwgaGFuZGxlIHZl
cnRpY2FsIGFsaWdubWVudCBvbiBpdHMgb3duLgogICAgIGlmIChpc1NWR1Jvb3RJbmxpbmVCb3go
KSkKQEAgLTI2MCw3ICsyNjAsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OmFsaWduQm94
ZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgaGVpZ2h0T2ZCbG9jaywgRwogICAgIG1fYmFz
ZWxpbmVUeXBlID0gcmVxdWlyZXNJZGVvZ3JhcGhpY0Jhc2VsaW5lKHRleHRCb3hEYXRhTWFwKSA/
IElkZW9ncmFwaGljQmFzZWxpbmUgOiBBbHBoYWJldGljQmFzZWxpbmU7CiAKICAgICBjb21wdXRl
TG9naWNhbEJveEhlaWdodHMoKnRoaXMsIG1heFBvc2l0aW9uVG9wLCBtYXhQb3NpdGlvbkJvdHRv
bSwgbWF4QXNjZW50LCBtYXhEZXNjZW50LCBzZXRNYXhBc2NlbnQsIHNldE1heERlc2NlbnQsIG5v
UXVpcmtzTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEJveERhdGFNYXAs
IGJhc2VsaW5lVHlwZSgpLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpOworICAgICAgICB0ZXh0Qm94
RGF0YU1hcCwgYmFzZWxpbmVUeXBlKCksIHZlcnRpY2FsUG9zaXRpb25DYWNoZSk7CiAKICAgICBp
ZiAobWF4QXNjZW50ICsgbWF4RGVzY2VudCA8IHN0ZDo6bWF4KG1heFBvc2l0aW9uVG9wLCBtYXhQ
b3NpdGlvbkJvdHRvbSkpCiAgICAgICAgIGFkanVzdE1heEFzY2VudEFuZERlc2NlbnQobWF4QXNj
ZW50LCBtYXhEZXNjZW50LCBtYXhQb3NpdGlvblRvcCwgbWF4UG9zaXRpb25Cb3R0b20pOwpAQCAt
Mjc0LDcgKzI3NCw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6YWxpZ25Cb3hlc0luQmxv
Y2tEaXJlY3Rpb24oTGF5b3V0VW5pdCBoZWlnaHRPZkJsb2NrLCBHCiAgICAgYm9vbCBoYXNBbm5v
dGF0aW9uc0JlZm9yZSA9IGZhbHNlOwogICAgIGJvb2wgaGFzQW5ub3RhdGlvbnNBZnRlciA9IGZh
bHNlOwogICAgIHBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKGhlaWdodE9mQmxvY2ssIG1heEhl
aWdodCwgbWF4QXNjZW50LCBub1F1aXJrc01vZGUsIGxpbmVUb3AsIGxpbmVCb3R0b20sIHNldExp
bmVUb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVRvcEluY2x1ZGluZ01h
cmdpbnMsIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBoYXNBbm5vdGF0aW9uc0JlZm9yZSwg
aGFzQW5ub3RhdGlvbnNBZnRlciwgYmFzZWxpbmVUeXBlKCkpOworICAgICAgICBsaW5lVG9wSW5j
bHVkaW5nTWFyZ2lucywgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMsIGhhc0Fubm90YXRpb25z
QmVmb3JlLCBoYXNBbm5vdGF0aW9uc0FmdGVyLCBiYXNlbGluZVR5cGUoKSk7CiAgICAgbV9oYXNB
bm5vdGF0aW9uc0JlZm9yZSA9IGhhc0Fubm90YXRpb25zQmVmb3JlOwogICAgIG1faGFzQW5ub3Rh
dGlvbnNBZnRlciA9IGhhc0Fubm90YXRpb25zQWZ0ZXI7CiAgICAgCkBAIC0zMDIsNyArMzAyLDcg
QEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjphbGlnbkJveGVzSW5CbG9ja0RpcmVjdGlvbihM
YXlvdXRVbml0IGhlaWdodE9mQmxvY2ssIEcKICAgICByZXR1cm4gaGVpZ2h0T2ZCbG9jayArIG1h
eEhlaWdodDsKIH0KIAotTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpiZWZvcmVBbm5vdGF0aW9u
c0FkanVzdG1lbnQoKSBjb25zdAorTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94OjpiZWZv
cmVBbm5vdGF0aW9uc0FkanVzdG1lbnQoKSBjb25zdAogewogICAgIExheW91dFVuaXQgcmVzdWx0
OwogCkBAIC0zMzMsNyArMzMzLDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpiZWZvcmVB
bm5vdGF0aW9uc0FkanVzdG1lbnQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUxh
eW91dFVuaXQgUm9vdElubGluZUJveDo6bGluZVNuYXBBZGp1c3RtZW50KExheW91dFVuaXQgZGVs
dGEpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeVJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0
bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25zdAogewogICAgIC8vIElmIG91ciBibG9jayBkb2Vz
bid0IGhhdmUgc25hcHBpbmcgdHVybmVkIG9uLCBkbyBub3RoaW5nLgogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgYm91bmRzIHNuYXBwaW5nLgpAQCAtMzQ4LDcgKzM0OCw3IEBAIExheW91dFVuaXQg
Um9vdElubGluZUJveDo6bGluZVNuYXBBZGp1c3RtZW50KExheW91dFVuaXQgZGVsdGEpIGNvbnN0
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gR2V0IHRoZSBoeXBvdGhldGljYWwgbGluZSBi
b3ggdXNlZCB0byBlc3RhYmxpc2ggdGhlIGdyaWQuCi0gICAgUm9vdElubGluZUJveCogbGluZUdy
aWRCb3ggPSBsaW5lR3JpZC0+bGluZUdyaWRCb3goKTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94
KiBsaW5lR3JpZEJveCA9IGxpbmVHcmlkLT5saW5lR3JpZEJveCgpOwogICAgIGlmICghbGluZUdy
aWRCb3gpCiAgICAgICAgIHJldHVybiAwOwogICAgIApAQCAtNDI4LDcgKzQyOCw3IEBAIExheW91
dFVuaXQgUm9vdElubGluZUJveDo6bGluZVNuYXBBZGp1c3RtZW50KExheW91dFVuaXQgZGVsdGEp
IGNvbnN0CiAgICAgcmV0dXJuIGxpbmVTbmFwQWRqdXN0bWVudChuZXdQYWdlTG9naWNhbFRvcCAt
IChibG9ja09mZnNldCArIGxpbmVCb3hUb3AoKSkpOwogfQogCi1HYXBSZWN0cyBSb290SW5saW5l
Qm94OjpsaW5lU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91
dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZz
ZXRGcm9tUm9vdEJsb2NrLAorR2FwUmVjdHMgTGVnYWN5Um9vdElubGluZUJveDo6bGluZVNlbGVj
dGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcm9vdEJs
b2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9j
aywKICAgICBMYXlvdXRVbml0IHNlbFRvcCwgTGF5b3V0VW5pdCBzZWxIZWlnaHQsIGNvbnN0IExv
Z2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmIGNhY2hlLCBjb25zdCBQYWludEluZm8qIHBhaW50
SW5mbykKIHsKICAgICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIGxpbmVTdGF0ZSA9IHNl
bGVjdGlvblN0YXRlKCk7CkBAIC00ODIsNyArNDgyLDcgQEAgR2FwUmVjdHMgUm9vdElubGluZUJv
eDo6bGluZVNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQ
b2kKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRl
IFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblN0YXRlKCkKK1JlbmRlck9iamVjdDo6SGlnaGxpZ2h0
U3RhdGUgTGVnYWN5Um9vdElubGluZUJveDo6c2VsZWN0aW9uU3RhdGUoKQogewogICAgIC8vIFdh
bGsgb3ZlciBhbGwgb2YgdGhlIHNlbGVjdGVkIGJveGVzLgogICAgIFJlbmRlck9iamVjdDo6SGln
aGxpZ2h0U3RhdGUgc3RhdGUgPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lOwpA
QCAtNTA1LDcgKzUwNSw3IEBAIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgUm9vdElubGlu
ZUJveDo6c2VsZWN0aW9uU3RhdGUoKQogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotTGVnYWN5SW5s
aW5lQm94KiBSb290SW5saW5lQm94OjpmaXJzdFNlbGVjdGVkQm94KCkKK0xlZ2FjeUlubGluZUJv
eCogTGVnYWN5Um9vdElubGluZUJveDo6Zmlyc3RTZWxlY3RlZEJveCgpCiB7CiAgICAgZm9yIChh
dXRvKiBib3ggPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVh
Zk9uTGluZSgpKSB7CiAgICAgICAgIGlmIChib3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVy
T2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKQEAgLTUxNCw3ICs1MTQsNyBAQCBMZWdhY3lJ
bmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6OmZpcnN0U2VsZWN0ZWRCb3goKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1MZWdhY3lJbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3Rl
ZEJveCgpCitMZWdhY3lJbmxpbmVCb3gqIExlZ2FjeVJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3Rl
ZEJveCgpCiB7CiAgICAgZm9yIChhdXRvKiBib3ggPSBsYXN0TGVhZkRlc2NlbmRhbnQoKTsgYm94
OyBib3ggPSBib3gtPnByZXZpb3VzTGVhZk9uTGluZSgpKSB7CiAgICAgICAgIGlmIChib3gtPnNl
bGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKQEAg
LTUyMyw3ICs1MjMsNyBAQCBMZWdhY3lJbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6Omxhc3RTZWxl
Y3RlZEJveCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUxheW91dFVuaXQgUm9vdElubGlu
ZUJveDo6c2VsZWN0aW9uVG9wKEZvckhpdFRlc3RpbmcgZm9ySGl0VGVzdGluZykgY29uc3QKK0xh
eW91dFVuaXQgTGVnYWN5Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wKEZvckhpdFRlc3Rpbmcg
Zm9ySGl0VGVzdGluZykgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvblRvcCA9IG1f
bGluZVRvcDsKICAgICAKQEAgLTU1NCw3ICs1NTQsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVC
b3g6OnNlbGVjdGlvblRvcChGb3JIaXRUZXN0aW5nIGZvckhpdFRlc3RpbmcpIGNvbnN0CiAgICAg
ICAgICAgICBSZW5kZXJSdWJ5QmFzZSogYmFzZSA9IHJ1bi0+cnVieUJhc2UoKTsKICAgICAgICAg
ICAgIGlmIChiYXNlICYmIHRleHQtPmxvZ2ljYWxUb3AoKSA8IGJhc2UtPmxvZ2ljYWxUb3AoKSkg
ewogICAgICAgICAgICAgICAgIC8vIFRoZSBydWJ5IHRleHQgaXMgYWJvdmUgdGhlIHJ1YnkgYmFz
ZS4KLSAgICAgICAgICAgICAgICBjb25zdCBSb290SW5saW5lQm94JiBjb250YWluaW5nTGluZSA9
IHJ1bi0+aW5saW5lQm94V3JhcHBlcigpLT5yb290KCk7CisgICAgICAgICAgICAgICAgY29uc3Qg
TGVnYWN5Um9vdElubGluZUJveCYgY29udGFpbmluZ0xpbmUgPSBydW4tPmlubGluZUJveFdyYXBw
ZXIoKS0+cm9vdCgpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgZW5jbG9zaW5nU2VsZWN0
aW9uVG9wID0gY29udGFpbmluZ0xpbmUuc2VsZWN0aW9uVG9wKCk7CiAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBkZWx0YUJldHdlZW5PYmplY3RzID0gdGV4dC0+bG9naWNhbFRvcCgpICsgcnVu
LT5sb2dpY2FsVG9wKCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3BJ
blJ1YnlUZXh0Q29vcmRzID0gZW5jbG9zaW5nU2VsZWN0aW9uVG9wIC0gZGVsdGFCZXR3ZWVuT2Jq
ZWN0czsKQEAgLTU3NCw3ICs1NzQsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnNlbGVj
dGlvblRvcChGb3JIaXRUZXN0aW5nIGZvckhpdFRlc3RpbmcpIGNvbnN0CiAKICAgICBpZiAocHJl
dkJvdHRvbSA8IHNlbGVjdGlvblRvcCAmJiBibG9ja0Zsb3coKS5jb250YWluc0Zsb2F0cygpKSB7
CiAgICAgICAgIC8vIFRoaXMgbGluZSBoYXMgYWN0dWFsbHkgYmVlbiBtb3ZlZCBmdXJ0aGVyIGRv
d24sIHByb2JhYmx5IGZyb20gYSBsYXJnZSBsaW5lLWhlaWdodCwgYnV0IHBvc3NpYmx5IGJlY2F1
c2UgdGhlCi0gICAgICAgIC8vIGxpbmUgd2FzIGZvcmNlZCB0byBjbGVhciBmbG9hdHMuICBJZiBz
bywgbGV0J3MgY2hlY2sgdGhlIG9mZnNldHMsIGFuZCBvbmx5IGJlIHdpbGxpbmcgdG8gdXNlIHRo
ZSBwcmV2aW91cworICAgICAgICAvLyBsaW5lIHdhcyBmb3JjZWQgdG8gY2xlYXIgZmxvYXRzLiBJ
ZiBzbywgbGV0J3MgY2hlY2sgdGhlIG9mZnNldHMsIGFuZCBvbmx5IGJlIHdpbGxpbmcgdG8gdXNl
IHRoZSBwcmV2aW91cwogICAgICAgICAvLyBsaW5lJ3MgYm90dG9tIGlmIHRoZSBvZmZzZXRzIGFy
ZSBncmVhdGVyIG9uIGJvdGggc2lkZXMuCiAgICAgICAgIExheW91dFVuaXQgcHJldkxlZnQgPSBi
bG9ja0Zsb3coKS5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUocHJldkJvdHRvbSwgRG9Ob3RJbmRl
bnRUZXh0KTsKICAgICAgICAgTGF5b3V0VW5pdCBwcmV2UmlnaHQgPSBibG9ja0Zsb3coKS5sb2dp
Y2FsUmlnaHRPZmZzZXRGb3JMaW5lKHByZXZCb3R0b20sIERvTm90SW5kZW50VGV4dCk7CkBAIC02
MTksOSArNjE5LDkgQEAgc3RhdGljIFJlbmRlckJsb2NrKiBibG9ja0JlZm9yZVdpdGhpblNlbGVj
dGlvblJvb3QoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0YKICAgICByZXR1cm4gYmVmb3Jl
QmxvY2s7CiB9CiAKLUxheW91dFVuaXQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wQWRqdXN0
ZWRGb3JQcmVjZWRpbmdCbG9jaygpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeVJvb3RJbmxpbmVC
b3g6OnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSBjb25zdAogewotICAg
IGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7CisgICAgY29uc3QgTGVnYWN5
Um9vdElubGluZUJveCYgcm9vdEJveCA9IHJvb3QoKTsKICAgICBMYXlvdXRVbml0IHRvcCA9IHNl
bGVjdGlvblRvcCgpOwogCiAgICAgYXV0byBibG9ja1NlbGVjdGlvblN0YXRlID0gcm9vdEJveC5i
bG9ja0Zsb3coKS5zZWxlY3Rpb25TdGF0ZSgpOwpAQCAtNjQ4LDcgKzY0OCw3IEBAIExheW91dFVu
aXQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygp
IGNvbnN0CiAgICAgcmV0dXJuIHRvcDsKIH0KIAotTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojpz
ZWxlY3Rpb25Cb3R0b20oKSBjb25zdAorTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94Ojpz
ZWxlY3Rpb25Cb3R0b20oKSBjb25zdAogewogICAgIExheW91dFVuaXQgc2VsZWN0aW9uQm90dG9t
ID0gbV9saW5lQm90dG9tOwogCkBAIC02NzksNyArNjc5LDcgQEAgTGF5b3V0VW5pdCBSb290SW5s
aW5lQm94OjpzZWxlY3Rpb25Cb3R0b20oKSBjb25zdAogICAgICAgICAgICAgUmVuZGVyUnVieUJh
c2UqIGJhc2UgPSBydW4tPnJ1YnlCYXNlKCk7CiAgICAgICAgICAgICBpZiAoYmFzZSAmJiB0ZXh0
LT5sb2dpY2FsVG9wKCkgPiBiYXNlLT5sb2dpY2FsVG9wKCkpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgcnVieSB0ZXh0IGlzIGFib3ZlIHRoZSBydWJ5IGJhc2UuCi0gICAgICAgICAgICAgICAg
Y29uc3QgUm9vdElubGluZUJveCYgY29udGFpbmluZ0xpbmUgPSBydW4tPmlubGluZUJveFdyYXBw
ZXIoKS0+cm9vdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gm
IGNvbnRhaW5pbmdMaW5lID0gcnVuLT5pbmxpbmVCb3hXcmFwcGVyKCktPnJvb3QoKTsKICAgICAg
ICAgICAgICAgICBMYXlvdXRVbml0IGVuY2xvc2luZ1NlbGVjdGlvbkJvdHRvbSA9IGNvbnRhaW5p
bmdMaW5lLnNlbGVjdGlvbkJvdHRvbSgpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgZGVs
dGFCZXR3ZWVuT2JqZWN0cyA9IHRleHQtPmxvZ2ljYWxUb3AoKSArIHJ1bi0+bG9naWNhbFRvcCgp
OwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgc2VsZWN0aW9uQm90dG9tSW5SdWJ5VGV4dENv
b3JkcyA9IGVuY2xvc2luZ1NlbGVjdGlvbkJvdHRvbSAtIGRlbHRhQmV0d2Vlbk9iamVjdHM7CkBA
IC02OTIsNyArNjkyLDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpzZWxlY3Rpb25Cb3R0
b20oKSBjb25zdAogICAgIExheW91dFVuaXQgbmV4dFRvcCA9IG5leHRSb290Qm94KCktPnNlbGVj
dGlvblRvcCgpOwogICAgIGlmIChuZXh0VG9wID4gc2VsZWN0aW9uQm90dG9tICYmIGJsb2NrRmxv
dygpLmNvbnRhaW5zRmxvYXRzKCkpIHsKICAgICAgICAgLy8gVGhlIG5leHQgbGluZSBoYXMgYWN0
dWFsbHkgYmVlbiBtb3ZlZCBmdXJ0aGVyIG92ZXIsIHByb2JhYmx5IGZyb20gYSBsYXJnZSBsaW5l
LWhlaWdodCwgYnV0IHBvc3NpYmx5IGJlY2F1c2UgdGhlCi0gICAgICAgIC8vIGxpbmUgd2FzIGZv
cmNlZCB0byBjbGVhciBmbG9hdHMuICBJZiBzbywgbGV0J3MgY2hlY2sgdGhlIG9mZnNldHMsIGFu
ZCBvbmx5IGJlIHdpbGxpbmcgdG8gdXNlIHRoZSBuZXh0CisgICAgICAgIC8vIGxpbmUgd2FzIGZv
cmNlZCB0byBjbGVhciBmbG9hdHMuIElmIHNvLCBsZXQncyBjaGVjayB0aGUgb2Zmc2V0cywgYW5k
IG9ubHkgYmUgd2lsbGluZyB0byB1c2UgdGhlIG5leHQKICAgICAgICAgLy8gbGluZSdzIHRvcCBp
ZiB0aGUgb2Zmc2V0cyBhcmUgZ3JlYXRlciBvbiBib3RoIHNpZGVzLgogICAgICAgICBMYXlvdXRV
bml0IG5leHRMZWZ0ID0gYmxvY2tGbG93KCkubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKG5leHRU
b3AsIERvTm90SW5kZW50VGV4dCk7CiAgICAgICAgIExheW91dFVuaXQgbmV4dFJpZ2h0ID0gYmxv
Y2tGbG93KCkubG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShuZXh0VG9wLCBEb05vdEluZGVudFRl
eHQpOwpAQCAtNzA1LDE3ICs3MDUsMTcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpzZWxl
Y3Rpb25Cb3R0b20oKSBjb25zdAogICAgIHJldHVybiBuZXh0VG9wOwogfQogCi1SZW5kZXJCbG9j
a0Zsb3cmIFJvb3RJbmxpbmVCb3g6OmJsb2NrRmxvdygpIGNvbnN0CitSZW5kZXJCbG9ja0Zsb3cm
IExlZ2FjeVJvb3RJbmxpbmVCb3g6OmJsb2NrRmxvdygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocmVuZGVyZXIoKSk7CiB9CiAKLUJpZGlTdGF0dXMgUm9v
dElubGluZUJveDo6bGluZUJyZWFrQmlkaVN0YXR1cygpIGNvbnN0CitCaWRpU3RhdHVzIExlZ2Fj
eVJvb3RJbmxpbmVCb3g6OmxpbmVCcmVha0JpZGlTdGF0dXMoKSBjb25zdAogeyAKICAgICByZXR1
cm4geyBzdGF0aWNfY2FzdDxVQ2hhckRpcmVjdGlvbj4obV9saW5lQnJlYWtCaWRpU3RhdHVzRW9y
KSwgc3RhdGljX2Nhc3Q8VUNoYXJEaXJlY3Rpb24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3RT
dHJvbmcpLCBzdGF0aWNfY2FzdDxVQ2hhckRpcmVjdGlvbj4obV9saW5lQnJlYWtCaWRpU3RhdHVz
TGFzdCksIG1fbGluZUJyZWFrQ29udGV4dC5jb3B5UmVmKCkgfTsKIH0KIAotdm9pZCBSb290SW5s
aW5lQm94OjpzZXRMaW5lQnJlYWtJbmZvKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBi
cmVha1Bvc2l0aW9uLCBjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMpCit2b2lkIExlZ2FjeVJvb3RJ
bmxpbmVCb3g6OnNldExpbmVCcmVha0luZm8oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVk
IGJyZWFrUG9zaXRpb24sIGNvbnN0IEJpZGlTdGF0dXMmIHN0YXR1cykKIHsKICAgICBtX2xpbmVC
cmVha09iaiA9IG1ha2VXZWFrUHRyKG9iamVjdCk7CiAgICAgbV9saW5lQnJlYWtQb3MgPSBicmVh
a1Bvc2l0aW9uOwpAQCAtNzI1LDMxICs3MjUsMzEgQEAgdm9pZCBSb290SW5saW5lQm94OjpzZXRM
aW5lQnJlYWtJbmZvKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBicmVha1Bvc2l0aW8K
ICAgICBtX2xpbmVCcmVha0NvbnRleHQgPSBzdGF0dXMuY29udGV4dDsKIH0KIAotRWxsaXBzaXNC
b3gqIFJvb3RJbmxpbmVCb3g6OmVsbGlwc2lzQm94KCkgY29uc3QKK0VsbGlwc2lzQm94KiBMZWdh
Y3lSb290SW5saW5lQm94OjplbGxpcHNpc0JveCgpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNFbGxp
cHNpc0JveCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZ0VsbGlwc2lz
Qm94TWFwLT5nZXQodGhpcyk7CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6cmVtb3ZlTGluZUJv
eEZyb21SZW5kZXJPYmplY3QoKQordm9pZCBMZWdhY3lSb290SW5saW5lQm94OjpyZW1vdmVMaW5l
Qm94RnJvbVJlbmRlck9iamVjdCgpCiB7CiAgICAgLy8gTnVsbCBpZiB3ZSBhcmUgZGVzdHJveWlu
ZyBMZWdhY3lMaW5lTGF5b3V0LgogICAgIGlmIChhdXRvKiBsZWdhY3lMaW5lTGF5b3V0ID0gYmxv
Y2tGbG93KCkubGVnYWN5TGluZUxheW91dCgpKQogICAgICAgICBsZWdhY3lMaW5lTGF5b3V0LT5s
aW5lQm94ZXMoKS5yZW1vdmVMaW5lQm94KHRoaXMpOwogfQogCi12b2lkIFJvb3RJbmxpbmVCb3g6
OmV4dHJhY3RMaW5lQm94RnJvbVJlbmRlck9iamVjdCgpCit2b2lkIExlZ2FjeVJvb3RJbmxpbmVC
b3g6OmV4dHJhY3RMaW5lQm94RnJvbVJlbmRlck9iamVjdCgpCiB7CiAgICAgYmxvY2tGbG93KCku
bGVnYWN5TGluZUxheW91dCgpLT5saW5lQm94ZXMoKS5leHRyYWN0TGluZUJveCh0aGlzKTsKIH0K
IAotdm9pZCBSb290SW5saW5lQm94OjphdHRhY2hMaW5lQm94VG9SZW5kZXJPYmplY3QoKQordm9p
ZCBMZWdhY3lSb290SW5saW5lQm94OjphdHRhY2hMaW5lQm94VG9SZW5kZXJPYmplY3QoKQogewog
ICAgIGJsb2NrRmxvdygpLmxlZ2FjeUxpbmVMYXlvdXQoKS0+bGluZUJveGVzKCkuYXR0YWNoTGlu
ZUJveCh0aGlzKTsKIH0KIAotTGF5b3V0UmVjdCBSb290SW5saW5lQm94OjpwYWRkZWRMYXlvdXRP
dmVyZmxvd1JlY3QoTGF5b3V0VW5pdCBlbmRQYWRkaW5nKSBjb25zdAorTGF5b3V0UmVjdCBMZWdh
Y3lSb290SW5saW5lQm94OjpwYWRkZWRMYXlvdXRPdmVyZmxvd1JlY3QoTGF5b3V0VW5pdCBlbmRQ
YWRkaW5nKSBjb25zdAogewogICAgIExheW91dFJlY3QgbGluZUxheW91dE92ZXJmbG93ID0gbGF5
b3V0T3ZlcmZsb3dSZWN0KGxpbmVUb3AoKSwgbGluZUJvdHRvbSgpKTsKICAgICBpZiAoIWVuZFBh
ZGRpbmcpCkBAIC03ODIsOCArNzgyLDggQEAgc3RhdGljIHZvaWQgc2V0QXNjZW50QW5kRGVzY2Vu
dChMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQsIExheW91dFUKICAgICB9
CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJ
bmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hE
YXRhTWFwLCBMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgYWZmZWN0c0FzY2VudCwg
Ym9vbCYgYWZmZWN0c0Rlc2NlbnQpIGNvbnN0Cit2b2lkIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmFz
Y2VudEFuZERlc2NlbnRGb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gsIEdseXBoT3ZlcmZsb3dB
bmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgTGF5b3V0VW5pdCYgYXNjZW50LCBM
YXlvdXRVbml0JiBkZXNjZW50LAorICAgIGJvb2wmIGFmZmVjdHNBc2NlbnQsIGJvb2wmIGFmZmVj
dHNEZXNjZW50KSBjb25zdAogewogICAgIGJvb2wgYXNjZW50RGVzY2VudFNldCA9IGZhbHNlOwog
CkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50
Rm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94LCBHbHlwaE92ZXJmbG93QW4KICAgICB9CiB9CiAK
LUxheW91dFVuaXQgUm9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChMZWdhY3lJ
bmxpbmVCb3gqIGJveCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2Fj
aGUpCitMYXlvdXRVbml0IExlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JC
b3goTGVnYWN5SW5saW5lQm94KiBib3gsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQ
b3NpdGlvbkNhY2hlKQogewogICAgIGlmIChib3gtPnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJl
YWsoKSkKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoYm94LT5wYXJlbnQoKS0+bG9naWNhbFRv
cCgpKTsKQEAgLTkyNSw3ICs5MjUsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZlcnRp
Y2FsUG9zaXRpb25Gb3JCb3goTGVnYWN5SW5saW5lQm94KiBib3gsIFZlcnRpY2FsUAogICAgIFZl
cnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbiA9IHJlbmRlcmVyLT5zdHlsZSgpLnZlcnRpY2FsQWxp
Z24oKTsKICAgICBpZiAodmVydGljYWxBbGlnbiA9PSBWZXJ0aWNhbEFsaWduOjpUb3AgfHwgdmVy
dGljYWxBbGlnbiA9PSBWZXJ0aWNhbEFsaWduOjpCb3R0b20pCiAgICAgICAgIHJldHVybiAwOwot
ICAgCisKICAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnQgPSByZW5kZXJlci0+cGFyZW50KCk7CiAg
ICAgaWYgKHBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBwYXJlbnQtPnN0eWxlKCkudmVydGlj
YWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OlRvcCAmJiBwYXJlbnQtPnN0eWxlKCkudmVydGlj
YWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJvdHRvbSkKICAgICAgICAgdmVydGljYWxQb3Np
dGlvbiA9IGJveC0+cGFyZW50KCktPmxvZ2ljYWxUb3AoKTsKQEAgLTk1NSw3ICs5NTUsNyBAQCBM
YXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goTGVnYWN5SW5s
aW5lQm94KiBib3gsIFZlcnRpY2FsUAogICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbiArPSAt
cmVuZGVyZXItPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKSAvIDIgKyByZW5k
ZXJlci0+YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUoKSwgZmlyc3RMaW5lLCBsaW5lRGly
ZWN0aW9uKTsKICAgICAgICAgZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PSBWZXJ0aWNhbEFsaWdu
OjpMZW5ndGgpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgbGluZUhlaWdodDsKLSAgICAgICAg
ICAgIC8vUGVyIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNwcm9wZGVm
LXZlcnRpY2FsLWFsaWduOiAnUGVyY2VudGFnZXM6IHJlZmVyIHRvIHRoZSAnbGluZS1oZWlnaHQn
IG9mIHRoZSBlbGVtZW50IGl0c2VsZicuCisgICAgICAgICAgICAvLyBQZXIgaHR0cDovL3d3dy53
My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI3Byb3BkZWYtdmVydGljYWwtYWxpZ246ICdQZXJj
ZW50YWdlczogcmVmZXIgdG8gdGhlICdsaW5lLWhlaWdodCcgb2YgdGhlIGVsZW1lbnQgaXRzZWxm
Jy4KICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52ZXJ0aWNhbEFsaWduTGVuZ3Ro
KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICAgICAgbGluZUhlaWdodCA9
IHJlbmRlcmVyLT5zdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwogICAgICAgICAgICAgZWxz
ZQpAQCAtOTcxLDcgKzk3MSw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6dmVydGljYWxQ
b3NpdGlvbkZvckJveChMZWdhY3lJbmxpbmVCb3gqIGJveCwgVmVydGljYWxQCiAgICAgcmV0dXJu
IHZlcnRpY2FsUG9zaXRpb247CiB9CiAKLWJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUxlYWRp
bmdGb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0Citib29sIExlZ2FjeVJvb3RJbmxp
bmVCb3g6OmluY2x1ZGVMZWFkaW5nRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAog
ewogICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigp
LmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTk4MCw3ICs5ODAsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6Omlu
Y2x1ZGVMZWFkaW5nRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogICAgIHJldHVy
biBsaW5lQm94Q29udGFpbi5jb250YWlucyhMaW5lQm94Q29udGFpbjo6SW5saW5lKSB8fCAoJmJv
eCA9PSB0aGlzICYmIGxpbmVCb3hDb250YWluLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpCbG9j
aykpOwogfQogCi1ib29sIFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVGb250Rm9yQm94KExlZ2FjeUlu
bGluZUJveCYgYm94KSBjb25zdAorYm9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlRm9u
dEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKIHsKICAgICBpZiAoYm94LnJlbmRl
cmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygp
ICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05
OTEsNyArOTkxLDcgQEAgYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlRm9udEZvckJveChMZWdh
Y3lJbmxpbmVCb3gmIGJveCkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLmxp
bmVCb3hDb250YWluKCkuY29udGFpbnMoTGluZUJveENvbnRhaW46OkZvbnQpOwogfQogCi1ib29s
IFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVHbHlwaHNGb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gp
IGNvbnN0Citib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVHbHlwaHNGb3JCb3goTGVn
YWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiB7CiAgICAgaWYgKGJveC5yZW5kZXJlcigpLmlzUmVw
bGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAhYm94LmJl
aGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAwMiw3ICsxMDAy
LDcgQEAgYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94KExlZ2FjeUlubGlu
ZUJveCYgYm94KSBjb25zdAogICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkubGluZUJveENv
bnRhaW4oKS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6R2x5cGhzKTsKIH0KIAotYm9vbCBSb290
SW5saW5lQm94OjppbmNsdWRlSW5pdGlhbExldHRlckZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJv
eCkgY29uc3QKK2Jvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJG
b3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiB7CiAgICAgaWYgKGJveC5yZW5kZXJl
cigpLmlzUmVwbGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAm
JiAhYm94LmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAx
Myw3ICsxMDEzLDcgQEAgYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlSW5pdGlhbExldHRlckZv
ckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyZXIoKS5z
dHlsZSgpLmxpbmVCb3hDb250YWluKCkuY29udGFpbnMoTGluZUJveENvbnRhaW46OkluaXRpYWxM
ZXR0ZXIpOwogfQogCi1ib29sIFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVNYXJnaW5Gb3JCb3goTGVn
YWN5SW5saW5lQm94JiBib3gpIGNvbnN0Citib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1
ZGVNYXJnaW5Gb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiB7CiAgICAgaWYgKGJv
eC5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5l
QnJlYWsoKSAmJiAhYm94LmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTAyMSwxOSArMTAyMSwxOSBAQCBib29sIFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVNYXJn
aW5Gb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVy
KCkuc3R5bGUoKS5saW5lQm94Q29udGFpbigpLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpJbmxp
bmVCb3gpOwogfQogCi1ib29sIFJvb3RJbmxpbmVCb3g6OmZpdHNUb0dseXBocygpIGNvbnN0Citi
b29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmZpdHNUb0dseXBocygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5saW5lQm94Q29udGFpbigpLmNvbnRhaW5zQW55KHsgTGlu
ZUJveENvbnRhaW46OkdseXBocywgTGluZUJveENvbnRhaW46OkluaXRpYWxMZXR0ZXIgfSk7CiB9
CiAKLWJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZXNSb290TGluZUJveEZvbnRPckxlYWRpbmco
KSBjb25zdAorYm9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlc1Jvb3RMaW5lQm94Rm9u
dE9yTGVhZGluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5saW5l
Qm94Q29udGFpbigpLmNvbnRhaW5zQW55KHsgTGluZUJveENvbnRhaW46OkJsb2NrLCBMaW5lQm94
Q29udGFpbjo6SW5saW5lLCBMaW5lQm94Q29udGFpbjo6Rm9udCB9KTsKIH0KIAogI2lmIEVOQUJM
RShUUkVFX0RFQlVHR0lORykKIAotdm9pZCBSb290SW5saW5lQm94OjpvdXRwdXRMaW5lQm94KFdU
Rjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKK3ZvaWQg
TGVnYWN5Um9vdElubGluZUJveDo6b3V0cHV0TGluZUJveChXVEY6OlRleHRTdHJlYW0mIHN0cmVh
bSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNvbnN0CiB7CiAgICAgc3RyZWFtIDw8ICItLS0tLS0t
LSAtLSI7CiAgICAgaW50IHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKQEAgLTEwNDQsNyArMTA0NCw3
IEBAIHZvaWQgUm9vdElubGluZUJveDo6b3V0cHV0TGluZUJveChXVEY6OlRleHRTdHJlYW0mIHN0
cmVhbSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpCiAgICAgTGVnYWN5SW5saW5lQm94OjpvdXRwdXRM
aW5lQm94KHN0cmVhbSwgbWFyaywgZGVwdGgpOwogfQogCi1jb25zdCBjaGFyKiBSb290SW5saW5l
Qm94Ojpib3hOYW1lKCkgY29uc3QKK2NvbnN0IGNoYXIqIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmJv
eE5hbWUoKSBjb25zdAogewogICAgIHJldHVybiAiUm9vdElubGluZUJveCI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guaApzaW1pbGFyaXR5IGluZGV4IDkx
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCnJl
bmFtZSB0byBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5oCmlu
ZGV4IDEwNTVkYzg3ODcxMS4uYTM3NzRiZDAyMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lSb290SW5saW5lQm94LmgKQEAgLTM2LDE4ICszNiwxOCBAQCBjbGFzcyBSZW5kZXJG
cmFnbWVudENvbnRhaW5lcjsKIHN0cnVjdCBCaWRpU3RhdHVzOwogc3RydWN0IEdhcFJlY3RzOwog
Ci1jbGFzcyBSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSb290SW5saW5lQm94PiB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChS
b290SW5saW5lQm94KTsKK2NsYXNzIExlZ2FjeVJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5l
Rmxvd0JveCwgcHVibGljIENhbk1ha2VXZWFrUHRyPExlZ2FjeVJvb3RJbmxpbmVCb3g+IHsKKyAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExlZ2FjeVJvb3RJbmxpbmVCb3gpOwogcHVibGljOgot
ICAgIGV4cGxpY2l0IFJvb3RJbmxpbmVCb3goUmVuZGVyQmxvY2tGbG93Jik7Ci0gICAgdmlydHVh
bCB+Um9vdElubGluZUJveCgpOworICAgIGV4cGxpY2l0IExlZ2FjeVJvb3RJbmxpbmVCb3goUmVu
ZGVyQmxvY2tGbG93Jik7CisgICAgdmlydHVhbCB+TGVnYWN5Um9vdElubGluZUJveCgpOwogCiAg
ICAgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3coKSBjb25zdDsKIAogICAgIHZvaWQgZGV0YWNo
RWxsaXBzaXNCb3goKTsKIAotICAgIFJvb3RJbmxpbmVCb3gqIG5leHRSb290Qm94KCkgY29uc3Q7
Ci0gICAgUm9vdElubGluZUJveCogcHJldlJvb3RCb3goKSBjb25zdDsKKyAgICBMZWdhY3lSb290
SW5saW5lQm94KiBuZXh0Um9vdEJveCgpIGNvbnN0OworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gq
IHByZXZSb290Qm94KCkgY29uc3Q7CiAKICAgICB2b2lkIGFkanVzdFBvc2l0aW9uKGZsb2F0IGR4
LCBmbG9hdCBkeSkgZmluYWw7CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBwcml2YXRlOgogCiAgICAg
TGF5b3V0VW5pdCBiZWZvcmVBbm5vdGF0aW9uc0FkanVzdG1lbnQoKSBjb25zdDsKIAotICAgIC8v
IFdoZXJlIHRoaXMgbGluZSBlbmRlZC4gIFRoZSBleGFjdCBvYmplY3QgYW5kIHRoZSBwb3NpdGlv
biB3aXRoaW4gdGhhdCBvYmplY3QgYXJlIHN0b3JlZCBzbyB0aGF0CisgICAgLy8gV2hlcmUgdGhp
cyBsaW5lIGVuZGVkLiBUaGUgZXhhY3Qgb2JqZWN0IGFuZCB0aGUgcG9zaXRpb24gd2l0aGluIHRo
YXQgb2JqZWN0IGFyZSBzdG9yZWQgc28gdGhhdAogICAgIC8vIHdlIGNhbiBjcmVhdGUgYW4gSW5s
aW5lSXRlcmF0b3IgYmVnaW5uaW5nIGp1c3QgYWZ0ZXIgdGhlIGVuZCBvZiB0aGlzIGxpbmUuCiAg
ICAgV2Vha1B0cjxSZW5kZXJPYmplY3Q+IG1fbGluZUJyZWFrT2JqOwogICAgIFJlZlB0cjxCaWRp
Q29udGV4dD4gbV9saW5lQnJlYWtDb250ZXh0OwpAQCAtMjIyLDE2ICsyMjIsMTYgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2xpbmVCcmVha1BvcyB7IDAgfTsKIH07CiAKLWlubGluZSBSb290
SW5saW5lQm94KiBSb290SW5saW5lQm94OjpuZXh0Um9vdEJveCgpIGNvbnN0CitpbmxpbmUgTGVn
YWN5Um9vdElubGluZUJveCogTGVnYWN5Um9vdElubGluZUJveDo6bmV4dFJvb3RCb3goKSBjb25z
dAogewotICAgIHJldHVybiBkb3duY2FzdDxSb290SW5saW5lQm94PihtX25leHRMaW5lQm94KTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8TGVnYWN5Um9vdElubGluZUJveD4obV9uZXh0TGluZUJveCk7
CiB9CiAKLWlubGluZSBSb290SW5saW5lQm94KiBSb290SW5saW5lQm94OjpwcmV2Um9vdEJveCgp
IGNvbnN0CitpbmxpbmUgTGVnYWN5Um9vdElubGluZUJveCogTGVnYWN5Um9vdElubGluZUJveDo6
cHJldlJvb3RCb3goKSBjb25zdAogewotICAgIHJldHVybiBkb3duY2FzdDxSb290SW5saW5lQm94
PihtX3ByZXZMaW5lQm94KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8TGVnYWN5Um9vdElubGluZUJv
eD4obV9wcmV2TGluZUJveCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19JTkxJTkVfQk9YKFJvb3RJbmxpbmVCb3gsIGlzUm9vdElubGluZUJv
eCgpKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTkxJTkVfQk9YKExlZ2FjeVJvb3RJbmxpbmVC
b3gsIGlzUm9vdElubGluZUJveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggODRjN2E0NjA1YmRkLi5lMjA4NzU3NjU0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtODg0LDcgKzg4NCw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmRpcnR5Rm9yTGF5b3V0RnJvbVBlcmNlbnRhZ2VIZWlnaHREZXNjZW5kYW50cygpCiB2
b2lkIFJlbmRlckJsb2NrOjpzaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpCiB7CiAgICAgaWYg
KGNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgTGlzdEhhc2hTZXQ8Um9vdElubGluZUJveCo+
IGxpbmVCb3hlczsKKyAgICAgICAgTGlzdEhhc2hTZXQ8TGVnYWN5Um9vdElubGluZUJveCo+IGxp
bmVCb3hlczsKICAgICAgICAgZm9yIChJbmxpbmVXYWxrZXIgd2Fsa2VyKCp0aGlzKTsgIXdhbGtl
ci5hdEVuZCgpOyB3YWxrZXIuYWR2YW5jZSgpKSB7CiAgICAgICAgICAgICBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyID0gKndhbGtlci5jdXJyZW50KCk7CiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVy
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIChyZW5kZXJlci5pc1JlcGxhY2VkKCkgfHwgcmVu
ZGVyZXIuaXNGbG9hdGluZygpKSkgewpAQCAtOTAwLDcgKzkwMCw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OnNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCkKICAgICAgICAgLy8gRklYTUU6IEZpbmQg
YSB3YXkgdG8gaW52YWxpZGF0ZSB0aGUga25vd25Ub0hhdmVOb092ZXJmbG93IGZsYWcgb24gdGhl
IElubGluZUJveGVzLgogICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0
ZXh0Qm94RGF0YU1hcDsgICAgICAgICAgICAgICAgICAKICAgICAgICAgZm9yIChhdXRvIGl0ID0g
bGluZUJveGVzLmJlZ2luKCksIGVuZCA9IGxpbmVCb3hlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgICAgICBSb290SW5saW5lQm94KiBib3ggPSAqaXQ7CisgICAgICAgICAgICBM
ZWdhY3lSb290SW5saW5lQm94KiBib3ggPSAqaXQ7CiAgICAgICAgICAgICBib3gtPmNvbXB1dGVP
dmVyZmxvdyhib3gtPmxpbmVUb3AoKSwgYm94LT5saW5lQm90dG9tKCksIHRleHRCb3hEYXRhTWFw
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDcwZmYxYzgwMWZlNy4uMjVmNDI1Y2YxOTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMTY5OSwx
MyArMTY5OSwxMyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0QmxvY2tDaGls
ZEZvclBhZ2luYXRpb24oTGF5b3V0VW5pdCBsb2dpY2FsVG9wQQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBjYWxjdWxhdGVNaW5pbXVtUGFnZUhlaWdo
dChjb25zdCBSZW5kZXJTdHlsZSYgcmVuZGVyU3R5bGUsIFJvb3RJbmxpbmVCb3gmIGxhc3RMaW5l
LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKK3N0YXRpYyBpbmxp
bmUgTGF5b3V0VW5pdCBjYWxjdWxhdGVNaW5pbXVtUGFnZUhlaWdodChjb25zdCBSZW5kZXJTdHls
ZSYgcmVuZGVyU3R5bGUsIExlZ2FjeVJvb3RJbmxpbmVCb3gmIGxhc3RMaW5lLCBMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKICAgICAvLyBXZSBtYXkgcmVxdWly
ZSBhIGNlcnRhaW4gbWluaW11bSBudW1iZXIgb2YgbGluZXMgcGVyIHBhZ2UgaW4gb3JkZXIgdG8g
c2F0aXNmeQogICAgIC8vIG9ycGhhbnMgYW5kIHdpZG93cywgYW5kIHRoYXQgbWF5IGFmZmVjdCB0
aGUgbWluaW11bSBwYWdlIGhlaWdodC4KICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSBzdGQ6Om1h
eDx1bnNpZ25lZD4ocmVuZGVyU3R5bGUuaGFzQXV0b09ycGhhbnMoKSA/IDEgOiByZW5kZXJTdHls
ZS5vcnBoYW5zKCksIHJlbmRlclN0eWxlLmhhc0F1dG9XaWRvd3MoKSA/IDEgOiByZW5kZXJTdHls
ZS53aWRvd3MoKSk7CiAgICAgaWYgKGxpbmVDb3VudCA+IDEpIHsKLSAgICAgICAgUm9vdElubGlu
ZUJveCogbGluZSA9ICZsYXN0TGluZTsKKyAgICAgICAgTGVnYWN5Um9vdElubGluZUJveCogbGlu
ZSA9ICZsYXN0TGluZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGxpbmVDb3Vu
dCAmJiBsaW5lLT5wcmV2Um9vdEJveCgpOyBpKyspCiAgICAgICAgICAgICBsaW5lID0gbGluZS0+
cHJldlJvb3RCb3goKTsKIApAQCAtMTcxNyw3ICsxNzE3LDcgQEAgc3RhdGljIGlubGluZSBMYXlv
dXRVbml0IGNhbGN1bGF0ZU1pbmltdW1QYWdlSGVpZ2h0KGNvbnN0IFJlbmRlclN0eWxlJiByZW5k
ZXJTdHkKICAgICByZXR1cm4gbGluZUJvdHRvbSAtIGxpbmVUb3A7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgYm9vbCBuZWVkc0FwcGxlTWFpbFBhZ2luYXRpb25RdWlyayhSb290SW5saW5lQm94JiBsaW5l
Qm94KQorc3RhdGljIGlubGluZSBib29sIG5lZWRzQXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrKExl
Z2FjeVJvb3RJbmxpbmVCb3gmIGxpbmVCb3gpCiB7CiAgICAgYXV0byYgcmVuZGVyZXIgPSBsaW5l
Qm94LnJlbmRlcmVyKCk7CiAKQEAgLTE3MzgsNyArMTczOCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFy
U2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3dJZk5lZWRlZChSZW5kZXJCbG9ja0Zsb3cmIGJs
b2NrRmxvCiAgICAgYmxvY2tGbG93LnNldERpZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCk7CiB9
CiAKLXZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9u
KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIExheW91dFVuaXQmIGRlbHRhLCBib29sJiBvdmVyZmxv
d3NGcmFnbWVudCwgUmVuZGVyRnJhZ21lbnRlZEZsb3cqIGZyYWdtZW50ZWRGbG93KQordm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmFkanVzdExpbmVQb3NpdGlvbkZvclBhZ2luYXRpb24oTGVnYWN5Um9v
dElubGluZUJveCogbGluZUJveCwgTGF5b3V0VW5pdCYgZGVsdGEsIGJvb2wmIG92ZXJmbG93c0Zy
YWdtZW50LCBSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cpCiB7CiAgICAgLy8g
RklYTUU6IEZvciBub3cgd2UgcGFnaW5hdGUgdXNpbmcgbGluZSBvdmVyZmxvdy4gVGhpcyBlbnN1
cmVzIHRoYXQgbGluZXMgZG9uJ3Qgb3ZlcmxhcCBhdCBhbGwgd2hlbiB3ZQogICAgIC8vIHB1dCBh
IHN0cnV0IGJldHdlZW4gdGhlbSBmb3IgcGFnaW5hdGlvbiBwdXJwb3Nlcy4gSG93ZXZlciwgdGhp
cyByZWFsbHkgaXNuJ3QgdGhlIGRlc2lyZWQgcmVuZGVyaW5nLCBzaW5jZQpAQCAtMjA3OSw3ICsy
MDc5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlkQm94KCkKICAgICAK
ICAgICBzZXRMaW5lR3JpZEJveCgwKTsKIAotICAgIGF1dG8gbGluZUdyaWRCb3ggPSBtYWtlVW5p
cXVlPFJvb3RJbmxpbmVCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGxpbmVHcmlkQm94ID0gbWFrZVVu
aXF1ZTxMZWdhY3lSb290SW5saW5lQm94PigqdGhpcyk7CiAgICAgbGluZUdyaWRCb3gtPnNldEhh
c1RleHRDaGlsZHJlbigpOyAvLyBOZWVkZWQgdG8gbWFrZSB0aGUgbGluZSBhc2NlbnQvZGVzY2Vu
dCBhY3R1YWxseSBiZSBob25vcmVkIGluIHF1aXJrcyBtb2RlLgogICAgIGxpbmVHcmlkQm94LT5z
ZXRDb25zdHJ1Y3RlZCgpOwogICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwIHRl
eHRCb3hEYXRhTWFwOwpAQCAtMzEwNCw3ICszMTA0LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmZpdEJvcmRlclRvTGluZXNJZk5lZWRlZCgpCiAgICAgY2xlYXJPdmVycmlkaW5nTG9naWNhbFdp
ZHRoKCk7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXJrTGluZXNEaXJ0eUluQmxvY2tS
YW5nZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEJvdHRvbSwgUm9v
dElubGluZUJveCogaGlnaGVzdCkKK3ZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXJrTGluZXNEaXJ0
eUluQmxvY2tSYW5nZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEJv
dHRvbSwgTGVnYWN5Um9vdElubGluZUJveCogaGlnaGVzdCkKIHsKICAgICBpZiAobG9naWNhbFRv
cCA+PSBsb2dpY2FsQm90dG9tKQogICAgICAgICByZXR1cm47CkBAIC0zMTE3LDggKzMxMTcsOCBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5b3V0
VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbgogICAgIH0KICNlbmRpZgogCi0gICAgUm9vdElubGlu
ZUJveCogbG93ZXN0RGlydHlMaW5lID0gbGFzdFJvb3RCb3goKTsKLSAgICBSb290SW5saW5lQm94
KiBhZnRlckxvd2VzdCA9IGxvd2VzdERpcnR5TGluZTsKKyAgICBMZWdhY3lSb290SW5saW5lQm94
KiBsb3dlc3REaXJ0eUxpbmUgPSBsYXN0Um9vdEJveCgpOworICAgIExlZ2FjeVJvb3RJbmxpbmVC
b3gqIGFmdGVyTG93ZXN0ID0gbG93ZXN0RGlydHlMaW5lOwogICAgIHdoaWxlIChsb3dlc3REaXJ0
eUxpbmUgJiYgbG93ZXN0RGlydHlMaW5lLT5saW5lQm94Qm90dG9tKCkgPj0gbG9naWNhbEJvdHRv
bSAmJiBsb2dpY2FsQm90dG9tIDwgTGF5b3V0VW5pdDo6bWF4KCkpIHsKICAgICAgICAgYWZ0ZXJM
b3dlc3QgPSBsb3dlc3REaXJ0eUxpbmU7CiAgICAgICAgIGxvd2VzdERpcnR5TGluZSA9IGxvd2Vz
dERpcnR5TGluZS0+cHJldlJvb3RCb3goKTsKQEAgLTMyMzAsNyArMzIzMCw3IEBAIEdhcFJlY3Rz
IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJs
b2NrLCBjb25zdCBMYXlvCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgYXV0
byBoYXNTZWxlY3RlZENoaWxkcmVuID0gWyZdKGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3QpIHsK
KyAgICBhdXRvIGhhc1NlbGVjdGVkQ2hpbGRyZW4gPSBbJl0oY29uc3QgTGVnYWN5Um9vdElubGlu
ZUJveCYgcm9vdCkgewogICAgICAgICBmb3IgKGF1dG8qIGJveCA9IHJvb3QuZmlyc3RMZWFmRGVz
Y2VuZGFudCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExlYWZPbkxpbmUoKSkgewogICAgICAgICAg
ICAgaWYgKCFpczxJbmxpbmVUZXh0Qm94PigqYm94KSkgewogICAgICAgICAgICAgICAgIGlmIChi
b3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gSGlnaGxpZ2h0U3RhdGU6Ok5vbmUpCkBAIC0zMjY1LDgg
KzMyNjUsOCBAQCBHYXBSZWN0cyBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMo
UmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5bwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfTsKIAotICAgIFJvb3RJbmxpbmVCb3gqIGxhc3RTZWxlY3RlZExpbmUgPSAwOwotICAg
IFJvb3RJbmxpbmVCb3gqIGN1cnI7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogbGFzdFNlbGVj
dGVkTGluZSA9IDA7CisgICAgTGVnYWN5Um9vdElubGluZUJveCogY3VycjsKICAgICBmb3IgKGN1
cnIgPSBmaXJzdFJvb3RCb3goKTsgY3VyciAmJiAhaGFzU2VsZWN0ZWRDaGlsZHJlbigqY3Vycik7
IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgpKSB7IH0KIAogICAgIC8vIE5vdyBwYWludCB0aGUg
Z2FwcyBmb3IgdGhlIGxpbmVzLgpAQCAtMzMyNSw4ICszMzI1LDkgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmNsZWFyTXVsdGlDb2x1bW5GbG93KCkKICAgICByYXJlQmxvY2tGbG93RGF0YSgpLT5t
X211bHRpQ29sdW1uRmxvdy5jbGVhcigpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRDaGVja0xp
bmVzKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93KQorYm9vbCBzaG91bGRJbmNsdWRl
TGluZXNGb3JQYXJlbnRMaW5lQ291bnQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3cp
CiB7CisgICAgLy8gRklYTUU6IFRoaXMgdGVzdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2UuCiAg
ICAgcmV0dXJuICFibG9ja0Zsb3cuaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpICYm
IGJsb2NrRmxvdy5zdHlsZSgpLmhlaWdodCgpLmlzQXV0bygpOwogfQogCkBAIC0zMzQ5LDcgKzMz
NTAsNyBAQCBpbnQgUmVuZGVyQmxvY2tGbG93OjpsaW5lQ291bnQoKSBjb25zdAogCiAgICAgaW50
IGNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8mIGJsb2NrRmxvdyA6IGNoaWxkcmVuT2ZUeXBlPFJl
bmRlckJsb2NrRmxvdz4oKnRoaXMpKSB7Ci0gICAgICAgIGlmICghc2hvdWxkQ2hlY2tMaW5lcyhi
bG9ja0Zsb3cpKQorICAgICAgICBpZiAoIXNob3VsZEluY2x1ZGVMaW5lc0ZvclBhcmVudExpbmVD
b3VudChibG9ja0Zsb3cpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvdW50ICs9
IGJsb2NrRmxvdy5saW5lQ291bnQoKTsKICAgICB9CkBAIC0zMzcyLDcgKzMzNzMsNyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6Y2xlYXJUcnVuY2F0aW9uKCkKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGJsb2NrRmxvdyA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlckJsb2NrRmxvdz4oKnRoaXMpKSB7
Ci0gICAgICAgIGlmIChzaG91bGRDaGVja0xpbmVzKGJsb2NrRmxvdykpCisgICAgICAgIGlmIChz
aG91bGRJbmNsdWRlTGluZXNGb3JQYXJlbnRMaW5lQ291bnQoYmxvY2tGbG93KSkKICAgICAgICAg
ICAgIGJsb2NrRmxvdy5jbGVhclRydW5jYXRpb24oKTsKICAgICB9CiB9CkBAIC0zNTczLDcgKzM1
NzQsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29ucwogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFk
ZEZvY3VzUmluZ1JlY3RzRm9ySW5saW5lQ2hpbGRyZW4oVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqKQogewogICAgIEFTU0VSVChjaGlsZHJlbklubGluZSgpKTsKLSAgICBmb3Ig
KFJvb3RJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdFJvb3RCb3goKTsgY3VycjsgY3VyciA9IGN1cnIt
Pm5leHRSb290Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIGN1cnIgPSBmaXJzdFJvb3RCb3goKTsg
Y3VycjsgY3VyciA9IGN1cnItPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCB0
b3AgPSBzdGQ6Om1heChjdXJyLT5saW5lVG9wKCksIExheW91dFVuaXQoY3Vyci0+dG9wKCkpKTsK
ICAgICAgICAgTGF5b3V0VW5pdCBib3R0b20gPSBzdGQ6Om1pbihjdXJyLT5saW5lQm90dG9tKCks
IExheW91dFVuaXQoY3Vyci0+dG9wKCkgKyBjdXJyLT5oZWlnaHQoKSkpOwogICAgICAgICBMYXlv
dXRSZWN0IHJlY3QgeyBMYXlvdXRVbml0KGFkZGl0aW9uYWxPZmZzZXQueCgpICsgY3Vyci0+eCgp
KSwgYWRkaXRpb25hbE9mZnNldC55KCkgKyB0b3AsIExheW91dFVuaXQoY3Vyci0+d2lkdGgoKSks
IGJvdHRvbSAtIHRvcCB9OwpAQCAtMzgyNCw3ICszODI1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6Om91dHB1dExpbmVUcmVlQW5kTWFyayhXVEY6OlRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
TGVnYWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotICAgIGZvciAoY29uc3QgUm9v
dElubGluZUJveCogcm9vdCA9IGZpcnN0Um9vdEJveCgpOyByb290OyByb290ID0gcm9vdC0+bmV4
dFJvb3RCb3goKSkKKyAgICBmb3IgKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIHJvb3QgPSBm
aXJzdFJvb3RCb3goKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm5leHRSb290Qm94KCkpCiAgICAgICAg
IHJvb3QtPm91dHB1dExpbmVUcmVlQW5kTWFyayhzdHJlYW0sIG1hcmtlZEJveCwgZGVwdGgpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5k
ZXggYjhlN2ZkNWY5NjI3Li43Y2MwZmRlZTNiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IAogICAgICAgICBNYXJnaW5WYWx1ZXMgbV9tYXJnaW5zOwogICAgICAgICBpbnQgbV9saW5lQnJl
YWtUb0F2b2lkV2lkb3c7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBt
X2xpbmVHcmlkQm94OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Um9vdElubGluZUJv
eD4gbV9saW5lR3JpZEJveDsKIAogICAgICAgICBXZWFrUHRyPFJlbmRlck11bHRpQ29sdW1uRmxv
dz4gbV9tdWx0aUNvbHVtbkZsb3c7CiAgICAgICAgIApAQCAtMjYyLDggKzI2Miw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGRpZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCkgY29uc3QgeyByZXR1cm4g
aGFzUmFyZUJsb2NrRmxvd0RhdGEoKSAmJiByYXJlQmxvY2tGbG93RGF0YSgpLT5tX2RpZEJyZWFr
QXRMaW5lVG9Bdm9pZFdpZG93OyB9CiAgICAgYm9vbCByZWxheW91dFRvQXZvaWRXaWRvd3MoKTsK
IAotICAgIFJvb3RJbmxpbmVCb3gqIGxpbmVHcmlkQm94KCkgY29uc3QgeyByZXR1cm4gaGFzUmFy
ZUJsb2NrRmxvd0RhdGEoKSA/IHJhcmVCbG9ja0Zsb3dEYXRhKCktPm1fbGluZUdyaWRCb3guZ2V0
KCkgOiBudWxscHRyOyB9Ci0gICAgdm9pZCBzZXRMaW5lR3JpZEJveChzdGQ6OnVuaXF1ZV9wdHI8
Um9vdElubGluZUJveD4gYm94KQorICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVHcmlkQm94
KCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZUJsb2NrRmxvd0RhdGEoKSA/IHJhcmVCbG9ja0Zsb3dE
YXRhKCktPm1fbGluZUdyaWRCb3guZ2V0KCkgOiBudWxscHRyOyB9CisgICAgdm9pZCBzZXRMaW5l
R3JpZEJveChzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Um9vdElubGluZUJveD4gYm94KQogICAgIHsK
ICAgICAgICAgZW5zdXJlUmFyZUJsb2NrRmxvd0RhdGEoKS5tX2xpbmVHcmlkQm94ID0gV1RGTW92
ZShib3gpOwogICAgIH0KQEAgLTMzNyw4ICszMzcsOCBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRQ
b2ludCBmbGlwRmxvYXRGb3JXcml0aW5nTW9kZUZvckNoaWxkKGNvbnN0IEZsb2F0aW5nT2JqZWN0
JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIAotICAgIFJvb3RJbmxpbmVCb3gqIGZpcnN0
Um9vdEJveCgpIGNvbnN0IHsgcmV0dXJuIGxlZ2FjeUxpbmVMYXlvdXQoKSA/IGxlZ2FjeUxpbmVM
YXlvdXQoKS0+Zmlyc3RSb290Qm94KCkgOiBudWxscHRyOyB9Ci0gICAgUm9vdElubGluZUJveCog
bGFzdFJvb3RCb3goKSBjb25zdCB7IHJldHVybiBsZWdhY3lMaW5lTGF5b3V0KCkgPyBsZWdhY3lM
aW5lTGF5b3V0KCktPmxhc3RSb290Qm94KCkgOiBudWxscHRyOyB9CisgICAgTGVnYWN5Um9vdElu
bGluZUJveCogZmlyc3RSb290Qm94KCkgY29uc3QgeyByZXR1cm4gbGVnYWN5TGluZUxheW91dCgp
ID8gbGVnYWN5TGluZUxheW91dCgpLT5maXJzdFJvb3RCb3goKSA6IG51bGxwdHI7IH0KKyAgICBM
ZWdhY3lSb290SW5saW5lQm94KiBsYXN0Um9vdEJveCgpIGNvbnN0IHsgcmV0dXJuIGxlZ2FjeUxp
bmVMYXlvdXQoKSA/IGxlZ2FjeUxpbmVMYXlvdXQoKS0+bGFzdFJvb3RCb3goKSA6IG51bGxwdHI7
IH0KIAogICAgIHZvaWQgc2V0Q2hpbGRyZW5JbmxpbmUoYm9vbCkgZmluYWw7CiAKQEAgLTUyNyw3
ICs1MjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZml0Qm9yZGVyVG9MaW5lc0lmTmVlZGVkKCk7
IC8vIFNocmluayB0aGUgYm94IGluIHdoaWNoIHRoZSBib3JkZXIgcGFpbnRzIGlmIGJvcmRlci1m
aXQgaXMgc2V0LgogICAgIHZvaWQgYWRqdXN0Rm9yQm9yZGVyRml0KExheW91dFVuaXQgeCwgTGF5
b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0OwogCi0gICAgdm9pZCBtYXJr
TGluZXNEaXJ0eUluQmxvY2tSYW5nZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQg
bG9naWNhbEJvdHRvbSwgUm9vdElubGluZUJveCogaGlnaGVzdCA9IDApOworICAgIHZvaWQgbWFy
a0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0
IGxvZ2ljYWxCb3R0b20sIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGhpZ2hlc3QgPSAwKTsKIAogICAg
IEdhcFJlY3RzIGlubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29u
c3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNp
emUmIG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAgICAgIExheW91dFVuaXQmIGxhc3RMb2dpY2Fs
VG9wLCBMYXlvdXRVbml0JiBsYXN0TG9naWNhbExlZnQsIExheW91dFVuaXQmIGxhc3RMb2dpY2Fs
UmlnaHQsIGNvbnN0IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmLCBjb25zdCBQYWludElu
Zm8qKSBvdmVycmlkZTsKQEAgLTU2MCw3ICs1NjAsNyBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAg
ICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBUaGVzZSBjYW4gYmUgbWFkZSBwcm90ZWN0ZWQgYWdhaW4g
b25jZSBhbGwgY2FsbGVycyBoYXZlIGJlZW4gbW92ZWQgaGVyZS4KLSAgICB2b2lkIGFkanVzdExp
bmVQb3NpdGlvbkZvclBhZ2luYXRpb24oUm9vdElubGluZUJveCosIExheW91dFVuaXQmIGRlbHRh
T2Zmc2V0LCBib29sJiBvdmVyZmxvd3NGcmFnbWVudCwgUmVuZGVyRnJhZ21lbnRlZEZsb3cqKTsg
Ly8gQ29tcHV0ZXMgYSBkZWx0YU9mZnNldCB2YWx1ZSB0aGF0IHB1dCBhIGxpbmUgYXQgdGhlIHRv
cCBvZiB0aGUgbmV4dCBwYWdlIGlmIGl0IGRvZXNuJ3QgZml0IG9uIHRoZSBjdXJyZW50IHBhZ2Uu
CisgICAgdm9pZCBhZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKExlZ2FjeVJvb3RJbmxp
bmVCb3gqLCBMYXlvdXRVbml0JiBkZWx0YU9mZnNldCwgYm9vbCYgb3ZlcmZsb3dzRnJhZ21lbnQs
IFJlbmRlckZyYWdtZW50ZWRGbG93Kik7IC8vIENvbXB1dGVzIGEgZGVsdGFPZmZzZXQgdmFsdWUg
dGhhdCBwdXQgYSBsaW5lIGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgcGFnZSBpZiBpdCBkb2Vzbid0
IGZpdCBvbiB0aGUgY3VycmVudCBwYWdlLgogCiAgICAgLy8gUGFnaW5hdGlvbiByb3V0aW5lcy4K
ICAgICBib29sIHJlbGF5b3V0Rm9yUGFnaW5hdGlvbigpOwpAQCAtNjQyLDYgKzY0Miw4IEBAIGlu
bGluZSBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6ZW5kUGFkZGluZ1dpZHRoRm9yQ2FyZXQo
KSBjb25zdAogICAgIHJldHVybiB7IH07CiB9CiAKK2Jvb2wgc2hvdWxkSW5jbHVkZUxpbmVzRm9y
UGFyZW50TGluZUNvdW50KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJC
bG9ja0Zsb3csIGlzUmVuZGVyQmxvY2tGbG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IDZhYmFhYTdhMzU4Zi4uNjgzNGYyMzhjNGU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OnBvc2l0aW9uTGluZUJveChJbmxpbmVFbGVtZW50Qm94JiBib3gpCiAgICAgICAgICAg
ICAvLyBUaGUgdmFsdWUgaXMgY2FjaGVkIGluIHRoZSB4UG9zIG9mIHRoZSBib3guICBXZSBvbmx5
IG5lZWQgdGhpcyB2YWx1ZSBpZgogICAgICAgICAgICAgLy8gb3VyIG9iamVjdCB3YXMgaW5saW5l
IG9yaWdpbmFsbHksIHNpbmNlIG90aGVyd2lzZSBpdCB3b3VsZCBoYXZlIGVuZGVkIHVwIHVuZGVy
bmVhdGgKICAgICAgICAgICAgIC8vIHRoZSBpbmxpbmVzLgotICAgICAgICAgICAgUm9vdElubGlu
ZUJveCYgcm9vdEJveCA9IGJveC5yb290KCk7CisgICAgICAgICAgICBMZWdhY3lSb290SW5saW5l
Qm94JiByb290Qm94ID0gYm94LnJvb3QoKTsKICAgICAgICAgICAgIHJvb3RCb3guYmxvY2tGbG93
KCkuc2V0U3RhdGljSW5saW5lUG9zaXRpb25Gb3JDaGlsZCgqdGhpcywgcm9vdEJveC5saW5lQm94
VG9wKCksIExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKGJveC5sb2dpY2FsTGVmdCgpKSk7CiAg
ICAgICAgICAgICBpZiAoc3R5bGUoKS5oYXNTdGF0aWNJbmxpbmVQb3NpdGlvbihib3guaXNIb3Jp
em9udGFsKCkpKQogICAgICAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlU
aGlzKTsgLy8gSnVzdCBtYXJrIHRoZSBwb3NpdGlvbmVkIG9iamVjdCBhcyBuZWVkaW5nIGxheW91
dCwgc28gaXQgd2lsbCB1cGRhdGUgaXRzIHBvc2l0aW9uIHByb3Blcmx5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZDZhZDY4
ZDUzMTViLi44MjIyMDM5ZDk2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNzA3LDcgKzcwNyw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNr
SW1hZ2UsIGNvbnN0CiAgICAgLy8gSW5saW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91bGQganVz
dCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCiAgICAgUGFpbnRJbmZvIGluZm8obWFz
a0ltYWdlQ29udGV4dCwgbWFza1JlY3QsIFBhaW50UGhhc2U6OlRleHRDbGlwLCBQYWludEJlaGF2
aW9yOjpGb3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKGJveCkgewotICAgICAgICBjb25zdCBSb290
SW5saW5lQm94JiByb290Qm94ID0gYm94LT5yb290KCk7CisgICAgICAgIGNvbnN0IExlZ2FjeVJv
b3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKICAgICAgICAgYm94LT5wYWludChp
bmZvLCBMYXlvdXRQb2ludChzY3JvbGxlZFBhaW50UmVjdC54KCkgLSBib3gtPngoKSwgc2Nyb2xs
ZWRQYWludFJlY3QueSgpIC0gYm94LT55KCkpLCByb290Qm94LmxpbmVUb3AoKSwgcm9vdEJveC5s
aW5lQm90dG9tKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExheW91dFNpemUgbG9jYWxPZmZz
ZXQgPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpLmxv
Y2F0aW9uT2Zmc2V0KCkgOiBMYXlvdXRTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDc5ZGQw
MzViZWVmMi4uN2UxOGZmMGE2ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtOTM3LDEyICs5Mzcs
NyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3go
Ym9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICBzZXRIZWlnaHQob2xkSGVpZ2h0KTsKIH0K
IAotc3RhdGljIGJvb2wgc2hvdWxkQ2hlY2tMaW5lcyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJs
b2NrRmxvdykKLXsKLSAgICByZXR1cm4gIWJsb2NrRmxvdy5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgJiYgYmxvY2tGbG93LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCk7Ci19Ci0K
LXN0YXRpYyBSb290SW5saW5lQm94KiBsaW5lQXRJbmRleChjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3csIGludCBpKQorc3RhdGljIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVBdEluZGV4KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgaW50IGkpCiB7CiAgICAgQVNTRVJUKGkgPj0gMCk7
CiAKQEAgLTk1OCw5ICs5NTMsOSBAQCBzdGF0aWMgUm9vdElubGluZUJveCogbGluZUF0SW5kZXgo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBpbnQgaSkKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGJsb2NrRmxvdyA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlckJsb2NrRmxvdz4oZmxvdykpIHsK
LSAgICAgICAgaWYgKCFzaG91bGRDaGVja0xpbmVzKGJsb2NrRmxvdykpCisgICAgICAgIGlmICgh
c2hvdWxkSW5jbHVkZUxpbmVzRm9yUGFyZW50TGluZUNvdW50KGJsb2NrRmxvdykpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKFJvb3RJbmxpbmVCb3gqIGJveCA9IGxpbmVBdElu
ZGV4KGJsb2NrRmxvdywgaSkpCisgICAgICAgIGlmIChMZWdhY3lSb290SW5saW5lQm94KiBib3gg
PSBsaW5lQXRJbmRleChibG9ja0Zsb3csIGkpKQogICAgICAgICAgICAgcmV0dXJuIGJveDsKICAg
ICB9CiAKQEAgLTk4MCw3ICs5NzUsNyBAQCBzdGF0aWMgaW50IGdldEhlaWdodEZvckxpbmVDb3Vu
dChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBpbnQgbGluZUNvdW50LCBibwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIFJlbmRlckJveCogbm9ybWFsRmxvd0NoaWxkV2l0aG91dExpbmVzID0g
bnVsbHB0cjsKICAgICAgICAgZm9yIChhdXRvKiBvYmogPSBibG9jay5maXJzdENoaWxkQm94KCk7
IG9iajsgb2JqID0gb2JqLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgICAgICBpZiAoaXM8
UmVuZGVyQmxvY2tGbG93Pigqb2JqKSAmJiBzaG91bGRDaGVja0xpbmVzKGRvd25jYXN0PFJlbmRl
ckJsb2NrRmxvdz4oKm9iaikpKSB7CisgICAgICAgICAgICBpZiAoaXM8UmVuZGVyQmxvY2tGbG93
Pigqb2JqKSAmJiBzaG91bGRJbmNsdWRlTGluZXNGb3JQYXJlbnRMaW5lQ291bnQoZG93bmNhc3Q8
UmVuZGVyQmxvY2tGbG93Pigqb2JqKSkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0g
Z2V0SGVpZ2h0Rm9yTGluZUNvdW50KGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKm9iaiksIGxp
bmVDb3VudCwgZmFsc2UsIGNvdW50KTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IC0x
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgb2JqLT55KCkgKyAoaW5jbHVk
ZUJvdHRvbSA/IChibG9jay5ib3JkZXJCb3R0b20oKSArIGJsb2NrLnBhZGRpbmdCb3R0b20oKSkg
OiAwX2x1KTsKQEAgLTEwNTIsMTEgKzEwNDcsMTEgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVyYXRvciYgaXRlcmF0b3IsIGJvb2wK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIEdldCB0aGUgbGFzdCBsaW5lCi0g
ICAgICAgIFJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lID0gbGluZUF0SW5kZXgoYmxvY2tDaGlsZCwg
bGluZUNvdW50IC0gMSk7CisgICAgICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lID0g
bGluZUF0SW5kZXgoYmxvY2tDaGlsZCwgbGluZUNvdW50IC0gMSk7CiAgICAgICAgIGlmICghbGFz
dExpbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBSb290SW5saW5lQm94KiBs
YXN0VmlzaWJsZUxpbmUgPSBsaW5lQXRJbmRleChibG9ja0NoaWxkLCBudW1WaXNpYmxlTGluZXMg
LSAxKTsKKyAgICAgICAgTGVnYWN5Um9vdElubGluZUJveCogbGFzdFZpc2libGVMaW5lID0gbGlu
ZUF0SW5kZXgoYmxvY2tDaGlsZCwgbnVtVmlzaWJsZUxpbmVzIC0gMSk7CiAgICAgICAgIGlmICgh
bGFzdFZpc2libGVMaW5lIHx8ICFsYXN0VmlzaWJsZUxpbmUtPmZpcnN0Q2hpbGQoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCA0MmRjMTkyMDUzYmYuLmRkZDcwMzM4MGJjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
CkBAIC03NjQsNyArNzY0LDcgQEAgYm9vbCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y2hlY2tMaW5l
c0NvbnNpc3RlbmN5KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcmVtb3ZlZEIKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBmb3IgKGF1dG8mIGxpbmVQYWlyIDogKm1fbGluZVRvRnJhZ21lbnRN
YXAuZ2V0KCkpIHsKLSAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogbGluZSA9IGxpbmVQYWly
LmtleTsKKyAgICAgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCogbGluZSA9IGxpbmVQYWly
LmtleTsKICAgICAgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50ID0gbGluZVBh
aXIudmFsdWU7CiAgICAgICAgIGlmICgmbGluZS0+YmxvY2tGbG93KCkgPT0gJnJlbW92ZWRCbG9j
aykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmgKaW5kZXggYjczYmUyYjFiMGU0Li40OTE1ZjdlMmZl
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVk
Rmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxv
dy5oCkBAIC00MSwxMSArNDEsMTEgQEAgY2xhc3MgQ3VycmVudFJlbmRlckZyYWdtZW50Q29udGFp
bmVyTWFpbnRhaW5lcjsKIGNsYXNzIFJlbmRlckZyYWdtZW50ZWRGbG93OwogY2xhc3MgUmVuZGVy
U3R5bGU7CiBjbGFzcyBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjsKLWNsYXNzIFJvb3RJbmxpbmVC
b3g7CitjbGFzcyBMZWdhY3lSb290SW5saW5lQm94OwogCiB0eXBlZGVmIExpc3RIYXNoU2V0PFJl
bmRlckZyYWdtZW50Q29udGFpbmVyKj4gUmVuZGVyRnJhZ21lbnRDb250YWluZXJMaXN0OwogdHlw
ZWRlZiBWZWN0b3I8UmVuZGVyTGF5ZXIqPiBSZW5kZXJMYXllckxpc3Q7Ci10eXBlZGVmIEhhc2hN
YXA8Y29uc3QgUm9vdElubGluZUJveCosIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKj4gQ29udGFp
bmluZ0ZyYWdtZW50TWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVC
b3gqLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lcio+IENvbnRhaW5pbmdGcmFnbWVudE1hcDsKIAog
Ly8gUmVuZGVyRnJhZ21lbnRlZEZsb3cgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0aGUgcmVuZGVy
IG9iamVjdHMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBhCiAvLyBmbG93IHRocmVhZC4gSXQgd2lsbCBh
bHNvIGhlbHAgaW4gZG9pbmcgdGhlIGxheW91dC4gSG93ZXZlciwgaXQgd2lsbCBub3QgcmVuZGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDBhZjBlNTZm
NzI3NC4uMmUxZDAyYjhhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpnZW5lcmF0ZUN1
bGxlZExpbmVCb3hSZWN0cyhHZW5lcmF0b3JDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSCiAgICAg
ICAgIGlmIChpczxSZW5kZXJCb3g+KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBhdXRvJiByZW5k
ZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGN1cnJlbnQpOwogICAgICAgICAgICAgaWYgKHJl
bmRlckJveC5pbmxpbmVCb3hXcmFwcGVyKCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBSb290
SW5saW5lQm94JiByb290Qm94ID0gcmVuZGVyQm94LmlubGluZUJveFdyYXBwZXIoKS0+cm9vdCgp
OworICAgICAgICAgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBy
ZW5kZXJCb3guaW5saW5lQm94V3JhcHBlcigpLT5yb290KCk7CiAgICAgICAgICAgICAgICAgY29u
c3QgUmVuZGVyU3R5bGUmIGNvbnRhaW5lclN0eWxlID0gcm9vdEJveC5pc0ZpcnN0TGluZSgpID8g
Y29udGFpbmVyLT5maXJzdExpbmVTdHlsZSgpIDogY29udGFpbmVyLT5zdHlsZSgpOwogICAgICAg
ICAgICAgICAgIGludCBsb2dpY2FsVG9wID0gcm9vdEJveC5sb2dpY2FsVG9wKCkgKyAocm9vdEJv
eC5saW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSBjb250
YWluZXJTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpOwogICAgICAg
ICAgICAgICAgIGludCBsb2dpY2FsSGVpZ2h0ID0gY29udGFpbmVyU3R5bGUuZm9udENhc2NhZGUo
KS5mb250TWV0cmljcygpLmhlaWdodCgpOwpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVuZGVy
SW5saW5lOjpnZW5lcmF0ZUN1bGxlZExpbmVCb3hSZWN0cyhHZW5lcmF0b3JDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBSCiAgICAgICAgICAgICAgICAgcmVuZGVySW5saW5lLmdlbmVyYXRlQ3VsbGVk
TGluZUJveFJlY3RzKGNvbnRleHQsIGNvbnRhaW5lcik7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGNoaWxkTGluZSA9IHJlbmRlcklubGlu
ZS5maXJzdExpbmVCb3goKTsgY2hpbGRMaW5lOyBjaGlsZExpbmUgPSBjaGlsZExpbmUtPm5leHRM
aW5lQm94KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9v
dEJveCA9IGNoaWxkTGluZS0+cm9vdCgpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94JiByb290Qm94ID0gY2hpbGRMaW5lLT5yb290KCk7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjb250YWluZXJTdHlsZSA9IHJvb3RCb3guaXNG
aXJzdExpbmUoKSA/IGNvbnRhaW5lci0+Zmlyc3RMaW5lU3R5bGUoKSA6IGNvbnRhaW5lci0+c3R5
bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxUb3AgPSByb290Qm94LmxvZ2lj
YWxUb3AoKSArIChyb290Qm94LmxpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3Mo
KS5hc2NlbnQoKSAtIGNvbnRhaW5lclN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5h
c2NlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGludCBsb2dpY2FsSGVpZ2h0ID0gY29udGFp
bmVyU3R5bGUuZm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6Z2VuZXJhdGVDdWxsZWRMaW5lQm94UmVjdHMoR2VuZXJhdG9yQ29udGV4
dCYgY29udGV4dCwgY29uc3QgUgogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KGN1
cnJlbnQpKSB7CiAgICAgICAgICAgICBhdXRvJiBjdXJyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRl
eHQ+KGN1cnJlbnQpOwogICAgICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBjaGlsZFRleHQg
PSBjdXJyVGV4dC5maXJzdFRleHRCb3goKTsgY2hpbGRUZXh0OyBjaGlsZFRleHQgPSBjaGlsZFRl
eHQtPm5leHRUZXh0Qm94KCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBSb290SW5saW5lQm94
JiByb290Qm94ID0gY2hpbGRUZXh0LT5yb290KCk7CisgICAgICAgICAgICAgICAgY29uc3QgTGVn
YWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IGNoaWxkVGV4dC0+cm9vdCgpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjb250YWluZXJTdHlsZSA9IHJvb3RCb3guaXNGaXJz
dExpbmUoKSA/IGNvbnRhaW5lci0+Zmlyc3RMaW5lU3R5bGUoKSA6IGNvbnRhaW5lci0+c3R5bGUo
KTsKICAgICAgICAgICAgICAgICBpbnQgbG9naWNhbFRvcCA9IHJvb3RCb3gubG9naWNhbFRvcCgp
ICsgKHJvb3RCb3gubGluZVN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmFzY2Vu
dCgpIC0gY29udGFpbmVyU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmFzY2VudCgp
KTsKICAgICAgICAgICAgICAgICBpbnQgbG9naWNhbEhlaWdodCA9IGNvbnRhaW5lclN0eWxlLmZv
bnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2
b2lkIFJlbmRlcklubGluZTo6Z2VuZXJhdGVDdWxsZWRMaW5lQm94UmVjdHMoR2VuZXJhdG9yQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgUgogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlckxpbmVC
cmVhaz4oY3VycmVudCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBpbmxpbmVCb3ggPSBkb3du
Y2FzdDxSZW5kZXJMaW5lQnJlYWs+KGN1cnJlbnQpLmlubGluZUJveFdyYXBwZXIoKSkgewogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIHVzZSBhIGhlbHBlciB0byBzaGFyZSB0
aGVzZSB3aXRoIHRleHQgcGF0aC4KLSAgICAgICAgICAgICAgICBjb25zdCBSb290SW5saW5lQm94
JiByb290Qm94ID0gaW5saW5lQm94LT5yb290KCk7CisgICAgICAgICAgICAgICAgY29uc3QgTGVn
YWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGluZUJveC0+cm9vdCgpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjb250YWluZXJTdHlsZSA9IHJvb3RCb3guaXNGaXJz
dExpbmUoKSA/IGNvbnRhaW5lci0+Zmlyc3RMaW5lU3R5bGUoKSA6IGNvbnRhaW5lci0+c3R5bGUo
KTsKICAgICAgICAgICAgICAgICBpbnQgbG9naWNhbFRvcCA9IHJvb3RCb3gubG9naWNhbFRvcCgp
ICsgKHJvb3RCb3gubGluZVN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmFzY2Vu
dCgpIC0gY29udGFpbmVyU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmFzY2VudCgp
KTsKICAgICAgICAgICAgICAgICBpbnQgbG9naWNhbEhlaWdodCA9IGNvbnRhaW5lclN0eWxlLmZv
bnRNZXRyaWNzKCkuaGVpZ2h0KCk7CkBAIC03OTIsOCArNzkyLDggQEAgTGF5b3V0UmVjdCBSZW5k
ZXJJbmxpbmU6OmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgICAg
IGxvZ2ljYWxSaWdodFNpZGUgPSBzdGQ6Om1heChsb2dpY2FsUmlnaHRTaWRlLCBjdXJyLT5sb2dp
Y2FsUmlnaHRWaXN1YWxPdmVyZmxvdygpKTsKICAgICB9CiAKLSAgICBjb25zdCBSb290SW5saW5l
Qm94JiBmaXJzdFJvb3RCb3ggPSBmaXJzdExpbmVCb3goKS0+cm9vdCgpOwotICAgIGNvbnN0IFJv
b3RJbmxpbmVCb3gmIGxhc3RSb290Qm94ID0gbGFzdExpbmVCb3goKS0+cm9vdCgpOworICAgIGNv
bnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIGZpcnN0Um9vdEJveCA9IGZpcnN0TGluZUJveCgpLT5y
b290KCk7CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgbGFzdFJvb3RCb3ggPSBsYXN0
TGluZUJveCgpLT5yb290KCk7CiAgICAgCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wID0gZmly
c3RMaW5lQm94KCktPmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyhmaXJzdFJvb3RCb3gubGluZVRv
cCgpKTsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdodFNpZGUgLSBs
b2dpY2FsTGVmdFNpZGU7CkBAIC04MjAsNyArODIwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxp
bmU6OmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveEluRnJhZ21lbnQoY29uc3QgUmVuZGVy
RnIKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQ7CiAgICAgSW5saW5lRmxvd0JveCogbGFz
dElubGluZUluRnJhZ21lbnQgPSAwOwogICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IGZp
cnN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgewotICAgICAg
ICBjb25zdCBSb290SW5saW5lQm94JiByb290ID0gY3Vyci0+cm9vdCgpOworICAgICAgICBjb25z
dCBMZWdhY3lSb290SW5saW5lQm94JiByb290ID0gY3Vyci0+cm9vdCgpOwogICAgICAgICBpZiAo
cm9vdC5jb250YWluaW5nRnJhZ21lbnQoKSAhPSBmcmFnbWVudCkgewogICAgICAgICAgICAgaWYg
KGxhc3RJbmxpbmVJbkZyYWdtZW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI3Myw3
ICsxMjczLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBWZWN0b3I8TGF5b3V0UmVj
dD4gcmVjdHM7CiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoKSk7CiAgICAgZm9yIChJbmxp
bmVGbG93Qm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0
TGluZUJveCgpKSB7Ci0gICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBjdXJy
LT5yb290KCk7CisgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBj
dXJyLT5yb290KCk7CiAgICAgICAgIExheW91dFVuaXQgdG9wID0gc3RkOjptYXgocm9vdEJveC5s
aW5lVG9wKCksIExheW91dFVuaXQoY3Vyci0+bG9naWNhbFRvcCgpKSk7CiAgICAgICAgIExheW91
dFVuaXQgYm90dG9tID0gc3RkOjptaW4ocm9vdEJveC5saW5lQm90dG9tKCksIExheW91dFVuaXQo
Y3Vyci0+bG9naWNhbEJvdHRvbSgpKSk7CiAgICAgICAgIHJlY3RzLmFwcGVuZCh7IExheW91dFVu
aXQoY3Vyci0+eCgpKSwgdG9wLCBMYXlvdXRVbml0KGN1cnItPmxvZ2ljYWxXaWR0aCgpKSwgYm90
dG9tIC0gdG9wIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGI0MGQwYjg5MWQyNC4uN2EwZmZhOTI1Mjhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgogCisjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiRGVidWdQYWdlT3ZlcmxheXMuaCIKICNpbmNsdWRlICJEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCmluZGV4IDNkYzNmZjQyNjk3Ni4uNzEw
MmY2MzJmYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94
TGlzdC5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
ICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgorI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJQYWludEluZm8u
aCIKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUu
aCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
Ci0jaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTE4Niw4ICsxODYsOCBAQCBib29sIFJlbmRlckxpbmVCb3hMaXN0OjphbnlMaW5lSW50ZXJzZWN0
c1JlY3QoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyLCBjbwogICAgIC8vIGludGVyc2Vj
dC4gIFRoaXMgaXMgYSBxdWljayBzaG9ydC1jaXJjdWl0IHRoYXQgd2UgY2FuIHRha2UgdG8gYXZv
aWQgd2Fsa2luZyBhbnkgbGluZXMuCiAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgZmxhd2Vk
IGluIHRoZSBmb2xsb3dpbmcgZXh0cmVtZWx5IG9ic2N1cmUgd2F5OgogICAgIC8vIGlmIHNvbWUg
bGluZSBpbiB0aGUgbWlkZGxlIGhhcyBhIGh1Z2Ugb3ZlcmZsb3csIGl0IG1pZ2h0IGFjdHVhbGx5
IGV4dGVuZCBiZWxvdyB0aGUgbGFzdCBsaW5lLgotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIGZp
cnN0Um9vdEJveCA9IGZpcnN0TGluZUJveCgpLT5yb290KCk7Ci0gICAgY29uc3QgUm9vdElubGlu
ZUJveCYgbGFzdFJvb3RCb3ggPSBsYXN0TGluZUJveCgpLT5yb290KCk7CisgICAgY29uc3QgTGVn
YWN5Um9vdElubGluZUJveCYgZmlyc3RSb290Qm94ID0gZmlyc3RMaW5lQm94KCktPnJvb3QoKTsK
KyAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiBsYXN0Um9vdEJveCA9IGxhc3RMaW5lQm94
KCktPnJvb3QoKTsKICAgICBMYXlvdXRVbml0IGZpcnN0TGluZVRvcCA9IGZpcnN0TGluZUJveCgp
LT5sb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3coZmlyc3RSb290Qm94LmxpbmVUb3AoKSk7CiAgICAg
aWYgKHVzZVByaW50UmVjdCAmJiAhZmlyc3RMaW5lQm94KCktPnBhcmVudCgpKQogICAgICAgICBm
aXJzdExpbmVUb3AgPSBzdGQ6Om1pbihmaXJzdExpbmVUb3AsIGZpcnN0Um9vdEJveC5saW5lVG9w
KCkpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIGJvb2wgUmVuZGVyTGluZUJveExpc3Q6OmFueUxpbmVJ
bnRlcnNlY3RzUmVjdChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIsIGNvCiAKIGJvb2wg
UmVuZGVyTGluZUJveExpc3Q6OmxpbmVJbnRlcnNlY3RzRGlydHlSZWN0KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZW5kZXJlciwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIG9mZnNldCkgY29uc3QKIHsKLSAgICBjb25zdCBS
b290SW5saW5lQm94JiByb290Qm94ID0gYm94LT5yb290KCk7CisgICAgY29uc3QgTGVnYWN5Um9v
dElubGluZUJveCYgcm9vdEJveCA9IGJveC0+cm9vdCgpOwogICAgIExheW91dFVuaXQgbG9naWNh
bFRvcCA9IHN0ZDo6bWluKGJveC0+bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KHJvb3RCb3gubGlu
ZVRvcCgpKSwgcm9vdEJveC5zZWxlY3Rpb25Ub3AoKSk7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
Qm90dG9tID0gYm94LT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cocm9vdEJveC5saW5lQm90
dG9tKCkpOwogICAgIHJldHVybiByYW5nZUludGVyc2VjdHNSZWN0KHJlbmRlcmVyLCBsb2dpY2Fs
VG9wLCBsb2dpY2FsQm90dG9tLCBwYWludEluZm8ucmVjdCwgb2Zmc2V0KTsKQEAgLTIzMiw3ICsy
MzIsNyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVuZGVyZXIsIFBhaW50SW5mbyYgcGFpbnRJbgogICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgdGhlIGRlcHJlY2F0ZWQgcGFnaW5hdGlvbiBtb2RlbCB0aGF0IGlzIHN0aWxsIG5lZWRl
ZAogICAgICAgICAgICAgLy8gZm9yIGVtYmVkZGVkIHZpZXdzIGluc2lkZSBBcHBLaXQuICBBcHBL
aXQgaXMgaW5jYXBhYmxlIG9mIHBhZ2luYXRpbmcgdmVydGljYWwKICAgICAgICAgICAgIC8vIHRl
eHQgcGFnZXMsIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVhbCB3aXRoIHZlcnRpY2FsIGxpbmVzIGF0
IGFsbCBoZXJlLgotICAgICAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGN1
cnItPnJvb3QoKTsKKyAgICAgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RC
b3ggPSBjdXJyLT5yb290KCk7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHRvcEZvclBhZ2luYXRp
b25DaGVjayA9IGN1cnItPmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyhyb290Qm94LmxpbmVUb3Ao
KSk7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayA9IGN1
cnItPmxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIGlmICghY3Vyci0+
cGFyZW50KCkpIHsKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0Ojpw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIsIFBhaW50SW5mbyYgcGFpbnRJbgog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayAt
IHRvcEZvclBhZ2luYXRpb25DaGVjayA8PSB2LnByaW50UmVjdCgpLmhlaWdodCgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGJvdHRvbUZvclBhZ2luYXRpb25DaGVj
ayA+IHYucHJpbnRSZWN0KCkubWF4WSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChSb290
SW5saW5lQm94KiBuZXh0Um9vdEJveCA9IHJvb3RCb3gubmV4dFJvb3RCb3goKSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKExlZ2FjeVJvb3RJbmxpbmVCb3gqIG5leHRSb290Qm94ID0gcm9vdEJv
eC5uZXh0Um9vdEJveCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tRm9yUGFnaW5h
dGlvbkNoZWNrID0gc3RkOjptaW4oYm90dG9tRm9yUGFnaW5hdGlvbkNoZWNrLCBzdGQ6Om1pbjxM
YXlvdXRVbml0PihuZXh0Um9vdEJveC0+bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KCksIG5leHRS
b290Qm94LT5saW5lVG9wKCkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
aWYgKHBhaW50T2Zmc2V0LnkoKSArIGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayA+IHYucHJpbnRS
ZWN0KCkubWF4WSgpKSB7CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlz
dDo6cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyLCBQYWludEluZm8mIHBhaW50
SW4KICAgICAgICAgfQogCiAgICAgICAgIGlmIChsaW5lSW50ZXJzZWN0c0RpcnR5UmVjdChyZW5k
ZXJlciwgY3VyciwgaW5mbywgcGFpbnRPZmZzZXQpKSB7Ci0gICAgICAgICAgICBjb25zdCBSb290
SW5saW5lQm94JiByb290Qm94ID0gY3Vyci0+cm9vdCgpOworICAgICAgICAgICAgY29uc3QgTGVn
YWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IGN1cnItPnJvb3QoKTsKICAgICAgICAgICAgIGN1
cnItPnBhaW50KGluZm8sIHBhaW50T2Zmc2V0LCByb290Qm94LmxpbmVUb3AoKSwgcm9vdEJveC5s
aW5lQm90dG9tKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIGJvb2wg
UmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVy
LCBjb25zdCBIaXRUZXN0UmVxCiAgICAgLy8gdGhlbSBmdXJ0aGVyLiAgTm90ZSB0aGF0IGJveGVz
IGNhbiBlYXNpbHkgb3ZlcmxhcCwgc28gd2UgY2FuJ3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMKICAg
ICAvLyBiYXNlZCBvZmYgcG9zaXRpb25zIG9mIG91ciBmaXJzdCBsaW5lIGJveCBvciBvdXIgbGFz
dCBsaW5lIGJveC4KICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBsYXN0TGluZUJveCgp
OyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkgewotICAgICAgICBjb25zdCBSb290
SW5saW5lQm94JiByb290Qm94ID0gY3Vyci0+cm9vdCgpOworICAgICAgICBjb25zdCBMZWdhY3lS
b290SW5saW5lQm94JiByb290Qm94ID0gY3Vyci0+cm9vdCgpOwogICAgICAgICBpZiAocmFuZ2VJ
bnRlcnNlY3RzUmVjdChyZW5kZXJlciwgY3Vyci0+bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KHJv
b3RCb3gubGluZVRvcCgpKSwgY3Vyci0+bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KHJvb3RC
b3gubGluZUJvdHRvbSgpKSwgcmVjdCwgYWNjdW11bGF0ZWRPZmZzZXQpKSB7CiAgICAgICAgICAg
ICBib29sIGluc2lkZSA9IGN1cnItPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRp
b25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIHJvb3RCb3gubGluZVRvcCgpLCByb290
Qm94LmxpbmVCb3R0b20oKSwgaGl0VGVzdEFjdGlvbik7CiAgICAgICAgICAgICBpZiAoaW5zaWRl
KSB7CkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5l
c0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QmIGNvbnRhaW4KICAgICAvLyBU
cnkgdG8gZmlndXJlIG91dCB3aGljaCBsaW5lIGJveCB3ZSBiZWxvbmcgaW4uIEZpcnN0IHRyeSB0
byBmaW5kIGEgcHJldmlvdXMKICAgICAvLyBsaW5lIGJveCBieSBleGFtaW5pbmcgb3VyIHNpYmxp
bmdzLiBJZiB3ZSBkaWRuJ3QgZmluZCBhIGxpbmUgYm94LCB0aGVuIHVzZSBvdXIKICAgICAvLyBw
YXJlbnQncyBmaXJzdCBsaW5lIGJveC4KLSAgICBSb290SW5saW5lQm94KiBib3ggPSBudWxscHRy
OworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gqIGJveCA9IG51bGxwdHI7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBjdXJyZW50OwogICAgIGZvciAoY3VycmVudCA9IGNoaWxkLnByZXZpb3VzU2libGluZygp
OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAg
ICAgaWYgKGN1cnJlbnQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTM3
NywxMiArMzc3LDEyIEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hh
bmdlZENoaWxkKFJlbmRlckJveE1vZGVsT2JqZWN0JiBjb250YWluCiAgICAgICAgIC8vIGNhbGxz
IHNldExpbmVCcmVha0luZm8gd2l0aCB0aGUgcmVzdWx0IG9mIGZpbmROZXh0TGluZUJyZWFrLiBm
aW5kTmV4dExpbmVCcmVhaywKICAgICAgICAgLy8gZGVzcGl0ZSB0aGUgbmFtZSwgYWN0dWFsbHkg
cmV0dXJucyB0aGUgZmlyc3QgUmVuZGVyT2JqZWN0IGFmdGVyIHRoZSBCUi4KICAgICAgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzM4NDk5NDc+ICJUeXBpbmcgYWZ0ZXIgcGFzdGluZyBsaW5lIGRvZXMg
bm90IGFwcGVhciB1bnRpbCBhZnRlciB3aW5kb3cgcmVzaXplLiIKLSAgICAgICAgaWYgKFJvb3RJ
bmxpbmVCb3gqIHByZXZCb3ggPSBib3gtPnByZXZSb290Qm94KCkpCisgICAgICAgIGlmIChMZWdh
Y3lSb290SW5saW5lQm94KiBwcmV2Qm94ID0gYm94LT5wcmV2Um9vdEJveCgpKQogICAgICAgICAg
ICAgcHJldkJveC0+bWFya0RpcnR5KCk7CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4n
dCBuZWVkIHRvIGFsd2F5cyBkaXJ0eSB0aGUgbmV4dCBsaW5lLiBUaGlzIGlzIG9ubHkgc3RyaWN0
bHkgCiAgICAgICAgIC8vIG5lY2Vzc2FyeSBzb21lIG9mIHRoZSB0aW1lLCBpbiBzaXR1YXRpb25z
IGludm9sdmluZyBCUnMuCi0gICAgICAgIGlmIChSb290SW5saW5lQm94KiBuZXh0Qm94ID0gYm94
LT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAgIGlmIChMZWdhY3lSb290SW5saW5lQm94KiBuZXh0
Qm94ID0gYm94LT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgICAgICBuZXh0Qm94LT5tYXJrRGly
dHkoKTsKICAgICAgICAgICAgIC8vIERlZGljYXRlZCBsaW5lYm94IGZvciBmbG9hdHMgbWF5IGJl
IGFkZGVkIGFzIHRoZSBsYXN0IHJvb3Rib3guIElmIHRoaXMgb2NjdXJzIHdpdGggQlJzIGluc2lk
ZSBpbmxpbmVzIHRoYXQgcHJvcGFndGUgdGhlaXIgbGluZWJveGVzIHRvCiAgICAgICAgICAgICAv
LyB0aGUgcGFyZW50IGZsb3csIHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBpdCBleHBsaWNpdGx5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCBjMTg3
NGUyMTllMTcuLjg1NmI4MThiMTA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5jcHAKQEAgLTMwLDEwICszMCwxMCBAQAogI2luY2x1ZGUgIklubGluZVJ1
bkFuZE9mZnNldC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgorI2luY2x1ZGUgIkxl
Z2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2Fj
aGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
Ci0jaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlNWR0lubGluZVRleHRCb3gu
aCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCmluZGV4IDI0MWQyYWVjMjVmZi4uMjExMzg4MTRlMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTI2LDcgKzExMjYsNyBAQCBM
YXlvdXRSZWN0IFJlbmRlckxpc3RNYXJrZXI6OmxvY2FsU2VsZWN0aW9uUmVjdCgpCiAgICAgTGVn
YWN5SW5saW5lQm94KiBib3ggPSBpbmxpbmVCb3hXcmFwcGVyKCk7CiAgICAgaWYgKCFib3gpCiAg
ICAgICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KCksIHNpemUoKSk7Ci0gICAgY29u
c3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IG1faW5saW5lQm94V3JhcHBlci0+cm9vdCgpOwor
ICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBtX2lubGluZUJveFdyYXBw
ZXItPnJvb3QoKTsKICAgICBMYXlvdXRVbml0IG5ld0xvZ2ljYWxUb3AgeyByb290Qm94LmJsb2Nr
RmxvdygpLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IG1faW5saW5lQm94
V3JhcHBlci0+bG9naWNhbEJvdHRvbSgpIC0gcm9vdEJveC5zZWxlY3Rpb25Cb3R0b20oKSA6IHJv
b3RCb3guc2VsZWN0aW9uVG9wKCkgLSBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxUb3AoKSB9
OwogICAgIGlmIChyb290Qm94LmJsb2NrRmxvdygpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoMF9sdSwgbmV3TG9naWNhbFRvcCwg
d2lkdGgoKSwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHQoKSk7CkBAIC0xMzY1LDcgKzEzNjUsNyBA
QCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmFkZE92ZXJmbG93RnJvbUxpc3RNYXJrZXIoKQogICAg
IExheW91dFVuaXQgbWFya2VyTG9naWNhbExlZnQ7CiAgICAgYm9vbCBoaXRTZWxmUGFpbnRpbmdM
YXllciA9IGZhbHNlOwogCi0gICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGlu
ZUJveFdyYXBwZXIoKS0+cm9vdCgpOworICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJv
b3RCb3ggPSBpbmxpbmVCb3hXcmFwcGVyKCktPnJvb3QoKTsKICAgICBMYXlvdXRVbml0IGxpbmVU
b3AgPSByb290Qm94LmxpbmVUb3AoKTsKICAgICBMYXlvdXRVbml0IGxpbmVCb3R0b20gPSByb290
Qm94LmxpbmVCb3R0b20oKTsKIApAQCAtMTk1Nyw3ICsxOTU3LDcgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWMKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSA9PSBIaWdobGlnaHRTdGF0ZTo6Tm9u
ZSB8fCAhaW5saW5lQm94V3JhcHBlcigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwog
Ci0gICAgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGluZUJveFdyYXBwZXIoKS0+cm9vdCgp
OworICAgIExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBpbmxpbmVCb3hXcmFwcGVyKCkt
PnJvb3QoKTsKICAgICBMYXlvdXRSZWN0IHJlY3QoMF9sdSwgcm9vdEJveC5zZWxlY3Rpb25Ub3Ao
KSAtIHkoKSwgd2lkdGgoKSwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAgICAgICAg
ICAKICAgICBpZiAoY2xpcFRvVmlzaWJsZUNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCAyOGNjMmUwMWFhMTguLjVmYTkzZDI3NThjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0zMDIs
NyArMzAyLDcgQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICBMYXlvdXRVbml0IHRvcCA9
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdmlzdWFsT3ZlcmZsb3dSZWN0KCkueSgpOwogICAg
IExheW91dFVuaXQgYm90dG9tID0gYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB2aXN1YWxPdmVy
Zmxvd1JlY3QoKS5tYXhZKCk7CiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiBtX2lubGluZUJveFdy
YXBwZXIpIHsKLSAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IG1faW5saW5l
Qm94V3JhcHBlci0+cm9vdCgpOworICAgICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiBy
b290Qm94ID0gbV9pbmxpbmVCb3hXcmFwcGVyLT5yb290KCk7CiAgICAgICAgIExheW91dFVuaXQg
c2VsVG9wID0gcGFpbnRPZmZzZXQueSgpICsgcm9vdEJveC5zZWxlY3Rpb25Ub3AoKTsKICAgICAg
ICAgTGF5b3V0VW5pdCBzZWxCb3R0b20gPSBwYWludE9mZnNldC55KCkgKyBzZWxUb3AgKyByb290
Qm94LnNlbGVjdGlvbkhlaWdodCgpOwogICAgICAgICB0b3AgPSBzdGQ6Om1pbihzZWxUb3AsIHRv
cCk7CkBAIC03MzMsNyArNzMzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6bG9jYWxT
ZWxlY3Rpb25SZWN0KGJvb2wgY2hlY2tXaGV0aGVyU2VsZWN0ZWQpIGNvbnN0CiAgICAgICAgIC8v
IFdlJ3JlIGEgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudC4gIEp1c3QgcmV0dXJuIG91ciBv
d24gZGltZW5zaW9ucy4KICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoKSwg
c2l6ZSgpKTsKICAgICAKLSAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gbV9pbmxp
bmVCb3hXcmFwcGVyLT5yb290KCk7CisgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9v
dEJveCA9IG1faW5saW5lQm94V3JhcHBlci0+cm9vdCgpOwogICAgIExheW91dFVuaXQgbmV3TG9n
aWNhbFRvcCB7IHJvb3RCb3guYmxvY2tGbG93KCkuc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0
aW5nTW9kZSgpID8gbV9pbmxpbmVCb3hXcmFwcGVyLT5sb2dpY2FsQm90dG9tKCkgLSByb290Qm94
LnNlbGVjdGlvbkJvdHRvbSgpIDogcm9vdEJveC5zZWxlY3Rpb25Ub3AoKSAtIG1faW5saW5lQm94
V3JhcHBlci0+bG9naWNhbFRvcCgpIH07CiAgICAgaWYgKHJvb3RCb3guYmxvY2tGbG93KCkuc3R5
bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVj
dCgwX2x1LCBuZXdMb2dpY2FsVG9wLCB3aWR0aCgpLCByb290Qm94LnNlbGVjdGlvbkhlaWdodCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAppbmRleCA1YWNk
MjcwM2QxNzEuLjBhMjgxYWE3NmYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5UnVuLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVuZGVyUnVieVJ1bjo6bGF5
b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQpCiAg
ICAgLy8gUGxhY2UgdGhlIFJlbmRlclJ1YnlUZXh0IHN1Y2ggdGhhdCBpdHMgYm90dG9tIGlzIGZs
dXNoIHdpdGggdGhlIGxpbmVUb3Agb2YgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIFJlbmRlclJ1YnlC
YXNlLgogICAgIExheW91dFVuaXQgbGFzdExpbmVSdWJ5VGV4dEJvdHRvbSA9IHJ0LT5sb2dpY2Fs
SGVpZ2h0KCk7CiAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVSdWJ5VGV4dFRvcDsKLSAgICBSb290
SW5saW5lQm94KiByb290Qm94ID0gcnQtPmxhc3RSb290Qm94KCk7CisgICAgTGVnYWN5Um9vdElu
bGluZUJveCogcm9vdEJveCA9IHJ0LT5sYXN0Um9vdEJveCgpOwogICAgIGlmIChyb290Qm94KSB7
CiAgICAgICAgIC8vIEluIG9yZGVyIHRvIGFsaWduLCB3ZSBoYXZlIHRvIGlnbm9yZSBuZWdhdGl2
ZSBsZWFkaW5nLgogICAgICAgICBmaXJzdExpbmVSdWJ5VGV4dFRvcCA9IHJ0LT5maXJzdFJvb3RC
b3goKS0+bG9naWNhbFRvcExheW91dE92ZXJmbG93KCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9p
ZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91
dFVuaXQgcGFnZUhlaWdodCkKICAgICAgICAgaWYgKFJlbmRlclJ1YnlCYXNlKiByYiA9IHJ1YnlC
YXNlKCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgZmlyc3RMaW5lVG9wOwogICAgICAgICAg
ICAgTGF5b3V0VW5pdCBsYXN0TGluZUJvdHRvbSA9IGxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAg
ICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSByYi0+Zmlyc3RSb290Qm94KCk7CisgICAgICAg
ICAgICBMZWdhY3lSb290SW5saW5lQm94KiByb290Qm94ID0gcmItPmZpcnN0Um9vdEJveCgpOwog
ICAgICAgICAgICAgaWYgKHJvb3RCb3gpCiAgICAgICAgICAgICAgICAgZmlyc3RMaW5lVG9wID0g
cm9vdEJveC0+bG9naWNhbFRvcExheW91dE92ZXJmbG93KCk7CiAgICAgICAgICAgICBmaXJzdExp
bmVUb3AgKz0gcmItPmxvZ2ljYWxUb3AoKTsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFJlbmRl
clJ1YnlSdW46OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBw
YWdlSGVpZ2h0KQogICAgIH0gZWxzZSBpZiAoc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdN
b2RlKCkgPT0gKHN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpBZnRlcikp
IHsKICAgICAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVUb3A7CiAgICAgICAgIGlmIChSZW5kZXJS
dWJ5QmFzZSogcmIgPSBydWJ5QmFzZSgpKSB7Ci0gICAgICAgICAgICBSb290SW5saW5lQm94KiBy
b290Qm94ID0gcmItPmZpcnN0Um9vdEJveCgpOworICAgICAgICAgICAgTGVnYWN5Um9vdElubGlu
ZUJveCogcm9vdEJveCA9IHJiLT5maXJzdFJvb3RCb3goKTsKICAgICAgICAgICAgIGlmIChyb290
Qm94KQogICAgICAgICAgICAgICAgIGZpcnN0TGluZVRvcCA9IHJvb3RCb3gtPmxvZ2ljYWxUb3BM
YXlvdXRPdmVyZmxvdygpOwogICAgICAgICAgICAgZmlyc3RMaW5lVG9wICs9IHJiLT5sb2dpY2Fs
VG9wKCk7CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9j
ayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUhlaWdodCkKICAgICB9IGVs
c2UgewogICAgICAgICBMYXlvdXRVbml0IGxhc3RMaW5lQm90dG9tID0gbG9naWNhbEhlaWdodCgp
OwogICAgICAgICBpZiAoUmVuZGVyUnVieUJhc2UqIHJiID0gcnVieUJhc2UoKSkgewotICAgICAg
ICAgICAgUm9vdElubGluZUJveCogcm9vdEJveCA9IHJiLT5sYXN0Um9vdEJveCgpOworICAgICAg
ICAgICAgTGVnYWN5Um9vdElubGluZUJveCogcm9vdEJveCA9IHJiLT5sYXN0Um9vdEJveCgpOwog
ICAgICAgICAgICAgaWYgKHJvb3RCb3gpCiAgICAgICAgICAgICAgICAgbGFzdExpbmVCb3R0b20g
PSByb290Qm94LT5sb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3coKTsKICAgICAgICAgICAgIGxh
c3RMaW5lQm90dG9tICs9IHJiLT5sb2dpY2FsVG9wKCk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9p
ZCBSZW5kZXJSdWJ5UnVuOjpnZXRPdmVyaGFuZyhib29sIGZpcnN0TGluZSwgUmVuZGVyT2JqZWN0
KiBzdGFydFJlbmRlcmVyLCBSZW4KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IHRoaXMt
PmxvZ2ljYWxXaWR0aCgpOwogICAgIGZsb2F0IGxvZ2ljYWxMZWZ0T3ZlcmhhbmcgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7CiAgICAgZmxvYXQgbG9naWNhbFJpZ2h0T3Zlcmhh
bmcgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7Ci0gICAgZm9yIChSb290SW5s
aW5lQm94KiByb290SW5saW5lQm94ID0gcnVieUJhc2UtPmZpcnN0Um9vdEJveCgpOyByb290SW5s
aW5lQm94OyByb290SW5saW5lQm94ID0gcm9vdElubGluZUJveC0+bmV4dFJvb3RCb3goKSkgewor
ICAgIGZvciAoYXV0byogcm9vdElubGluZUJveCA9IHJ1YnlCYXNlLT5maXJzdFJvb3RCb3goKTsg
cm9vdElubGluZUJveDsgcm9vdElubGluZUJveCA9IHJvb3RJbmxpbmVCb3gtPm5leHRSb290Qm94
KCkpIHsKICAgICAgICAgbG9naWNhbExlZnRPdmVyaGFuZyA9IHN0ZDo6bWluPGZsb2F0Pihsb2dp
Y2FsTGVmdE92ZXJoYW5nLCByb290SW5saW5lQm94LT5sb2dpY2FsTGVmdCgpKTsKICAgICAgICAg
bG9naWNhbFJpZ2h0T3ZlcmhhbmcgPSBzdGQ6Om1pbjxmbG9hdD4obG9naWNhbFJpZ2h0T3Zlcmhh
bmcsIGxvZ2ljYWxXaWR0aCAtIHJvb3RJbmxpbmVCb3gtPmxvZ2ljYWxSaWdodCgpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAK
aW5kZXggMjYzYzRmNDhkYzFkLi5hYmI0M2UzMGQyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKQEAgLTI4LDEwICsyOCwxMCBAQAog
CiAjaW5jbHVkZSAiRWxsaXBzaXNCb3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisj
aW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5j
bHVkZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNzgsOCArMTc4LDggQEAgdm9pZCBSZW5kZXJUZXh0TGlu
ZUJveGVzOjpkaXJ0eUFsbCgpCiAKIGJvb2wgUmVuZGVyVGV4dExpbmVCb3hlczo6ZGlydHlSYW5n
ZShSZW5kZXJUZXh0JiByZW5kZXJlciwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgaW50
IGxlbmd0aERlbHRhKQogewotICAgIFJvb3RJbmxpbmVCb3gqIGZpcnN0Um9vdEJveCA9IG51bGxw
dHI7Ci0gICAgUm9vdElubGluZUJveCogbGFzdFJvb3RCb3ggPSBudWxscHRyOworICAgIExlZ2Fj
eVJvb3RJbmxpbmVCb3gqIGZpcnN0Um9vdEJveCA9IG51bGxwdHI7CisgICAgTGVnYWN5Um9vdElu
bGluZUJveCogbGFzdFJvb3RCb3ggPSBudWxscHRyOwogCiAgICAgLy8gRGlydHkgYWxsIHRleHQg
Ym94ZXMgdGhhdCBpbmNsdWRlIGNoYXJhY3RlcnMgaW4gYmV0d2VlbiBvZmZzZXQgYW5kIG9mZnNl
dCtsZW4uCiAgICAgYm9vbCBkaXJ0aWVkTGluZXMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaAppbmRleCBl
ZTUxNjZiYTQxZjguLmY5NzAzOWFjNTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaApAQCAtMjUsMTUgKzI1LDE1
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1
ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3ggZmluYWwgOiBwdWJsaWMgUm9vdElubGluZUJv
eCB7CitjbGFzcyBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3ggZmluYWwgOiBwdWJsaWMgTGVn
YWN5Um9vdElubGluZUJveCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUcmFpbGluZ0Zs
b2F0c1Jvb3RJbmxpbmVCb3gpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRyYWlsaW5nRmxvYXRz
Um9vdElubGluZUJveChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdykKLSAgICAgICAgOiBSb290
SW5saW5lQm94KGJsb2NrRmxvdykKKyAgICAgICAgOiBMZWdhY3lSb290SW5saW5lQm94KGJsb2Nr
RmxvdykKICAgICB7CiAgICAgICAgIHNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0U3RhdGUuaApp
bmRleCBkMDY4OWI0ODFmNTcuLmRjNDc1MDM0ZWYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFN0YXRlLmgKQEAgLTExNiw4ICsxMTYsOCBAQCBwdWJs
aWM6CiAgICAgTGF5b3V0VW5pdCBlbmRMaW5lTG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5kTGluZUxvZ2ljYWxUb3A7IH0KICAgICB2b2lkIHNldEVuZExpbmVMb2dpY2FsVG9wKExheW91
dFVuaXQgbG9naWNhbFRvcCkgeyBtX2VuZExpbmVMb2dpY2FsVG9wID0gbG9naWNhbFRvcDsgfQog
Ci0gICAgUm9vdElubGluZUJveCogZW5kTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kTGluZTsg
fQotICAgIHZvaWQgc2V0RW5kTGluZShSb290SW5saW5lQm94KiBsaW5lKSB7IG1fZW5kTGluZSA9
IGxpbmU7IH0KKyAgICBMZWdhY3lSb290SW5saW5lQm94KiBlbmRMaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9lbmRMaW5lOyB9CisgICAgdm9pZCBzZXRFbmRMaW5lKExlZ2FjeVJvb3RJbmxpbmVCb3gq
IGxpbmUpIHsgbV9lbmRMaW5lID0gbGluZTsgfQogCiAgICAgTGF5b3V0VW5pdCBhZGp1c3RlZExv
Z2ljYWxMaW5lVG9wKCkgY29uc3QgeyByZXR1cm4gbV9hZGp1c3RlZExvZ2ljYWxMaW5lVG9wOyB9
CiAgICAgdm9pZCBzZXRBZGp1c3RlZExvZ2ljYWxMaW5lVG9wKExheW91dFVuaXQgdmFsdWUpIHsg
bV9hZGp1c3RlZExvZ2ljYWxMaW5lVG9wID0gdmFsdWU7IH0KQEAgLTE0Miw3ICsxNDIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fcmVwYWludExvZ2ljYWxUb3AgPSBtX3JlcGFpbnRMb2dpY2FsQm90
dG9tID0gbG9naWNhbEhlaWdodDsKICAgICB9CiAKLSAgICB2b2lkIHVwZGF0ZVJlcGFpbnRSYW5n
ZUZyb21Cb3goUm9vdElubGluZUJveCogYm94LCBMYXlvdXRVbml0IHBhZ2luYXRpb25EZWx0YSA9
IDBfbHUpCisgICAgdm9pZCB1cGRhdGVSZXBhaW50UmFuZ2VGcm9tQm94KExlZ2FjeVJvb3RJbmxp
bmVCb3gqIGJveCwgTGF5b3V0VW5pdCBwYWdpbmF0aW9uRGVsdGEgPSAwX2x1KQogICAgIHsKICAg
ICAgICAgbV91c2VzUmVwYWludEJvdW5kcyA9IHRydWU7CiAgICAgICAgIG1fcmVwYWludExvZ2lj
YWxUb3AgPSBzdGQ6Om1pbihtX3JlcGFpbnRMb2dpY2FsVG9wLCBib3gtPmxvZ2ljYWxUb3BWaXN1
YWxPdmVyZmxvdygpICsgc3RkOjptaW48TGF5b3V0VW5pdD4ocGFnaW5hdGlvbkRlbHRhLCAwKSk7
CkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBMaW5lSW5mbyBtX2xp
bmVJbmZvOwogICAgIExheW91dFVuaXQgbV9lbmRMaW5lTG9naWNhbFRvcDsKLSAgICBSb290SW5s
aW5lQm94KiBtX2VuZExpbmUgeyBudWxscHRyIH07CisgICAgTGVnYWN5Um9vdElubGluZUJveCog
bV9lbmRMaW5lIHsgbnVsbHB0ciB9OwogCiAgICAgTGF5b3V0VW5pdCBtX2FkanVzdGVkTG9naWNh
bExpbmVUb3A7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggMTk1MmFmMWFmOTNmLi5lZDhmMjBmOTg1YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suY3BwCkBAIC05OCw3ICs5OCw3IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6
Om1pcnJvcklmTmVlZGVkKExheW91dFVuaXQgaG9yaXpvbnRhbE9mZnNldCwgTGF5b3V0CiBMYXlv
dXRVbml0IFJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBtYXRo
bWwuY3NzIHNldHMgbWF0aCB7IC13ZWJraXQtbGluZS1ib3gtY29udGFpbjogZ2x5cGhzIHJlcGxh
Y2VkOyBsaW5lLWhlaWdodDogMDsgfSwgc28gd2hlbiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0
aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyB3ZSB3YW50IHRvCi0gICAgLy8gcmV0dXJuIDAgaGVyZSB0
byBtYXRjaCBvdXIgbGluZS1oZWlnaHQuIFRoaXMgbWF0dGVycyB3aGVuIFJvb3RJbmxpbmVCb3g6
OmFzY2VudEFuZERlc2NlbnRGb3JCb3ggaXMgY2FsbGVkIG9uIGEgUm9vdElubGluZUJveCBmb3Ig
YW4gaW5saW5lLWJsb2NrLgorICAgIC8vIHJldHVybiAwIGhlcmUgdG8gbWF0Y2ggb3VyIGxpbmUt
aGVpZ2h0LiBUaGlzIG1hdHRlcnMgd2hlbiBMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmRE
ZXNjZW50Rm9yQm94IGlzIGNhbGxlZCBvbiBhIFJvb3RJbmxpbmVCb3ggZm9yIGFuIGlubGluZS1i
bG9jay4KICAgICBpZiAobGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9mSW50ZXJpb3JMaW5l
Qm94ZXMpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBkMGQyYjQwNWRjZDguLmJlMzJhM2U4NjE0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBA
IC00NTgsNyArNDU4LDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXQKIAogVmlzaWJsZVBvc2l0
aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50SW5Db250ZW50cywgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50KQog
ewotICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBmaXJzdFJvb3RCb3goKTsKKyAgICBMZWdh
Y3lSb290SW5saW5lQm94KiByb290Qm94ID0gZmlyc3RSb290Qm94KCk7CiAgICAgaWYgKCFyb290
Qm94KQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpE
b3duc3RyZWFtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9v
dElubGluZUJveC5jcHAKaW5kZXggYTA2M2Y5YzA0YTc1Li4yZGNiMThiZDRjYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcApAQCAt
MzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoU1ZHUm9vdElubGluZUJveCk7CiAKIFNWR1Jvb3RJbmxpbmVCb3g6OlNWR1Jvb3RJbmxp
bmVCb3goUmVuZGVyU1ZHVGV4dCYgcmVuZGVyU1ZHVGV4dCkKLSAgICA6IFJvb3RJbmxpbmVCb3go
cmVuZGVyU1ZHVGV4dCkKKyAgICA6IExlZ2FjeVJvb3RJbmxpbmVCb3gocmVuZGVyU1ZHVGV4dCkK
ICAgICAsIG1fbG9naWNhbEhlaWdodCgwKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRleCBjYjczM2NhNjlhNDEuLjJiMzA4YTBk
ZjhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5s
aW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5l
Qm94LmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJSb290
SW5saW5lQm94LmgiCisjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUg
IlNWR1RleHRMYXlvdXRFbmdpbmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzAsNyAr
MzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJTVkdUZXh0OwogY2xhc3Mg
U1ZHSW5saW5lVGV4dEJveDsKIAotY2xhc3MgU1ZHUm9vdElubGluZUJveCBmaW5hbCA6IHB1Ymxp
YyBSb290SW5saW5lQm94IHsKK2NsYXNzIFNWR1Jvb3RJbmxpbmVCb3ggZmluYWwgOiBwdWJsaWMg
TGVnYWN5Um9vdElubGluZUJveCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTVkdSb290
SW5saW5lQm94KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTVkdSb290SW5saW5lQm94KFJlbmRl
clNWR1RleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3Bw
CmluZGV4IDExODhhMTMxMDc2Yy4uZWY0OWIzY2U0YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgotI2luY2x1ZGUgIlJv
b3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVk
ZSAiVGV4dFVuZGVybGluZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Niw3
ICs2Niw3IEBAIGZsb2F0IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0
aW9uIHVuZGVybGluZVBvc2l0aW9uLCBUZXh0VW5kZXJsCiAgICAgY2FzZSBUZXh0VW5kZXJsaW5l
UG9zaXRpb246OlVuZGVyOiB7CiAgICAgICAgIEFTU0VSVChpbmxpbmVUZXh0Qm94KTsKICAgICAg
ICAgLy8gUG9zaXRpb24gdW5kZXJsaW5lIHJlbGF0aXZlIHRvIHRoZSBib3R0b20gZWRnZSBvZiB0
aGUgbG93ZXN0IGVsZW1lbnQncyBjb250ZW50IGJveC4KLSAgICAgICAgY29uc3QgUm9vdElubGlu
ZUJveCYgcm9vdEJveCA9IGlubGluZVRleHRCb3gtPnJvb3QoKTsKKyAgICAgICAgY29uc3QgTGVn
YWN5Um9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGluZVRleHRCb3gtPnJvb3QoKTsKICAgICAg
ICAgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyID0gaW5saW5lVGV4dEJv
eC0+cGFyZW50KCktPnJlbmRlcmVyKCkuZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRp
b24oVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgaW5saW5lVGV4dEJveC0+aXNGaXJzdExpbmUo
KSk7CiAgICAgICAgIAogICAgICAgICBmbG9hdCBvZmZzZXQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>