<?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>221987</bug_id>
          
          <creation_ts>2021-02-16 12:15:14 -0800</creation_ts>
          <short_desc>Plumb an Optional&lt;PageIdentifier&gt; through Pasteboard-related codepaths</short_desc>
          <delta_ts>2021-02-18 08:58:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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>
          
          <blocked>222071</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>annulen</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1729861</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-16 12:15:14 -0800</bug_when>
    <thetext>Plumb an Optional&lt;PageIdentifier&gt; through Pasteboard-related codepaths — importantly, without the Pasteboard class knowing explicitly about the PageIdentifier.

We&apos;ll need some kind of base class like PasteboardContext that Pasteboard passes around as an opaque object, with a derived class (e.g. PagePasteboardContext) that actually knows about the page identifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730439</commentid>
    <comment_count>1</comment_count>
      <attachid>420692</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-17 12:19:02 -0800</bug_when>
    <thetext>Created attachment 420692
For EWS only</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730453</commentid>
    <comment_count>2</comment_count>
      <attachid>420694</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-17 12:38:19 -0800</bug_when>
    <thetext>Created attachment 420694
For EWS only (fix GTK)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730491</commentid>
    <comment_count>3</comment_count>
      <attachid>420704</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-17 13:24:32 -0800</bug_when>
    <thetext>Created attachment 420704
Fix GTK build again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730584</commentid>
    <comment_count>4</comment_count>
      <attachid>420732</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-17 15:23:06 -0800</bug_when>
    <thetext>Created attachment 420732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730875</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-18 08:57:52 -0800</bug_when>
    <thetext>Committed r273077: &lt;https://commits.webkit.org/r273077&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730876</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-18 08:58:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/74479898&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420692</attachid>
            <date>2021-02-17 12:19:02 -0800</date>
            <delta_ts>2021-02-17 12:38:17 -0800</delta_ts>
            <desc>For EWS only</desc>
            <filename>bug-221987-20210217121901.patch</filename>
            <type>text/plain</type>
            <size>77333</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5NzdiZDI2MWIxNWY4
OTk4NDM4NWQ2MTRhMzQ4YzdhMGFkZTJmOS4uYTY0OWNmY2RkYmQyOWFkMTUzYWUzZTRjNmE4OGU1
YjRlY2E4ZDEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTAyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBsdW1iIGFuIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFBhc3RlYm9hcmQtcmVsYXRlZCBjb2RlcGF0
aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsg
aW4gcHJvZ3Jlc3Mgb25seS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZDo6cmVhZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjp3cml0
ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZDo6SXRlbVdyaXRlcjo6SXRlbVdyaXRlcik6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKToK
KyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDbGlwYm9hcmRFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBlcmZvcm1DdXRPckNvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpwYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFp
blRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzUXVvdGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvcHlJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUdsb2JhbFNlbGVjdGlvbik6CisgICAgICAgICog
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBs
YWNlTm9kZUZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y29weVRl
eHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpjb3B5VGV4dCk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZy
YWdtZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJh
Z09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxE
cmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBw
YWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OkRyYWdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjcmVhdGVQYXN0ZWJv
YXJkQ29udGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6cGFnZUlEIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQ6OmlzUGFnZVBhc3RlYm9hcmRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6
OlN0YXRpY1Bhc3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNhblNtYXJ0UmVwbGFjZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JHbG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRl
Rm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFz
dGVib2FyZCk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW21hY09TXSBJbnRyb2R1Y2UgYSBuZXcgY29udGV4dCBtZW51IGl0
ZW0gdG8gcHJldmlldyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzE5YTA5YWRhZWUyZjQ3OWFhY2NjOTBj
ZDgzZmI3ZWNlNDllODkzOC4uNzgzMzQ2NzkwZWUyNjU0YjdlZDA4NWFkN2E5NGM4NDA3YTIzMGRj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBhdGhzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNz
IG9ubHkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRy
YWdnaW5nRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdEYXRhRm9yRHJvcFNlc3Npb246ZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkVkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xp
ZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1l
bnQpOgorCiAyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFttYWNPU10gSW50cm9kdWNlIGEgbmV3IGNvbnRleHQgbWVudSBpdGVtIHRv
IHByZXZpZXcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggODY4NTFmNDQw
MTU1OWYyY2VkZDE0NTA5MDQ4MzI0YmY3NzM2YTBkOC4uNmIzOTdjNzRjMWM4ZTBjYzdmMWYyNjM1
OTQ1YjZkODlmNGY1ZmY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFBsdW1iIGFuIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFBh
c3RlYm9hcmQtcmVsYXRlZCBjb2RlcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3Mgb25seS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorCiAyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gSW50cm9kdWNlIGEgbmV3
IGNvbnRleHQgbWVudSBpdGVtIHRvIHByZXZpZXcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBiMzNhMzY5MTdiYTIyNGJkZGY2MmQ2MDU3NTA0MGQyZDdlYzk2Yzk4Li5mZDU4NjhmYmU0MTFl
OGUyODgxMjVkZTgxNGFiNWFiMDFmYmUzMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTg5Nyw2
ICs4OTcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGFn
ZS9QYWdlSWRlbnRpZmllci5oCiAgICAgcGFnZS9QYWdlT3ZlcmxheS5oCiAgICAgcGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuaAorICAgIHBhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgKICAg
ICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCiAgICAgcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQuaAogICAgIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgKQEAgLTEwNDMsNiAr
MTA0NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaAogICAgIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oCiAg
ICAgcGxhdGZvcm0vUGFzdGVib2FyZC5oCisgICAgcGxhdGZvcm0vUGFzdGVib2FyZENvbnRleHQu
aAogICAgIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKICAgICBwbGF0Zm9ybS9QYXN0
ZWJvYXJkSXRlbUluZm8uaAogICAgIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNw
cAppbmRleCA2NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0Li40MGJiMDZh
ZjI5ZDllNDVkMGQ1OTliMzE4OWIwZDYzMGM0NWI4NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJKU0NsaXBib2FyZEl0ZW0uaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBhZ2VQYXN0
ZWJvYXJkQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMTA1LDcgKzEwNiw3IEBAIHZv
aWQgQ2xpcGJvYXJkOjpyZWFkVGV4dChSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUo
ZnJhbWUtPnBhZ2VJRCgpKSk7CiAgICAgYXV0byBjaGFuZ2VDb3VudEF0U3RhcnQgPSBwYXN0ZWJv
YXJkLT5jaGFuZ2VDb3VudCgpOwogICAgIGlmICghZnJhbWUtPnJlcXVlc3RET01QYXN0ZUFjY2Vz
cygpKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwpAQCAtMTQ2
LDcgKzE0Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVRleHQoY29uc3QgU3RyaW5nJiBkYXRh
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgUGFzdGVib2FyZEN1c3RvbURh
dGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9z
LCBkYXRhKTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihkb2N1bWVudC0+b3JpZ2luSWRlbnRp
ZmllckZvclBhc3RlYm9hcmQoKSk7Ci0gICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKCktPndyaXRlQ3VzdG9tRGF0YSh7IFdURk1vdmUoY3VzdG9tRGF0YSkgfSk7CisgICAgUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3Jl
YXRlKGZyYW1lLT5wYWdlSUQoKSkpLT53cml0ZUN1c3RvbURhdGEoeyBXVEZNb3ZlKGN1c3RvbURh
dGEpIH0pOwogICAgIHByb21pc2UtPnJlc29sdmUoKTsKIH0KIApAQCAtMTYzLDcgKzE2NCw3IEBA
IHZvaWQgQ2xpcGJvYXJkOjpyZWFkKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOworICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShm
cmFtZS0+cGFnZUlEKCkpKTsKICAgICBhdXRvIGNoYW5nZUNvdW50QXRTdGFydCA9IHBhc3RlYm9h
cmQtPmNoYW5nZUNvdW50KCk7CiAKICAgICBpZiAoIWZyYW1lLT5yZXF1ZXN0RE9NUGFzdGVBY2Nl
c3MoKSkgewpAQCAtMzAzLDcgKzMwNCw3IEBAIFBhc3RlYm9hcmQmIENsaXBib2FyZDo6YWN0aXZl
UGFzdGVib2FyZCgpCiBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6Okl0ZW1Xcml0ZXIoQ2xpcGJvYXJk
JiBjbGlwYm9hcmQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICA6IG1fY2xp
cGJvYXJkKG1ha2VXZWFrUHRyKGNsaXBib2FyZCkpCiAgICAgLCBtX3Byb21pc2UoV1RGTW92ZShw
cm9taXNlKSkKLSAgICAsIG1fcGFzdGVib2FyZChQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKSkKKyAgICAsIG1fcGFzdGVib2FyZChQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUoY2xpcGJvYXJkLmZyYW1lKCktPnBh
Z2VJRCgpKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3MWFhOGM1ODFiNjVkOTRjYjlmNTQzMjQ3MzM5ZjgwNzVi
ZjBhNmYyLi5iNGQ2ODlmNWZjNzQ4NDM0M2I1MmVjZTQ2Y2Q2ODQ4ZGMzOWRlYWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
MjY3LDYgKzUyNjcsOCBAQAogCQlGM0FCRkUwQzEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjNBQkZFMEIxMzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuaCAqLzsg
fTsKIAkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NzExNjFENTMy
MDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLzsgfTsKIAkJRjQwM0U3ODcyMzYzQjU4QzAw
MDQ0NTUwIC8qIEVudGVyS2V5SGludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQwM0U3ODUyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0MERB
QUVDMjVEOUYyNUUwMDExQjRGQSAvKiBQYXN0ZWJvYXJkQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwREFBRUIyNUQ5RjI1RTAwMTFCNEZB
IC8qIFBhc3RlYm9hcmRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRjQwREFBRUYyNUQ5RjNCRjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJv
YXJkQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQwREFBRUUyNUQ5RjNCRjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MjkyNjE4
MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXllcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MjkyNjE3MjUyNjRENDQwMDAwNzg5
OCAvKiBNZWRpYVBsYXllcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMzRTkwMzFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGlj
UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDM3N0Q1NzI1NTFD
OUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzNzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERp
c3BsYXlMaXN0SXRlbVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTY1OTIsNiArMTY1OTQsOCBAQAogCQlGM0Q0NjE0NzExNjFENTMyMDBD
QTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFcnJvckhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwM0U3
ODUyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbnRl
cktleUhpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwM0U3ODYyMzYzQjU4
QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbnRlcktl
eUhpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDBEQUFFQjI1RDlGMjVF
MDAxMUI0RkEgLyogUGFzdGVib2FyZENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2Fy
ZENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwREFBRUUyNUQ5RjNC
RjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdl
UGFzdGVib2FyZENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyMkI4
QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5
ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVySWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxODIsNiArMjIxODYsNyBAQAogCQkJCTJE
NUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZE
MTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTJE
NUM5Q0ZFMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCAqLywKKwkJ
CQlGNDBEQUFFRTI1RDlGM0JGMDAxMUI0RkEgLyogUGFnZVBhc3RlYm9hcmRDb250ZXh0LmggKi8s
CiAJCQkJMzcxRTY1Q0QxMzY2MUVFRDAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLywK
IAkJCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAqLywKIAkJ
CQlCQzRBNTMyODI1NjA1NjNCMDAyOEM1OTIgLyogUERGSW1hZ2VDYWNoaW5nUG9saWN5LmggKi8s
CkBAIC0yNzY1NCw2ICsyNzY1OSw3IEBACiAJCQkJNDE4NEY1MTUxRUFGMDU5ODAwRjE4QkYwIC8q
IE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLywKIAkJCQkyRUUwMkExRTFGNzMyNDI4MDAwNkFGNzIg
LyogUGFzdGVib2FyZC5jcHAgKi8sCiAJCQkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBh
c3RlYm9hcmQuaCAqLywKKwkJCQlGNDBEQUFFQjI1RDlGMjVFMDAxMUI0RkEgLyogUGFzdGVib2Fy
ZENvbnRleHQuaCAqLywKIAkJCQlGNEZCMzRGQjIzNTBDODVEMDBGMDA5NEEgLyogUGFzdGVib2Fy
ZEN1c3RvbURhdGEuY3BwICovLAogCQkJCUY0RkIzNEZBMjM1MEM4NUQwMEYwMDk0QSAvKiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oICovLAogCQkJCUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQ
YXN0ZWJvYXJkSXRlbUluZm8uaCAqLywKQEAgLTM0MDEzLDYgKzM0MDE5LDcgQEAKIAkJCQlBNUNC
MDUyNDFGQjUxRjMzMDAwODlCOTcgLyogUGFnZU5ldHdvcmtBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ1QzlEMDAxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDVDOUQwMjE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDBEQUFFRjI1RDlGM0JGMDAxMUI0RkEgLyogUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkRCNjFBMTE2RDYwMzdF
MDBCQjMzOTQgLyogUGFnZVJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Qjgx
Q0M1MUZBQTQ0QkMwMDM3RDFFNiAvKiBQYWdlUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzQwMzUsNiArMzQwNDIsNyBAQAogCQkJCTUzNkQ1QTIzMTkzRThFMEMwMENF
NENBQiAvKiBQYXJzaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDQTEy
NTFGMTJEMDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTRCMjcwOEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNDBEQUFFQzI1RDlGMjVFMDAxMUI0RkEgLyogUGFzdGVib2FyZENvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY0RkIzNEZDMjM1MEM4NUQwMEYwMDk0QSAvKiBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ5Nzg2ODgxRkY0NUZBNTAwRTA2MEFCIC8q
IFBhc3RlYm9hcmRJdGVtSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTcxNEU5QzI4
MDAwRThEMThCIC8qIFBhc3RlYm9hcmRTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDdlMTlhZGJjMDgxMDAzODZmOTAxMjFlNjcyY2Nk
ZDM5MGUxZDYwNzcuLjFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQ4OCw5ICs0ODksOSBAQCB2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQmLCBpbnQsIGludCkKIAogI2Vsc2UKIAotUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKCkKK1JlZjxEYXRhVHJhbnNm
ZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZTo6UmVh
ZFdyaXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBlOjpEcmFnQW5k
RHJvcERhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVN
b2RlOjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKFBhZ2VQYXN0
ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LnBhZ2VJRCgpKSksIFR5cGU6OkRyYWdBbmRE
cm9wRGF0YSkpOwogfQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuaAppbmRleCBhN2JjYzg4MzgzMzk5ZjdkMzVjNTM3Y2I2NjBjNThmYjI1NGJmMjZk
Li5iMDg0ZWU0MTY1MTI2NTIyMjBlNDNhNmQ0YmNjY2FmZjdjNjY2ZDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5oCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1p
dFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQot
ICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKCk7CisgICAgc3RhdGlj
IFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9j
dW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChjb25z
dCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgc3RhdGljIFJlZjxEYXRhVHJh
bnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wg
ZHJhZ2dpbmdGaWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDc5Mjk0MjA3
YThjMDQ5NjJjY2IyMzk5NGI2YjE0YzBkZmI2MTJhMS4uMjIwZTA0MzJiZTM4MmZmMGVlMWZmODcw
MzkyZDQxMGE5ZWFiZTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtODMsNiAr
ODMsNyBAQAogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJS
ZW1vdmVGb3JtYXRDb21tYW5kLmgiCkBAIC0zOTksNyArNDAwLDcgQEAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBk
b2N1bWVudCwKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1BsYWluVGV4dDoK
ICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3Vz
dG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0
VHlwZSA9ICJ0ZXh0L3BsYWluIl9zOwotICAgICAgICAgICAgYXV0byBwbGFpblRleHQgPSBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+cmVhZFN0cmluZyhwbGFpblRleHRUeXBl
KTsKKyAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0ID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LnBhZ2VJRCgp
KSktPnJlYWRTdHJpbmcocGxhaW5UZXh0VHlwZSk7CiAgICAgICAgICAgICBhdXRvIHBhc3RlYm9h
cmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgICAgICAgICBwYXN0ZWJv
YXJkLT53cml0ZVN0cmluZyhwbGFpblRleHRUeXBlLCBwbGFpblRleHQpOwogICAgICAgICAgICAg
cmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCkpOwpAQCAt
NDA3LDcgKzQwOCw3IEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNm
ZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgICAgIEZBTExUSFJP
VUdIOwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToKICAgICBjYXNlIENsaXBi
b2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbjoKLSAgICAgICAgcmV0dXJuIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3Jl
TW9kZTo6UmVhZG9ubHksIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShkb2N1bWVudC5wYWdl
SUQoKSkpKTsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToKICAgICBj
YXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZl
bnRLaW5kOjpCZWZvcmVQYXN0ZToKQEAgLTQzMyw3ICs0MzQsNyBAQCBzdGF0aWMgYm9vbCBkaXNw
YXRjaENsaXBib2FyZEV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIHRhcmdldCwgQ2xpcGJvYXJkRXZl
bnRLaW5kCiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICBib29sIG5vRGVm
YXVsdFByb2Nlc3NpbmcgPSBldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogICAgIGlmIChub0Rl
ZmF1bHRQcm9jZXNzaW5nICYmIChraW5kID09IENsaXBib2FyZEV2ZW50S2luZDo6Q29weSB8fCBr
aW5kID09IENsaXBib2FyZEV2ZW50S2luZDo6Q3V0KSAmJiBkYXRhVHJhbnNmZXItPnBhc3RlYm9h
cmQoKS5oYXNEYXRhKCkpCi0gICAgICAgIGRhdGFUcmFuc2Zlci0+Y29tbWl0VG9QYXN0ZWJvYXJk
KCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7CisgICAgICAgIGRhdGFUcmFu
c2Zlci0+Y29tbWl0VG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUodGFyZ2V0LT5kb2N1bWVudCgpLnBhZ2VJ
RCgpKSkpOwogCiAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAK
QEAgLTYxOCw3ICs2MTksNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1
bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFydAogCiB2b2lkIEVkaXRv
cjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCkKIHsKLSAgICBwYXN0ZUFzUGxhaW5U
ZXh0V2l0aFBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsK
KyAgICBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBh
Z2VJRCgpKSkpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJv
YXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCkBAIC0xNDExLDcgKzE0MTIsNyBAQCB2b2lkIEVk
aXRvcjo6cGVyZm9ybUN1dE9yQ29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIgYWN0aW9uKQogICAg
IH0KIAogICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSkKLSAgICAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2Zl
cigpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNl
IDogUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICAgICAgUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9j
dW1lbnQucGFnZUlEKCkpKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5z
ZmVyKCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0ZWJvYXJkOjpDYW5TbWFydFJlcGxh
Y2UgOiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogICAgIGVsc2UgewogICAgICAg
ICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBudWxscHRyOwogICAgICAgICBpZiAo
YWN0aW9uID09IENvcHlBY3Rpb24pCkBAIC0xNDE5LDE3ICsxNDIwLDE3IEBAIHZvaWQgRWRpdG9y
OjpwZXJmb3JtQ3V0T3JDb3B5KEVkaXRvckFjdGlvblNwZWNpZmllciBhY3Rpb24pCiAKICAgICAg
ICAgaWYgKGltYWdlRWxlbWVudCkgewogI2lmICFQTEFURk9STShXSU4pCi0gICAgICAgICAgICB3
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
KSwgKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51cmwoKSwgZG9jdW1lbnQoKS50aXRsZSgpKTsK
KyAgICAgICAgICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBh
Z2VJRCgpKSksICppbWFnZUVsZW1lbnQsIGRvY3VtZW50KCkudXJsKCksIGRvY3VtZW50KCkudGl0
bGUoKSk7CiAjZWxzZQogICAgICAgICAgICAgLy8gRklYTUU6IERlbGV0ZSBhZnRlciA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xNzc2MTg+IGxhbmRzLgotICAgICAgICAgICAgUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlSW1hZ2UoKmltYWdlRWxlbWVudCwgZG9jdW1lbnQo
KS51cmwoKSwgZG9jdW1lbnQoKS50aXRsZSgpKTsKKyAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3Vt
ZW50LnBhZ2VJRCgpKSktPndyaXRlSW1hZ2UoKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51cmwo
KSwgZG9jdW1lbnQoKS50aXRsZSgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgewogI2lmICFQ
TEFURk9STShXSU4pCi0gICAgICAgICAgICB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgqUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgICAgICAgICAgd3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdl
UGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSkpOwogI2Vsc2UK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBEZWxldGUgYWZ0ZXIgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTc3NjE4PiBsYW5kcy4KLSAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZSgpLT53cml0ZVNlbGVjdGlvbigqc2VsZWN0aW9uLCBjYW5TbWFydENvcHlPckRlbGV0ZSgp
LCAqbV9kb2N1bWVudC5mcmFtZSgpLCBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yRGF0YVRyYW5zZmVy
KTsKKyAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFz
dGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSktPndyaXRlU2VsZWN0
aW9uKCpzZWxlY3Rpb24sIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksICptX2RvY3VtZW50LmZyYW1l
KCksIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JEYXRhVHJhbnNmZXIpOwogI2VuZGlmCiAgICAgICAg
IH0KICAgICB9CkBAIC0xNDQ3LDcgKzE0NDgsNyBAQCB2b2lkIEVkaXRvcjo6cGVyZm9ybUN1dE9y
Q29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIgYWN0aW9uKQogCiB2b2lkIEVkaXRvcjo6cGFzdGUo
RnJvbU1lbnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiB7Ci0gICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCBmcm9tTWVudU9yS2V5QmluZGlu
Zyk7CisgICAgcGFzdGUoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFz
dGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSksIGZyb21NZW51T3JL
ZXlCaW5kaW5nKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlKFBhc3RlYm9hcmQmIHBhc3RlYm9h
cmQsIEZyb21NZW51T3JLZXlCaW5kaW5nIGZyb21NZW51T3JLZXlCaW5kaW5nKQpAQCAtMTQ3NSw3
ICsxNDc2LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoRnJvbU1lbnVPcktleUJp
bmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiAgICAgaWYgKCFjYW5QYXN0ZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFs
c2UpOwotICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2Fy
ZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4
dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0
ZUFzUXVvdGF0aW9uKEZyb21NZW51T3JLZXlCaW5kaW5nIGZyb21NZW51T3JLZXlCaW5kaW5nKQpA
QCAtMTQ4OCw3ICsxNDg5LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNRdW90YXRpb24oRnJvbU1l
bnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiAgICAgICAgIHJldHVybjsKICAg
ICB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhmYWxzZSk7CiAgICAgUmVz
b3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yIHZhbGlkYXRpb25TdXBwcmVzc29yKGRvY3Vt
ZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0gUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6
Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKTsKICAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKQogICAgICAgICBwYXN0
ZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQuZ2V0KCksIHsgUGFzdGVPcHRpb246OkFsbG93UGxh
aW5UZXh0LCBQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24gfSk7CiAgICAgZWxzZQpAQCAtMTU1NSw3
ICsxNTU2LDcgQEAgdm9pZCBFZGl0b3I6OnNpbXBsaWZ5TWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwg
Tm9kZSogZW5kTm9kZSkKIAogdm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgY29weVVSTCh1cmwsIHRpdGxlLCAqUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgIGNvcHlVUkwodXJsLCB0aXRsZSwgKlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNy
ZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSkpOwogfQogCiB2b2lkIEVkaXRvcjo6Y29weVVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYgcGFzdGVib2Fy
ZCkKQEAgLTE1OTcsMTAgKzE1OTgsMTAgQEAgdm9pZCBFZGl0b3I6OmNvcHlJbWFnZShjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgICAgIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdl
VVJMKCk7CiAKICNpZiAhUExBVEZPUk0oV0lOKQotICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCAqZWxlbWVudCwgdXJsLCByZXN1
bHQuYWx0RGlzcGxheVN0cmluZygpKTsKKyAgICB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVh
dGUobV9kb2N1bWVudC5wYWdlSUQoKSkpLCAqZWxlbWVudCwgdXJsLCByZXN1bHQuYWx0RGlzcGxh
eVN0cmluZygpKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IERlbGV0ZSBhZnRlciA8aHR0cDovL3dl
YmtpdC5vcmcvYi8xNzc2MTg+IGxhbmRzLgotICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpLT53cml0ZUltYWdlKCplbGVtZW50LCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5U3Ry
aW5nKCkpOworICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVi
b2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSktPndyaXRlSW1hZ2UoKmVs
ZW1lbnQsIHVybCwgcmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggMWExMDAyZjgzMWUxZjBj
MDAyNGIyNDRiMTc0MWY1YWJkMTM4Zjc0OS4uOTg0MTdkZWJmYjAyYWJiMzY1ZjQ5ZTBjZGU4MWI3
NzVkMzA2ZjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBA
IC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSW5zZXJ0TGlzdENvbW1hbmQuaCIKICNpbmNsdWRl
ICJJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTkxNCw3ICs5MTUsNyBA
QCBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGVHbG9iYWxTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiAgICAgQVNTRVJUX1VOVVNFRChzb3VyY2UsIHNv
dXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcpOwogICAgIFVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRpY2F0b3IoZnJhbWUpOwotICAgIGZyYW1lLmVk
aXRvcigpLnBhc3RlKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKSk7Cisg
ICAgZnJhbWUuZWRpdG9yKCkucGFzdGUoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVj
dGlvbihQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShmcmFtZS5wYWdlSUQoKSkpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CmluZGV4IDJiNzNiZGQ2ZmNmODhmMDFjMDk2YzkwNWZjMTI2ZTQ5ZDdiYjY0OWYuLmE5YjQ2YWIz
NGI3MDIzMDk4ZWRlZGNjMzIwNzIyZGRjMTc4OWY3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9FZGl0b3JNYWMubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIkhUTUxOYW1lcy5o
IgogI2ltcG9ydCAiTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCIKICNpbXBvcnQgIkxlZ2FjeVdl
YkFyY2hpdmUuaCIKKyNpbXBvcnQgIlBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIgogI2ltcG9ydCAi
UGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTEwMCw3ICsxMDEsNyBAQCB2b2lkIEVkaXRvcjo6cGFz
dGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8UGFzdGVP
cHRpb24+CiAKIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpOworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChQYWdlUGFzdGVib2FyZENv
bnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFzdGVib2FyZE5hbWUpOwogICAg
IGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkpCiAgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHsgUGFz
dGVPcHRpb246OkFsbG93UGxhaW5UZXh0IH0pOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDQsNyBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGF1dG8gcmFuZ2UgPSBtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKm5vZGUpOwogICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RT
ZXRGb2N1cyk7CiAKLSAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpOwor
ICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZSht
X2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFzdGVib2FyZE5hbWUpOwogCiAgICAgaWYgKCFtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsK
ICAgICAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAppbmRleCA5
NGQwM2Q4NWQ2ZGE5ZjRmODhmOGNkMTJlNGJmZmJkMzNiNGRjNTY3Li5mMjg4NzNjMGE1OGNiZDg5
MDQyN2MwN2E2MTJmNGM0OTJlYTc4ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpT
Q29tbWFuZExpbmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRl
eHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIldlYkNvbnNvbGVBZ2VudC5oIgpAQCAtMTQ5LDcgKzE1MCw3IEBAIHZvaWQgQ29tbWFu
ZExpbmVBUElIb3N0OjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAKIHZvaWQgQ29tbWFuZExpbmVB
UElIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBhc3RlYm9hcmQ6
OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CisgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKHsgfSktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVw
bGFjZSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxl
T2JqZWN0OjpnZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDgzMjI5Njc2Y2E3NDFm
ODYzMGU3OTRiNTVjNDQ5MjQwMTIxOTY3OGMuLjAwZDYyY2Y0NzE5NmU4ZTc3OTMyZGZjODU3ZDIw
Y2IwMTQ4MmIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQxNCw3ICs0MTUsOCBA
QCBTdHJpbmcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpwb3J0KCkgY29uc3QKIAogdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFpblRleHQodGV4dCwg
UGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fZnJv
bnRlbmRQYWdlID8gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnBhZ2VJRCgpIDogV1RGOjpu
dWxsb3B0OworICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVi
b2FyZENvbnRleHQ6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VJRCkpKS0+d3JpdGVQbGFpblRleHQodGV4
dCwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVw
ZW5kVG9LaWxsUmluZywgYm9vbCBzaG91bGRTdGFydE5ld1NlcXVlbmNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA5ZmNlZmQ2ZTlmMzMzMjRiMWM2ZTI5MDNmZDYx
N2Y0MDdkMzVmY2QxLi44NDIxZDI1NjFmOTI5YTA2Njc1OGUwYTM1Y2U2YmM3YWQ0ZDQzMzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBA
IHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFn
RGF0YShjb25zdCBEcmFnRGF0YSYgZHJhCiAgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKIAog
ICAgIGlmIChkcmFnRGF0YS5jb250YWluc0NvbXBhdGlibGVDb250ZW50KCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gZnJhZ21lbnQgPSBmcmFtZS5lZGl0b3IoKS53ZWJDb250ZW50RnJvbVBhc3RlYm9h
cmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKSwgY29udGV4dCwg
YWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KSkKKyAgICAgICAgaWYgKGF1dG8gZnJhZ21l
bnQgPSBmcmFtZS5lZGl0b3IoKS53ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6
OmNyZWF0ZShkcmFnRGF0YSksIGNvbnRleHQsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4
dCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAKICAgICAgICAgaWYgKGRyYWdEYXRh
LmNvbnRhaW5zVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpKSB7CkBAIC0yMjAs
NyArMjIwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCiB7CiAgICAgYXV0byYgbWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgp
OwogICAgIGlmIChtYWluRnJhbWUudmlldygpKQotICAgICAgICBtYWluRnJhbWUuZXZlbnRIYW5k
bGVyKCkuY2FuY2VsRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKSwgZHJhZ0RhdGEuZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CisgICAgICAg
IG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2
ZW50KGRyYWdEYXRhKSwgUGFzdGVib2FyZDo6Y3JlYXRlKGRyYWdEYXRhKSwgZHJhZ0RhdGEuZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CiAg
ICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChudWxscHRyKTsKICAgICBpZiAobV9maWxlSW5wdXRF
bGVtZW50VW5kZXJNb3VzZSkKICAgICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+
c2V0Q2FuUmVjZWl2ZURyb3BwZWRGaWxlcyhmYWxzZSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgICAgICBSZWY8RnJhbWU+IG1haW5GcmFtZShtX3BhZ2UubWFpbkZyYW1lKCkp
OwogICAgICAgICBib29sIHByZXZlbnRlZERlZmF1bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1h
aW5GcmFtZS0+dmlldygpKQotICAgICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9IG1haW5GcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJh
Z0RhdGEpLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSksIGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBkcmFnRGF0YS5jb250YWluc0ZpbGVz
KCkpOworICAgICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5k
bGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBQYXN0
ZWJvYXJkOjpjcmVhdGUoZHJhZ0RhdGEpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2soKSwgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICAgICAgaWYgKHByZXZlbnRl
ZERlZmF1bHQpIHsKICAgICAgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7CiAgICAgICAgICAgICBt
X2RvY3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CkBAIC03MjQsNyArNzI0LDcgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0
aW9uYWw8RHJhZ09wZXJhdGkKIAogICAgIGF1dG8gc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGF1dG8gdGFyZ2V0UmVzcG9u
c2UgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1v
dXNlRXZlbnQoZHJhZ0RhdGEpLCBbJmRyYWdEYXRhXSgpIHsKLSAgICAgICAgcmV0dXJuIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKTsKKyAgICAgICAgcmV0dXJuIFBh
c3RlYm9hcmQ6OmNyZWF0ZShkcmFnRGF0YSk7CiAgICAgfSwgc291cmNlT3BlcmF0aW9uTWFzaywg
ZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICBpZiAoIXRhcmdldFJlc3BvbnNlLmFjY2Vw
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViQ29udGVudFJl
YWRlciByZWFkZXIoKmZyYW1lLCAqbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlLCB0cnVl
KTsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cChkcmFnRGF0YSk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlKGRy
YWdEYXRhKTsKICAgICBwYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CiAKICAgICBpZiAoIXJlYWRl
ci5mcmFnbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBjYjZhZTNl
YTY5ZGYwZmZiMDJhMjI2OTQ1NjFkNjEyZWM3NjFiZjVkLi5hZWVkNWMyYjM4MDc5NmUxNTYxNzQw
NDk0NmViZmRhMWM1YjQ2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0zOTg5LDcgKzM5ODksMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAvLyBGSVhN
RTogQ29uc2lkZXIgZG9pbmcgdGhpcyBlYXJsaWVyIGluIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGVh
cmxpZXN0IHBvaW50IHdlJ3JlIHN1cmUgaXQgd291bGQgYmUgc2FmZSB0byBkcm9wIGFuIG9sZCBk
cmFnLgogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKIAotICAgIGRyYWdTdGF0ZSgpLmRh
dGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZygpOworICAgIGlmICghbV9m
cmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkcmFnU3RhdGUo
KS5kYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKm1fZnJhbWUuZG9j
dW1lbnQoKSk7CiAgICAgYXV0byBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25E
ZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vOwogICAgIAogICAgIGlmIChkcmFnU3RhdGUoKS5zaG91
bGREaXNwYXRjaEV2ZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
UGFzdGVib2FyZENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9hcmRD
b250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwYzYzNmVmZGYyMzI3MTRlODNkMmNmZGNiMGFmNjRhYjY0
YWVmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9h
cmRDb250ZXh0LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkQ29udGV4
dC5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlUGFzdGVib2FyZENvbnRleHQg
ZmluYWwgOiBwdWJsaWMgUGFzdGVib2FyZENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dChPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4mJiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpCisgICAgICAgIDogUGFzdGVib2Fy
ZENvbnRleHQoKQorICAgICAgICAsIG1fcGFnZUlEKFdURk1vdmUocGFnZUlEKSkKKyAgICB7Cisg
ICAgfQorCisgICAgflBhZ2VQYXN0ZWJvYXJkQ29udGV4dCgpIHsgfQorCisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gY3JlYXRlKE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiYmIHBhZ2VJRCA9IFdURjo6bnVsbG9wdCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oV1RGTW92ZShwYWdlSUQpKTsKKyAgICB9
CisKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH0KKyAgICBib29sIGlzUGFnZVBhc3RlYm9hcmRDb250ZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBtX3BhZ2VJRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpQYWdlUGFzdGVib2FyZENvbnRleHQpCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0JiBj
b250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzUGFnZVBhc3RlYm9hcmRDb250ZXh0KCk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
Y3BwCmluZGV4IGMyN2ZkMGY2ZWExZjcwMDc5YjBjZTBkZTFkMWE2M2VmOGUyY2ZjOTQuLjU1YWJk
NTY5OTZkOGQ1Mzg1YWE3YzY5MDYyMWI0OWNmZGZlNGQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRyYWdEYXRhLmgiCisjaW5jbHVkZSAiUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgogCkBAIC0zMiwyNyArMzMsMzQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lm
ICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlv
blNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFn
RGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQog
ICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRlc3RpbmF0aW9uQWN0aW9uTWFzaykK
KyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKIHsgIAogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6
RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdz
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ss
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9u
KGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikK
ICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBwbGljYXRpb25GbGFncyhm
bGFncykKICAgICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkZXN0aW5hdGlvbkFjdGlv
bk1hc2spCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiB7CiB9CiAjZW5kaWYKIAorc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBEcmFnRGF0YTo6Y3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4geyBtX3BhZ2VJRCB9KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCmluZGV4IGFjYzNlOGVkMTYxODk4Yjg2MWM5ZmZkOTY2ODJlYTQyNGEy
ZGJlZWYuLmYyMjEyNWM1MDMwZjc1ZjNiZjk5MjRhYmEzOGJkMGRkYTUwNGU4ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbG9y
LmgiCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02NSw2
ICs2Niw4IEBAIGVudW0gY2xhc3MgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgOiB1aW50OF90IHsKICAg
ICBJc0NvcHlLZXlEb3duID0gOAogfTsKIAorY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CisKICNp
ZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFZlY3RvcjxTdHJpbmc+
PiBEcmFnRGF0YU1hcDsKICNlbmRpZgpAQCAtNzUsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZv
ckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUg
dGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywg
d2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShE
cmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERy
YWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJh
Z0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkp
OworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFj
dGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gV1RGOjpudWxsb3B0KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNh
dGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlE
cmFnRGVzdGluYXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9
IFdURjo6bnVsbG9wdCk7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5
IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBi
eSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgp
ID0gZGVmYXVsdDsKICNpZiBQTEFURk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0Rh
dGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0p
OworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8
RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEID0gV1RGOjpudWxsb3B0KTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0RhdGFNYXAo
KTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBTdHJpbmcm
IHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZv
aWQqIGRhdGFCbG9iKTsKQEAgLTExMSwxOSArMTE0LDI4IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zUHJvbWlzZSgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisgICAg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CiAKLSAgICBEcmFnRGF0YSYgb3BlcmF0b3IgPShjb25zdCBEcmFnRGF0YSYgZGF0YSkKKyAg
ICBEcmFnRGF0YSYgb3BlcmF0b3I9KGNvbnN0IERyYWdEYXRhJiBkYXRhKQogICAgIHsKICAgICAg
ICAgbV9jbGllbnRQb3NpdGlvbiA9IGRhdGEubV9jbGllbnRQb3NpdGlvbjsKICAgICAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IGRhdGEubV9nbG9iYWxQb3NpdGlvbjsKICAgICAgICAgbV9wbGF0Zm9y
bURyYWdEYXRhID0gZGF0YS5tX3BsYXRmb3JtRHJhZ0RhdGE7CiAgICAgICAgIG1fZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrID0gZGF0YS5tX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsK
ICAgICAgICAgbV9hcHBsaWNhdGlvbkZsYWdzID0gZGF0YS5tX2FwcGxpY2F0aW9uRmxhZ3M7Cisg
ICAgICAgIG1fZmlsZU5hbWVzID0gZGF0YS5tX2ZpbGVOYW1lczsKICAgICAgICAgbV9kcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrID0gZGF0YS5tX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7Cisg
ICAgICAgIG1fcGFnZUlEID0gZGF0YS5tX3BhZ2VJRDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICAgICAgbV9wYXN0ZWJvYXJkTmFtZSA9IGRhdGEubV9wYXN0ZWJvYXJkTmFtZTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgbV9kcmFnRGF0YU1hcCA9IGRhdGEubV9kcmFnRGF0
YU1hcDsKKyNlbmRpZgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQotI2VuZGlmCisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IGNyZWF0ZVBhc3RlYm9hcmRDb250
ZXh0KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV9jbGllbnRQb3NpdGlvbjsK
QEAgLTEzMyw2ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFnQXBwbGljYXRp
b25GbGFncz4gbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5h
bWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzazsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBhYWRjNDY2OThkZjc5NTY0MzYy
YTAzZjVkZmU4OWIwZWI3ODExY2U5Li5iODUzYWZiODI4YTExMWNkOTExNjg2YzBhODkyMjQzYzc3
MDYwYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgorI2luY2x1ZGUgIlBh
c3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEN1c3RvbURhdGEuaCIKICNp
bmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtMTc2LDI0ICsxNzcsMjQgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKIGNsYXNz
IFBhc3RlYm9hcmQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhc3RlYm9hcmQpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYXN0ZWJvYXJkKCk7CisgICAgUGFz
dGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYpOwogICAgIHZpcnR1
YWwgflBhc3RlYm9hcmQoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBleHBsaWNpdCBQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgZXhwbGljaXQgUGFzdGVib2FyZChTZWxl
Y3Rpb25EYXRhJik7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+JiYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgZXhwbGljaXQgUGFz
dGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYsIFNlbGVjdGlvbkRh
dGEmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQo
U2VsZWN0aW9uRGF0YSYmKTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgU2VsZWN0aW9uRGF0YSYmKTsKICNlbmRpZgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgZXhwbGljaXQgUGFzdGVib2FyZChJRGF0YU9iamVj
dCopOwotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoV0NEYXRhT2JqZWN0Kik7Ci0gICAgZXhwbGlj
aXQgUGFzdGVib2FyZChjb25zdCBEcmFnRGF0YU1hcCYpOworICAgIGV4cGxpY2l0IFBhc3RlYm9h
cmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmLCBJRGF0YU9iamVjdCopOwor
ICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0
PiYmLCBXQ0RhdGFPYmplY3QqKTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgY29uc3QgRHJhZ0RhdGFNYXAmKTsKICNlbmRpZgog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZENvbnRleHQ+JiYpOwogCiAgICAgc3RhdGljIGJvb2wgaXNTYWZlVHlwZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIGNhbkV4
cG9zZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKGNvbnN0IFN0cmluZyYpOwpA
QCAtMjM1LDggKzIzNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKTsgLy8g
RklYTUU6IFR3byBzZXBhcmF0ZSBmdW5jdGlvbnMgd291bGQgYmUgY2xlYXJlciB0aGFuIG9uZSBm
dW5jdGlvbiB3aXRoIGFuIGFyZ3VtZW50LgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNyZWF0
ZUZvckRyYWdBbmREcm9wKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gY3Jl
YXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNy
ZWF0ZShjb25zdCBEcmFnRGF0YSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldERyYWdJbWFnZShE
cmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KTsKICNlbmRpZgpAQCAtMjUzLDE1ICsy
NTQsMTUgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IGV4cGxpY2l0IFBhc3RlYm9hcmQoaW50NjRfdCBjaGFuZ2VDb3VudCk7Ci0gICAgZXhwbGljaXQg
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICBleHBsaWNpdCBQ
YXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgaW50NjRfdCBj
aGFuZ2VDb3VudCk7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+JiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogCiAgICAg
c3RhdGljIE5TQXJyYXkgKnN1cHBvcnRlZFdlYkNvbnRlbnRQYXN0ZWJvYXJkVHlwZXMoKTsKICAg
ICBzdGF0aWMgU3RyaW5nIHJlc291cmNlTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWVUeXBlKTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb21pc2VkRmls
ZVBhdGhzID0geyB9KTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkQ29udGV4dD4mJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHByb21pc2VkRmlsZVBhdGhzID0geyB9KTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC0yOTgsNiArMjk5LDggQEAgcHVibGljOgogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7
CiAKKyAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQorCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYm9vbCByZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSBjb25zdDsKQEAgLTMyOCw2ICszMzEs
OCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBl
V2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OworCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIE9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0YTsKICAgICBTdHJp
bmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDb250ZXh0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzBkMGM1ZGJjZWM1YTdmNjVkMDUxODgzYzkwMzVlMmI1ZDQxMTk2OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDb250ZXh0
LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYXN0
ZWJvYXJkQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+UGFzdGVib2FyZENvbnRleHQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNQYWdlUGFzdGVib2FyZENvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
Citwcm90ZWN0ZWQ6CisgICAgUGFzdGVib2FyZENvbnRleHQoKSA9IGRlZmF1bHQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuY3BwCmluZGV4IDZmMzIxZmFlZmQwZTYxNDkxNTE4YWE1ZGQ0ZGFiZjE4ZmUxMWJl
YjguLmIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC0zMCw3ICszMCwxMSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0YXRpY1Bhc3RlYm9hcmQ6OlN0YXRpY1Bhc3Rl
Ym9hcmQoKSA9IGRlZmF1bHQ7CitTdGF0aWNQYXN0ZWJvYXJkOjpTdGF0aWNQYXN0ZWJvYXJkKCkK
KyAgICA6IFBhc3RlYm9hcmQoeyB9KQoreworfQorCiBTdGF0aWNQYXN0ZWJvYXJkOjp+U3RhdGlj
UGFzdGVib2FyZCgpID0gZGVmYXVsdDsKIAogYm9vbCBTdGF0aWNQYXN0ZWJvYXJkOjpoYXNEYXRh
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCmlu
ZGV4IDE3ZTA5MWQ0NDQ0MWE1MjY5NDI3ZTQzZjNlODVmZjJjNWQ5YmE4ZDMuLmU0MzNlZGIzOGU4
YzU4YTAwNjU0ZGI1YTU5ZTFiY2Q0MDk3YTNkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAi
TGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCisjaW1wb3J0ICJQYWdlUGFzdGVib2FyZENvbnRl
eHQuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmQuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVn
eS5oIgogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgiCkBAIC0xMzAsMTMgKzEzMSwxNCBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogfQogCi1EcmFnRGF0
YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+
IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlv
bk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0Fw
cGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBk
ZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAg
ICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3Np
dGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQogICAg
ICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAg
ICAsIG1fYXBwbGljYXRpb25GbGFncyhmbGFncykKICAgICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayhkZXN0aW5hdGlvbkFjdGlvbk1hc2spCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9wYXN0ZWJvYXJkTmFtZShbW21fcGxhdGZvcm1EcmFn
RGF0YSBkcmFnZ2luZ1Bhc3RlYm9hcmRdIG5hbWVdKQogI2Vsc2UKQEAgLTE0NSwxMyArMTQ3LDE0
IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShj
b25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+
IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlv
bk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0
aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAs
IG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0Rh
dGEoMCkKICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlv
bk1hc2spCiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCiAgICAgLCBtX2RyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2soZGVzdGluYXRpb25BY3Rpb25NYXNrKQorICAgICwgbV9wYWdlSUQo
cGFnZUlEKQogICAgICwgbV9wYXN0ZWJvYXJkTmFtZShkcmFnU3RvcmFnZU5hbWUpCiB7CiB9CkBA
IC0xNjUsNyArMTY4LDcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkxUeXBlSWRlbnRpZmll
cigpIGNvbnN0CiAgICAgCiBib29sIERyYWdEYXRhOjpjYW5TbWFydFJlcGxhY2UoKSBjb25zdAog
ewotICAgIHJldHVybiBQYXN0ZWJvYXJkKG1fcGFzdGVib2FyZE5hbWUpLmNhblNtYXJ0UmVwbGFj
ZSgpOworICAgIHJldHVybiBQYXN0ZWJvYXJkKGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCksIG1f
cGFzdGVib2FyZE5hbWUpLmNhblNtYXJ0UmVwbGFjZSgpOwogfQogCiBib29sIERyYWdEYXRhOjpj
b250YWluc0NvbG9yKCkgY29uc3QKQEAgLTIxNyw3ICsyMjAsNyBAQCBib29sIERyYWdEYXRhOjpj
b250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAKIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQo
KSBjb25zdAogewotICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQoY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CiAgICAgUGFzdGVib2FyZFBsYWluVGV4dCB0ZXh0OwogICAgIHBhc3Rl
Ym9hcmQucmVhZCh0ZXh0KTsKICAgICBTdHJpbmcgc3RyaW5nID0gdGV4dC50ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGRjNjg1MzQ1
NTY4MTdmYzRkMDU4NjMwOTlkM2M4YTA1MjYwODdiNGYuLmYwZmFkZDcwODY5NTYzOGY3YzgxZTky
NjcxZjY3YzE4NGUzOGMyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKQEAgLTQzLDQ1ICs0Myw1MiBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBl
IHsKICAgICBDbGlwYm9hcmREYXRhVHlwZVVua25vd24KIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQorc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiQ0xJUEJPQVJEIik7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSwgIkNMSVBCT0FSRCIpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0
aW9uKCkKK3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JH
bG9iYWxTZWxlY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiUFJJTUFS
WSIpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCitzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCBTZWxlY3Rpb25EYXRhKCkpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZShjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNT
RVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0
ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KGRyYWdEYXRhLmNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCksICpkcmFnRGF0
YS5wbGF0Zm9ybURhdGEoKSk7CiB9CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoU2VsZWN0aW9u
RGF0YSYmIHNlbGVjdGlvbkRhdGEpCi0gICAgOiBtX3NlbGVjdGlvbkRhdGEoV1RGTW92ZShzZWxl
Y3Rpb25EYXRhKSkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmRDb250ZXh0PiYmIGNvbnRleHQsIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQor
ICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBtX3NlbGVjdGlvbkRhdGEo
V1RGTW92ZShzZWxlY3Rpb25EYXRhKSkKIHsKIH0KICNlbmRpZgogCi1QYXN0ZWJvYXJkOjpQYXN0
ZWJvYXJkKFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbkRhdGEpCi0gICAgOiBtX3NlbGVjdGlvbkRh
dGEoc2VsZWN0aW9uRGF0YSkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQsIFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbkRh
dGEpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fc2VsZWN0aW9u
RGF0YShzZWxlY3Rpb25EYXRhKQogewogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgbmFtZSkKLSAgICA6IG1fbmFtZShuYW1lKQorUGFzdGVib2FyZDo6UGFzdGVib2Fy
ZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lKQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBtX25h
bWUobmFtZSkKK3sKK30KKworUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNv
bnRleHQpKQogewogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkgPSBkZWZhdWx0OwogUGFz
dGVib2FyZDo6flBhc3RlYm9hcmQoKSA9IGRlZmF1bHQ7CiAKIGNvbnN0IFNlbGVjdGlvbkRhdGEm
IFBhc3RlYm9hcmQ6OnNlbGVjdGlvbkRhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCBhNjJmODMxNmZiZmNjYzVlZTE5NWQyYmYx
ZDJiOTAwZjlmOGY0ZTA2Li4zMzY1YTNlYjg2YmIwYWI0OWE5YzBhYmFkZjQ4MWRkZjA4MDllNzNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAt
NTIsOCArNTIsOSBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzdGVib2FyZDo6
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotICAgIDogbV9wYXN0ZWJv
YXJkTmFtZShwYXN0ZWJvYXJkTmFtZSkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fcGFz
dGVib2FyZE5hbWUocGFzdGVib2FyZE5hbWUpCiAgICAgLCBtX2NoYW5nZUNvdW50KHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQocGFzdGVib2Fy
ZE5hbWUpKQogewogfQpAQCAtNzAsMTQgKzcxLDE0IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1l
T2ZEcmFnUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
RHJhZ0FuZERyb3AoKQorc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBj
b250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFBhc3RlYm9hcmQ6
Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KFdURk1vdmUoY29udGV4dCksIFBhc3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
RHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZShjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5h
bWUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEuY3JlYXRl
UGFzdGVib2FyZENvbnRleHQoKSwgZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtOTEsMTMgKzkyLDE1IEBAIHN0YXRpYyBp
bnQ2NF90IGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lID0geyB9KQogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKldlYkFyY2hpdmVQYm9hcmRUeXBl
ID0gQCJBcHBsZSBXZWIgQXJjaGl2ZSBwYXN0ZWJvYXJkIHR5cGUiOwogTlNTdHJpbmcgKlVJQ29s
b3JQYm9hcmRUeXBlID0gQCJjb20uYXBwbGUudWlraXQuY29sb3IiOwogCi1QYXN0ZWJvYXJkOjpQ
YXN0ZWJvYXJkKCkKLSAgICA6IG1fY2hhbmdlQ291bnQoMCkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9h
cmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBt
X2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fY2hhbmdlQ291bnQoMCkKIHsKIH0K
IAotUGFzdGVib2FyZDo6UGFzdGVib2FyZChpbnQ2NF90IGNoYW5nZUNvdW50KQotICAgIDogbV9j
aGFuZ2VDb3VudChjaGFuZ2VDb3VudCkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQsIGludDY0X3QgY2hhbmdlQ291bnQp
CisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fY2hhbmdlQ291bnQo
Y2hhbmdlQ291bnQpCiB7CiB9CiAKQEAgLTEwNSw5ICsxMDgsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQorc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPihQQUw6OmdldF9VSUtpdF9VSVBhc3RlYm9hcmROYW1lR2VuZXJh
bCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCBQQUw6OmdldF9VSUtpdF9VSVBhc3RlYm9hcmROYW1lR2VuZXJhbCgpKTsKIH0KIAogdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNw
cAppbmRleCA3OGI0OGEzYTg5MmU0NmI4YzE1MGFiMjc3MDUwYjAyNThlZjY5MDY4Li5lNjVmYTg3
Y2QxZTlhMWRlZDcwMWU0MmRlYWY0NWEyZWU1NDNiYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC0zNSwxMiArMzUs
MTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKK3N0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlx
dWU8UGFzdGVib2FyZD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZN
b3ZlKGNvbnRleHQpKTsKIH0KIAotUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCitQYXN0ZWJvYXJk
OjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0
KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMTJiYzNkNmFlOGUyY2Yx
YmM1MmEzYTBkNmRlMWI5MjcxOWM3ZWJkNC4uZjdmOGZmZTRmOGU5ZjhjM2E5NmIzMjc2Y2JhMzVk
ODNiNmQ5ZDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KQEAgLTgzLDI0ICs4MywyNiBAQCBOU0FycmF5ICpQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRG
aWxlVXBsb2FkUGFzdGVib2FyZFR5cGVzKCkKICAgICByZXR1cm4gQFsgKE5TU3RyaW5nICopbGVn
YWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgKE5TU3RyaW5nICopbGVnYWN5RmlsZW5h
bWVzUGFzdGVib2FyZFR5cGUoKSBdOwogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKLSAg
ICA6IG1fcGFzdGVib2FyZE5hbWUoZW1wdHlTdHJpbmcoKSkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9h
cmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBt
X2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fcGFzdGVib2FyZE5hbWUoZW1wdHlT
dHJpbmcoKSkKICAgICAsIG1fY2hhbmdlQ291bnQoMCkKIHsKIH0KIAotUGFzdGVib2FyZDo6UGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcHJvbWlzZWRGaWxlUGF0aHMpCi0gICAgOiBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmRO
YW1lKQorUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENv
bnRleHQ+JiYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHByb21pc2VkRmlsZVBhdGhzKQorICAgIDogbV9jb250ZXh0KFdURk1vdmUo
Y29udGV4dCkpCisgICAgLCBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmROYW1lKQogICAgICwg
bV9jaGFuZ2VDb3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpKQogICAgICwgbV9wcm9taXNlZEZpbGVQYXRo
cyhwcm9taXNlZEZpbGVQYXRocykKIHsKICAgICBBU1NFUlQocGFzdGVib2FyZE5hbWUpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCkKK3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRl
eHQpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksIE5TR2VuZXJhbFBib2FyZCk7
CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKQEAgLTExMCwxNiAr
MTEyLDE2IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpCiAgICAg
cmV0dXJuIE5TUGFzdGVib2FyZE5hbWVEcmFnOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQorc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewogICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
TlNEcmFnUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3Zl
KGNvbnRleHQpLCBOU0RyYWdQYm9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZShjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVi
b2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KGRyYWdEYXRhLmNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCksIGRyYWdEYXRh
LnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRleCA2MWVhNGM0
N2ZhMzUyMjU4OGY4M2E2ODZkODVjNzdjMTQyOTA5YzI0Li45ZTI4NzgzZTZlMWFjMTM1OTcwYjA2
ZDQyMGY1ZWM2NGE2Yjk5ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
RGF0YVdpbi5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxE
cmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgRHJh
Z0RhdGFNYXAmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3Bl
cmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50
UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwg
bV9wbGF0Zm9ybURyYWdEYXRhKDApCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQor
ICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9kcmFnRGF0YU1hcChkYXRhKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDIx
Yjk3ZjU4YjBlZTM5ZTQ0NzIxZTZmMjdkMDdlNjI5MTJlYjA0ZDcuLmNjODAwM2Y1ZTE1MzIwNWFj
MDc1YWQwNjk1NDIxNTk1MDE5OWRlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTkzLDkgKzkzLDkgQEAgc3RhdGljIExSRVNVTFQgQ0FM
TEJBQ0sgUGFzdGVib2FyZE93bmVyV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BB
UkFNIHcKICAgICByZXR1cm4gbHJlc3VsdDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIGF1dG8gcGFzdGVib2Fy
ZCA9IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtl
VW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCkpOwogICAgIENPTVB0cjxJRGF0YU9i
amVjdD4gY2xpcGJvYXJkRGF0YTsKICAgICBpZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9hcmQo
JmNsaXBib2FyZERhdGEpKSkKICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IDA7CkBAIC0xMDQsMjAg
KzEwNCwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi1zdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQor
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewogICAg
IENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVh
dGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oZGF0YU9iamVjdC5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
V1RGTW92ZShjb250ZXh0KSwgZGF0YU9iamVjdC5nZXQoKSk7CiB9CiAKIC8vIHN0YXRpYwotc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9w
KGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGUoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChk
cmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVi
b2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5jcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpLCBkcmFnRGF0
YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgLy8gRklYTUU6IFNob3VsZCBhZGQgYSBjb25zdCBvdmVy
bG9hZCBvZiBkcmFnRGF0YU1hcCBzbyB3ZSBkb24ndCBuZWVkIGEgY29uc3RfY2FzdCBoZXJlLgot
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihk
cmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oZHJhZ0RhdGEuY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKSwgY29uc3RfY2FzdDxEcmFnRGF0
YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKIH0KICNlbmRpZgogCkBAIC0xMzksMjkgKzEz
OSwzMyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmZpbmlzaENyZWF0aW5nUGFzdGVib2FyZCgpCiAgICAg
Q3VzdG9tRGF0YUNsaXBib2FyZEZvcm1hdCA9IDo6UmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJX
ZWJLaXQgQ3VzdG9tIERhdGEgRm9ybWF0Iik7CiB9CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQo
KQotICAgIDogbV9kYXRhT2JqZWN0KDApCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KFdU
Rk1vdmUoY29udGV4dCkpCisgICAgLCBtX2RhdGFPYmplY3QoMCkKICAgICAsIG1fd3JpdGFibGVE
YXRhT2JqZWN0KDApCiB7CiAgICAgZmluaXNoQ3JlYXRpbmdQYXN0ZWJvYXJkKCk7CiB9CiAKLVBh
c3RlYm9hcmQ6OlBhc3RlYm9hcmQoSURhdGFPYmplY3QqIGRhdGFPYmplY3QpCi0gICAgOiBtX2Rh
dGFPYmplY3QoZGF0YU9iamVjdCkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0
KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBtX2RhdGFPYmplY3Qo
ZGF0YU9iamVjdCkKICAgICAsIG1fd3JpdGFibGVEYXRhT2JqZWN0KDApCiB7CiAgICAgZmluaXNo
Q3JlYXRpbmdQYXN0ZWJvYXJkKCk7CiB9CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoV0NEYXRh
T2JqZWN0KiBkYXRhT2JqZWN0KQotICAgIDogbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCitQYXN0
ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBj
b250ZXh0LCBXQ0RhdGFPYmplY3QqIGRhdGFPYmplY3QpCisgICAgOiBtX2NvbnRleHQoV1RGTW92
ZShjb250ZXh0KSkKKyAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV93cml0
YWJsZURhdGFPYmplY3QoZGF0YU9iamVjdCkKIHsKICAgICBmaW5pc2hDcmVhdGluZ1Bhc3RlYm9h
cmQoKTsKIH0KIAotUGFzdGVib2FyZDo6UGFzdGVib2FyZChjb25zdCBEcmFnRGF0YU1hcCYgZGF0
YU1hcCkKLSAgICA6IG1fZGF0YU9iamVjdCgwKQorUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgY29uc3QgRHJhZ0RhdGFN
YXAmIGRhdGFNYXApCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1f
ZGF0YU9iamVjdCgwKQogICAgICwgbV93cml0YWJsZURhdGFPYmplY3QoMCkKICAgICAsIG1fZHJh
Z0RhdGFNYXAoZGF0YU1hcCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IGJiN2M4NGJmODE0NzVjY2M5MTlmMDc4MzAwNGQ5Mjk3MTgw
MGZlNWUuLjYxMWY0NjI0ZGJiODk2MWE5YWFkMTczZTU2ZTc1NWFhZjQzOTAxOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTQwOSw2
ICsxNDA5LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICBlbmNvZGVyIDw8IGRyYWdE
YXRhLmZpbGVOYW1lcygpOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5kcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrKCk7CisgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5wYWdlSUQoKTsK
IH0KIAogYm9vbCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIERyYWdEYXRhJiBkcmFnRGF0YSkKQEAgLTE0NDMsNyArMTQ0NCwxMSBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
aykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGFz
dGVib2FyZE5hbWUsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzLCBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrKTsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFnZUlEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZHJhZ0Rh
dGEgPSBEcmFnRGF0YShwYXN0ZWJvYXJkTmFtZSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0
aW9uLCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3MsIGRyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2ssIHBhZ2VJRCk7CiAgICAgZHJhZ0RhdGEuc2V0RmlsZU5hbWVz
KGZpbGVOYW1lcyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggOTBlYjRkYmRkYzBmYTc4MzNlMjhhOGYzZjEy
NmRjZjkwNzgzMWU5MS4uOGRkNDMyNTRjNTJlYWJlNjRkZmM5MmMxMTliNzlmMzg2NGUzYWI2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQw
MTksNyArNDAxOSw3IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRl
cmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2Nh
dGlvbiwgW21fdmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0
aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKICAgICBhdXRvIGRy
YWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRh
KGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRpb25NYXNrLCBhcHBsaWNh
dGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyks
IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdE
YXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRpb25NYXNrLCBhcHBs
aWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5m
byksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2ssIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogCiAg
ICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKICAgICBtX3BhZ2UtPmRy
YWdFbnRlcmVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUp
OwpAQCAtNDA1Nyw3ICs0MDU3LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFn
Z2luZ1VwZGF0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFn
Z2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJf
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwogICAg
IGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEg
ZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ss
IGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dp
bmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CisgICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbk1h
c2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJh
Z2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaywgbV9wYWdlLT53ZWJQYWdlSUQo
KSk7CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nUGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNG
b3JEcm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsK
QEAgLTQwODEsNyArNDA4MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKGlk
IDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50
IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93
XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9y
ZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NG
b3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgYW55RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKCksIG1fcGFnZS0+d2ViUGFnZUlEKCkpOwogICAgIG1fcGFnZS0+ZHJh
Z0V4aXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsK
ICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIGRyYWdnaW5n
SW5mby5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVtYmVyT2ZWYWxpZEl0
ZW1zRm9yRHJvcDsKQEAgLTQwOTcsNyArNDA5Nyw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZv
cm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAg
IFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRp
b24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9
IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJh
Z2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNv
cmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0
aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGlj
YXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8p
LCBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAKICAg
ICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCA4ZDE0NzdjOWI2ZTRmMzhiYzc0OTkxYmVhMmYyYmZjZDIyMDkwOTEy
Li5jODlmOTVmZmJkNTM3YjYwOTNlZDE1NzE4MTgyNmMxYmQ3Y2U5MWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTc3NzcsNyArNzc3NywxNiBAQCAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZv
ckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFnRGVzdAogICAgIGF1
dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKCk7CiAgICAg
aWYgKCFzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24pCiAgICAgICAgIGRyYWdPcGVyYXRpb25N
YXNrLnJlbW92ZShXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpNb3ZlKTsKLSAgICByZXR1cm4geyBz
ZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25NYXNrLCB7IH0sIFdlYktpdDo6Y29yZURy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKSB9OworCisgICAg
cmV0dXJuIHsKKyAgICAgICAgc2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KGNsaWVudCksCisgICAgICAgIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLAor
ICAgICAgICBkcmFnT3BlcmF0aW9uTWFzaywKKyAgICAgICAgeyB9LAorICAgICAgICBXZWJLaXQ6
OmNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRyYWdEZXN0aW5hdGlvbkFjdGlvbiksCisg
ICAgICAgIF9wYWdlLT53ZWJQYWdlSUQoKQorICAgIH07CiB9CiAKIC0gKHZvaWQpY2xlYW5VcERy
YWdTb3VyY2VTZXNzaW9uU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcApp
bmRleCA5Zjk4NjU5NTIxNzFmMzM3YjE3M2NmNTUxZmI5NDllOGYyODk3YzRkLi4xY2NlZGQ5YzU4
MTY5MTViMWVkYWIzODdlNjdmYzA2NmFlZDVkZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JD
bGllbnRHdGsuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5h
bWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5
Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgpA
QCAtMTQ1LDcgKzE0Niw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVHbG9iYWxTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIHBhc3RlYm9hcmRDb250ZW50LmNhblNtYXJ0Q29weU9y
RGVsZXRlID0gZmFsc2U7CiAgICAgcGFzdGVib2FyZENvbnRlbnQudGV4dCA9IHBsYWluVGV4dCgq
cmFuZ2UpOwogICAgIHBhc3RlYm9hcmRDb250ZW50Lm1hcmt1cCA9IHNlcmlhbGl6ZVByZXNlcnZp
bmdWaXN1YWxBcHBlYXJhbmNlKGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2
ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5KTsKLSAgICBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKS0+d3JpdGUocGFzdGVib2FyZENvbnRlbnQp
OworICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihQYWdlUGFzdGVib2Fy
ZENvbnRleHQ6OmNyZWF0ZShmcmFtZS0+cGFnZUlEKCkpKS0+d3JpdGUocGFzdGVib2FyZENvbnRl
bnQpOwogfQogCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkU2hvd1VuaWNvZGVNZW51KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA4YjE0YjYyYzAxMzMxNGNkMzViZGIz
ODNmMDFjOWViYmQzZGJhNDc5Li42MDIzY2U3OGY4NDBiZGNkMzliNjYzN2E4NGJhNGY4NDMwOGIx
ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC00Niw2ICs0Niw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckltYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1N0cmluZ1RydW5jYXRvci5oPgpAQCAtMTg4LDggKzE4OSw4IEBAIHZvaWQgV2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIEVsZW1lCiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCiB7Ci0gICAgaWYgKGF1dG8g
ZnJhbWUgPSBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKCksIGVsZW1lbnQsIHVybCwgbGFiZWwpOworICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJl
ZlB0cihlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSkpCisgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cChQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShmcmFtZS0+cGFnZUlEKCkpKSwgZWxlbWVu
dCwgdXJsLCBsYWJlbCk7CiB9CiAKICNlbmRpZiAvLyBVU0UoQVBQS0lUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2YjgzMzAzZmU1ZTFhY2Vj
M2NlNWIwMzI1OWI3YjBjY2Y0MzdlNDljLi4yOTg1MzY0NjI3YWJjZmJiZmI1YjVkYzkzMGRlNTZj
OTAwMzA3YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNDE0NCw3ICs0MTQ0LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZzZWxlY3Rpb25EYXRh
LCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaywgZmxhZ3MpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKCZzZWxlY3Rpb25EYXRhLCBjbGll
bnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywg
ZmxhZ3MsIG1faWRlbnRpZmllcik7CiAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIERy
YWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVkOiB7CiAgICAgICAgIGF1dG8gcmVzb2x2ZWREcmFn
T3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggOGQ0NTE1NjdhM2U2NGNlZGFmNmY1YTQ1NjdhOGZhYzdkYjg1Y2JkMC4uNjQ2
OWE2YWVhY2I1MmI5MGI0ODdmZDNlODhlN2QwYjRiNmQ1NDkxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTExNCw2ICsx
MTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlUmVuZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9y
dCA8V2ViQ29yZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFz
dGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CkBAIC0yOTg2LDcgKzI5ODcsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQog
ICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGxpbmtFbGVtZW50LT50ZXh0Q29udGVudCgpOwog
ICAgICAgICAgICAgICAgIHRpdGxlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KHRpdGxlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5k
b2N1bWVudCgpLmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCBlbGVtZW50LCB1cmwsIHRpdGxlKTsKKyAgICAgICAgICAg
IG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3Rl
Ym9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENv
bnRleHQ6OmNyZWF0ZShlbGVtZW50LmRvY3VtZW50KCkucGFnZUlEKCkpKSwgZWxlbWVudCwgdXJs
LCB0aXRsZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5pc0xpbmsoKSkKICAgICAgICAg
ICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmVkaXRvcigpLmNvcHlVUkwoZWxlbWVu
dC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpocmVm
QXR0cikpKSwgZWxlbWVudC50ZXh0Q29udGVudCgpKTsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQubW0KaW5kZXggZjIxZTk0M2JlNGU2NjI0ZGVlZGMzYmRiYzJkYzM0
YzU3NzNmNGEyMS4uNTU2NzQ5OTA0ZmQ1MzZiMjUxNDgzMDY3OWRiOGY2NmM4ODJiZDYwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50Lm1tCkBAIC01NSw2ICs1NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmRXcml0ZXIuaD4K
IApAQCAtMjY4LDggKzI2OSw4IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6YmVnaW5EcmFnKERyYWdJ
dGVtLCBGcmFtZSYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmCiAKIHZvaWQgV2Vi
RHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBGcmFtZSopCiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lID0gZWxlbWVudC5kb2N1bWVu
dCgpLmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJv
YXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBlbGVtZW50LCB1cmwsIGxh
YmVsKTsKKyAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgp
LmZyYW1lKCkpKQorICAgICAgICBmcmFtZS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2Fy
ZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoUGFnZVBhc3RlYm9hcmRDb250ZXh0
OjpjcmVhdGUoZnJhbWUtPnBhZ2VJRCgpKSksIGVsZW1lbnQsIHVybCwgbGFiZWwpOwogfQogCiB2
b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420694</attachid>
            <date>2021-02-17 12:38:19 -0800</date>
            <delta_ts>2021-02-17 13:24:29 -0800</delta_ts>
            <desc>For EWS only (fix GTK)</desc>
            <filename>bug-221987-20210217123819.patch</filename>
            <type>text/plain</type>
            <size>77575</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5NzdiZDI2MWIxNWY4
OTk4NDM4NWQ2MTRhMzQ4YzdhMGFkZTJmOS4uYTY0OWNmY2RkYmQyOWFkMTUzYWUzZTRjNmE4OGU1
YjRlY2E4ZDEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTAyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBsdW1iIGFuIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFBhc3RlYm9hcmQtcmVsYXRlZCBjb2RlcGF0
aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsg
aW4gcHJvZ3Jlc3Mgb25seS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZDo6cmVhZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjp3cml0
ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZDo6SXRlbVdyaXRlcjo6SXRlbVdyaXRlcik6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKToK
KyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDbGlwYm9hcmRFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBlcmZvcm1DdXRPckNvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpwYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFp
blRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzUXVvdGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvcHlJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUdsb2JhbFNlbGVjdGlvbik6CisgICAgICAgICog
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBs
YWNlTm9kZUZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y29weVRl
eHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpjb3B5VGV4dCk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZy
YWdtZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJh
Z09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxE
cmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBw
YWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OkRyYWdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjcmVhdGVQYXN0ZWJv
YXJkQ29udGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6cGFnZUlEIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQ6OmlzUGFnZVBhc3RlYm9hcmRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6
OlN0YXRpY1Bhc3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNhblNtYXJ0UmVwbGFjZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JHbG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRl
Rm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFz
dGVib2FyZCk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW21hY09TXSBJbnRyb2R1Y2UgYSBuZXcgY29udGV4dCBtZW51IGl0
ZW0gdG8gcHJldmlldyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzE5YTA5YWRhZWUyZjQ3OWFhY2NjOTBj
ZDgzZmI3ZWNlNDllODkzOC4uNzgzMzQ2NzkwZWUyNjU0YjdlZDA4NWFkN2E5NGM4NDA3YTIzMGRj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBhdGhzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNz
IG9ubHkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRy
YWdnaW5nRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdEYXRhRm9yRHJvcFNlc3Npb246ZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkVkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xp
ZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1l
bnQpOgorCiAyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFttYWNPU10gSW50cm9kdWNlIGEgbmV3IGNvbnRleHQgbWVudSBpdGVtIHRv
IHByZXZpZXcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggODY4NTFmNDQw
MTU1OWYyY2VkZDE0NTA5MDQ4MzI0YmY3NzM2YTBkOC4uNmIzOTdjNzRjMWM4ZTBjYzdmMWYyNjM1
OTQ1YjZkODlmNGY1ZmY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFBsdW1iIGFuIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFBh
c3RlYm9hcmQtcmVsYXRlZCBjb2RlcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3Mgb25seS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorCiAyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gSW50cm9kdWNlIGEgbmV3
IGNvbnRleHQgbWVudSBpdGVtIHRvIHByZXZpZXcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBiMzNhMzY5MTdiYTIyNGJkZGY2MmQ2MDU3NTA0MGQyZDdlYzk2Yzk4Li5mZDU4NjhmYmU0MTFl
OGUyODgxMjVkZTgxNGFiNWFiMDFmYmUzMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTg5Nyw2
ICs4OTcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGFn
ZS9QYWdlSWRlbnRpZmllci5oCiAgICAgcGFnZS9QYWdlT3ZlcmxheS5oCiAgICAgcGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuaAorICAgIHBhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgKICAg
ICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCiAgICAgcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQuaAogICAgIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgKQEAgLTEwNDMsNiAr
MTA0NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaAogICAgIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oCiAg
ICAgcGxhdGZvcm0vUGFzdGVib2FyZC5oCisgICAgcGxhdGZvcm0vUGFzdGVib2FyZENvbnRleHQu
aAogICAgIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKICAgICBwbGF0Zm9ybS9QYXN0
ZWJvYXJkSXRlbUluZm8uaAogICAgIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNw
cAppbmRleCA2NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0Li40MGJiMDZh
ZjI5ZDllNDVkMGQ1OTliMzE4OWIwZDYzMGM0NWI4NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJKU0NsaXBib2FyZEl0ZW0uaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBhZ2VQYXN0
ZWJvYXJkQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMTA1LDcgKzEwNiw3IEBAIHZv
aWQgQ2xpcGJvYXJkOjpyZWFkVGV4dChSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUo
ZnJhbWUtPnBhZ2VJRCgpKSk7CiAgICAgYXV0byBjaGFuZ2VDb3VudEF0U3RhcnQgPSBwYXN0ZWJv
YXJkLT5jaGFuZ2VDb3VudCgpOwogICAgIGlmICghZnJhbWUtPnJlcXVlc3RET01QYXN0ZUFjY2Vz
cygpKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwpAQCAtMTQ2
LDcgKzE0Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVRleHQoY29uc3QgU3RyaW5nJiBkYXRh
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgUGFzdGVib2FyZEN1c3RvbURh
dGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9z
LCBkYXRhKTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihkb2N1bWVudC0+b3JpZ2luSWRlbnRp
ZmllckZvclBhc3RlYm9hcmQoKSk7Ci0gICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKCktPndyaXRlQ3VzdG9tRGF0YSh7IFdURk1vdmUoY3VzdG9tRGF0YSkgfSk7CisgICAgUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3Jl
YXRlKGZyYW1lLT5wYWdlSUQoKSkpLT53cml0ZUN1c3RvbURhdGEoeyBXVEZNb3ZlKGN1c3RvbURh
dGEpIH0pOwogICAgIHByb21pc2UtPnJlc29sdmUoKTsKIH0KIApAQCAtMTYzLDcgKzE2NCw3IEBA
IHZvaWQgQ2xpcGJvYXJkOjpyZWFkKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOworICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShm
cmFtZS0+cGFnZUlEKCkpKTsKICAgICBhdXRvIGNoYW5nZUNvdW50QXRTdGFydCA9IHBhc3RlYm9h
cmQtPmNoYW5nZUNvdW50KCk7CiAKICAgICBpZiAoIWZyYW1lLT5yZXF1ZXN0RE9NUGFzdGVBY2Nl
c3MoKSkgewpAQCAtMzAzLDcgKzMwNCw3IEBAIFBhc3RlYm9hcmQmIENsaXBib2FyZDo6YWN0aXZl
UGFzdGVib2FyZCgpCiBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6Okl0ZW1Xcml0ZXIoQ2xpcGJvYXJk
JiBjbGlwYm9hcmQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICA6IG1fY2xp
cGJvYXJkKG1ha2VXZWFrUHRyKGNsaXBib2FyZCkpCiAgICAgLCBtX3Byb21pc2UoV1RGTW92ZShw
cm9taXNlKSkKLSAgICAsIG1fcGFzdGVib2FyZChQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKSkKKyAgICAsIG1fcGFzdGVib2FyZChQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUoY2xpcGJvYXJkLmZyYW1lKCktPnBh
Z2VJRCgpKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3MWFhOGM1ODFiNjVkOTRjYjlmNTQzMjQ3MzM5ZjgwNzVi
ZjBhNmYyLi5iNGQ2ODlmNWZjNzQ4NDM0M2I1MmVjZTQ2Y2Q2ODQ4ZGMzOWRlYWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
MjY3LDYgKzUyNjcsOCBAQAogCQlGM0FCRkUwQzEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjNBQkZFMEIxMzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuaCAqLzsg
fTsKIAkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NzExNjFENTMy
MDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLzsgfTsKIAkJRjQwM0U3ODcyMzYzQjU4QzAw
MDQ0NTUwIC8qIEVudGVyS2V5SGludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQwM0U3ODUyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0MERB
QUVDMjVEOUYyNUUwMDExQjRGQSAvKiBQYXN0ZWJvYXJkQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwREFBRUIyNUQ5RjI1RTAwMTFCNEZB
IC8qIFBhc3RlYm9hcmRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRjQwREFBRUYyNUQ5RjNCRjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJv
YXJkQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQwREFBRUUyNUQ5RjNCRjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MjkyNjE4
MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXllcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MjkyNjE3MjUyNjRENDQwMDAwNzg5
OCAvKiBNZWRpYVBsYXllcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMzRTkwMzFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGlj
UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDM3N0Q1NzI1NTFD
OUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzNzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERp
c3BsYXlMaXN0SXRlbVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTY1OTIsNiArMTY1OTQsOCBAQAogCQlGM0Q0NjE0NzExNjFENTMyMDBD
QTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFcnJvckhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwM0U3
ODUyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbnRl
cktleUhpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwM0U3ODYyMzYzQjU4
QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbnRlcktl
eUhpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDBEQUFFQjI1RDlGMjVF
MDAxMUI0RkEgLyogUGFzdGVib2FyZENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2Fy
ZENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwREFBRUUyNUQ5RjNC
RjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdl
UGFzdGVib2FyZENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyMkI4
QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5
ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVySWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxODIsNiArMjIxODYsNyBAQAogCQkJCTJE
NUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZE
MTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTJE
NUM5Q0ZFMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCAqLywKKwkJ
CQlGNDBEQUFFRTI1RDlGM0JGMDAxMUI0RkEgLyogUGFnZVBhc3RlYm9hcmRDb250ZXh0LmggKi8s
CiAJCQkJMzcxRTY1Q0QxMzY2MUVFRDAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLywK
IAkJCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAqLywKIAkJ
CQlCQzRBNTMyODI1NjA1NjNCMDAyOEM1OTIgLyogUERGSW1hZ2VDYWNoaW5nUG9saWN5LmggKi8s
CkBAIC0yNzY1NCw2ICsyNzY1OSw3IEBACiAJCQkJNDE4NEY1MTUxRUFGMDU5ODAwRjE4QkYwIC8q
IE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLywKIAkJCQkyRUUwMkExRTFGNzMyNDI4MDAwNkFGNzIg
LyogUGFzdGVib2FyZC5jcHAgKi8sCiAJCQkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBh
c3RlYm9hcmQuaCAqLywKKwkJCQlGNDBEQUFFQjI1RDlGMjVFMDAxMUI0RkEgLyogUGFzdGVib2Fy
ZENvbnRleHQuaCAqLywKIAkJCQlGNEZCMzRGQjIzNTBDODVEMDBGMDA5NEEgLyogUGFzdGVib2Fy
ZEN1c3RvbURhdGEuY3BwICovLAogCQkJCUY0RkIzNEZBMjM1MEM4NUQwMEYwMDk0QSAvKiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oICovLAogCQkJCUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQ
YXN0ZWJvYXJkSXRlbUluZm8uaCAqLywKQEAgLTM0MDEzLDYgKzM0MDE5LDcgQEAKIAkJCQlBNUNC
MDUyNDFGQjUxRjMzMDAwODlCOTcgLyogUGFnZU5ldHdvcmtBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ1QzlEMDAxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDVDOUQwMjE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDBEQUFFRjI1RDlGM0JGMDAxMUI0RkEgLyogUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkRCNjFBMTE2RDYwMzdF
MDBCQjMzOTQgLyogUGFnZVJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Qjgx
Q0M1MUZBQTQ0QkMwMDM3RDFFNiAvKiBQYWdlUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzQwMzUsNiArMzQwNDIsNyBAQAogCQkJCTUzNkQ1QTIzMTkzRThFMEMwMENF
NENBQiAvKiBQYXJzaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDQTEy
NTFGMTJEMDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTRCMjcwOEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNDBEQUFFQzI1RDlGMjVFMDAxMUI0RkEgLyogUGFzdGVib2FyZENvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY0RkIzNEZDMjM1MEM4NUQwMEYwMDk0QSAvKiBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ5Nzg2ODgxRkY0NUZBNTAwRTA2MEFCIC8q
IFBhc3RlYm9hcmRJdGVtSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTcxNEU5QzI4
MDAwRThEMThCIC8qIFBhc3RlYm9hcmRTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDdlMTlhZGJjMDgxMDAzODZmOTAxMjFlNjcyY2Nk
ZDM5MGUxZDYwNzcuLjFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQ4OCw5ICs0ODksOSBAQCB2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQmLCBpbnQsIGludCkKIAogI2Vsc2UKIAotUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKCkKK1JlZjxEYXRhVHJhbnNm
ZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZTo6UmVh
ZFdyaXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBlOjpEcmFnQW5k
RHJvcERhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVN
b2RlOjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKFBhZ2VQYXN0
ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LnBhZ2VJRCgpKSksIFR5cGU6OkRyYWdBbmRE
cm9wRGF0YSkpOwogfQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuaAppbmRleCBhN2JjYzg4MzgzMzk5ZjdkMzVjNTM3Y2I2NjBjNThmYjI1NGJmMjZk
Li5iMDg0ZWU0MTY1MTI2NTIyMjBlNDNhNmQ0YmNjY2FmZjdjNjY2ZDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5oCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1p
dFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQot
ICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKCk7CisgICAgc3RhdGlj
IFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9j
dW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChjb25z
dCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgc3RhdGljIFJlZjxEYXRhVHJh
bnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wg
ZHJhZ2dpbmdGaWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDc5Mjk0MjA3
YThjMDQ5NjJjY2IyMzk5NGI2YjE0YzBkZmI2MTJhMS4uMjIwZTA0MzJiZTM4MmZmMGVlMWZmODcw
MzkyZDQxMGE5ZWFiZTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtODMsNiAr
ODMsNyBAQAogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJS
ZW1vdmVGb3JtYXRDb21tYW5kLmgiCkBAIC0zOTksNyArNDAwLDcgQEAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBk
b2N1bWVudCwKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1BsYWluVGV4dDoK
ICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3Vz
dG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0
VHlwZSA9ICJ0ZXh0L3BsYWluIl9zOwotICAgICAgICAgICAgYXV0byBwbGFpblRleHQgPSBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+cmVhZFN0cmluZyhwbGFpblRleHRUeXBl
KTsKKyAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0ID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LnBhZ2VJRCgp
KSktPnJlYWRTdHJpbmcocGxhaW5UZXh0VHlwZSk7CiAgICAgICAgICAgICBhdXRvIHBhc3RlYm9h
cmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgICAgICAgICBwYXN0ZWJv
YXJkLT53cml0ZVN0cmluZyhwbGFpblRleHRUeXBlLCBwbGFpblRleHQpOwogICAgICAgICAgICAg
cmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCkpOwpAQCAt
NDA3LDcgKzQwOCw3IEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNm
ZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgICAgIEZBTExUSFJP
VUdIOwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToKICAgICBjYXNlIENsaXBi
b2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbjoKLSAgICAgICAgcmV0dXJuIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3Jl
TW9kZTo6UmVhZG9ubHksIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShkb2N1bWVudC5wYWdl
SUQoKSkpKTsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToKICAgICBj
YXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZl
bnRLaW5kOjpCZWZvcmVQYXN0ZToKQEAgLTQzMyw3ICs0MzQsNyBAQCBzdGF0aWMgYm9vbCBkaXNw
YXRjaENsaXBib2FyZEV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIHRhcmdldCwgQ2xpcGJvYXJkRXZl
bnRLaW5kCiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICBib29sIG5vRGVm
YXVsdFByb2Nlc3NpbmcgPSBldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogICAgIGlmIChub0Rl
ZmF1bHRQcm9jZXNzaW5nICYmIChraW5kID09IENsaXBib2FyZEV2ZW50S2luZDo6Q29weSB8fCBr
aW5kID09IENsaXBib2FyZEV2ZW50S2luZDo6Q3V0KSAmJiBkYXRhVHJhbnNmZXItPnBhc3RlYm9h
cmQoKS5oYXNEYXRhKCkpCi0gICAgICAgIGRhdGFUcmFuc2Zlci0+Y29tbWl0VG9QYXN0ZWJvYXJk
KCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7CisgICAgICAgIGRhdGFUcmFu
c2Zlci0+Y29tbWl0VG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUodGFyZ2V0LT5kb2N1bWVudCgpLnBhZ2VJ
RCgpKSkpOwogCiAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAK
QEAgLTYxOCw3ICs2MTksNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1
bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFydAogCiB2b2lkIEVkaXRv
cjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCkKIHsKLSAgICBwYXN0ZUFzUGxhaW5U
ZXh0V2l0aFBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsK
KyAgICBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBh
Z2VJRCgpKSkpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJv
YXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCkBAIC0xNDExLDcgKzE0MTIsNyBAQCB2b2lkIEVk
aXRvcjo6cGVyZm9ybUN1dE9yQ29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIgYWN0aW9uKQogICAg
IH0KIAogICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSkKLSAgICAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2Zl
cigpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNl
IDogUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICAgICAgUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9j
dW1lbnQucGFnZUlEKCkpKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5z
ZmVyKCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0ZWJvYXJkOjpDYW5TbWFydFJlcGxh
Y2UgOiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogICAgIGVsc2UgewogICAgICAg
ICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBudWxscHRyOwogICAgICAgICBpZiAo
YWN0aW9uID09IENvcHlBY3Rpb24pCkBAIC0xNDE5LDE3ICsxNDIwLDE3IEBAIHZvaWQgRWRpdG9y
OjpwZXJmb3JtQ3V0T3JDb3B5KEVkaXRvckFjdGlvblNwZWNpZmllciBhY3Rpb24pCiAKICAgICAg
ICAgaWYgKGltYWdlRWxlbWVudCkgewogI2lmICFQTEFURk9STShXSU4pCi0gICAgICAgICAgICB3
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
KSwgKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51cmwoKSwgZG9jdW1lbnQoKS50aXRsZSgpKTsK
KyAgICAgICAgICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBh
Z2VJRCgpKSksICppbWFnZUVsZW1lbnQsIGRvY3VtZW50KCkudXJsKCksIGRvY3VtZW50KCkudGl0
bGUoKSk7CiAjZWxzZQogICAgICAgICAgICAgLy8gRklYTUU6IERlbGV0ZSBhZnRlciA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xNzc2MTg+IGxhbmRzLgotICAgICAgICAgICAgUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlSW1hZ2UoKmltYWdlRWxlbWVudCwgZG9jdW1lbnQo
KS51cmwoKSwgZG9jdW1lbnQoKS50aXRsZSgpKTsKKyAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3Vt
ZW50LnBhZ2VJRCgpKSktPndyaXRlSW1hZ2UoKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51cmwo
KSwgZG9jdW1lbnQoKS50aXRsZSgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgewogI2lmICFQ
TEFURk9STShXSU4pCi0gICAgICAgICAgICB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgqUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgICAgICAgICAgd3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdl
UGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSkpOwogI2Vsc2UK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBEZWxldGUgYWZ0ZXIgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTc3NjE4PiBsYW5kcy4KLSAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZSgpLT53cml0ZVNlbGVjdGlvbigqc2VsZWN0aW9uLCBjYW5TbWFydENvcHlPckRlbGV0ZSgp
LCAqbV9kb2N1bWVudC5mcmFtZSgpLCBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yRGF0YVRyYW5zZmVy
KTsKKyAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFz
dGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSktPndyaXRlU2VsZWN0
aW9uKCpzZWxlY3Rpb24sIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksICptX2RvY3VtZW50LmZyYW1l
KCksIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JEYXRhVHJhbnNmZXIpOwogI2VuZGlmCiAgICAgICAg
IH0KICAgICB9CkBAIC0xNDQ3LDcgKzE0NDgsNyBAQCB2b2lkIEVkaXRvcjo6cGVyZm9ybUN1dE9y
Q29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIgYWN0aW9uKQogCiB2b2lkIEVkaXRvcjo6cGFzdGUo
RnJvbU1lbnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiB7Ci0gICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCBmcm9tTWVudU9yS2V5QmluZGlu
Zyk7CisgICAgcGFzdGUoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFz
dGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSksIGZyb21NZW51T3JL
ZXlCaW5kaW5nKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlKFBhc3RlYm9hcmQmIHBhc3RlYm9h
cmQsIEZyb21NZW51T3JLZXlCaW5kaW5nIGZyb21NZW51T3JLZXlCaW5kaW5nKQpAQCAtMTQ3NSw3
ICsxNDc2LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoRnJvbU1lbnVPcktleUJp
bmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiAgICAgaWYgKCFjYW5QYXN0ZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFs
c2UpOwotICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2Fy
ZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4
dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0
ZUFzUXVvdGF0aW9uKEZyb21NZW51T3JLZXlCaW5kaW5nIGZyb21NZW51T3JLZXlCaW5kaW5nKQpA
QCAtMTQ4OCw3ICsxNDg5LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNRdW90YXRpb24oRnJvbU1l
bnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiAgICAgICAgIHJldHVybjsKICAg
ICB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhmYWxzZSk7CiAgICAgUmVz
b3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yIHZhbGlkYXRpb25TdXBwcmVzc29yKGRvY3Vt
ZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0gUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6
Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKTsKICAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKQogICAgICAgICBwYXN0
ZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQuZ2V0KCksIHsgUGFzdGVPcHRpb246OkFsbG93UGxh
aW5UZXh0LCBQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24gfSk7CiAgICAgZWxzZQpAQCAtMTU1NSw3
ICsxNTU2LDcgQEAgdm9pZCBFZGl0b3I6OnNpbXBsaWZ5TWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwg
Tm9kZSogZW5kTm9kZSkKIAogdm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgY29weVVSTCh1cmwsIHRpdGxlLCAqUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgIGNvcHlVUkwodXJsLCB0aXRsZSwgKlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNy
ZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSkpOwogfQogCiB2b2lkIEVkaXRvcjo6Y29weVVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYgcGFzdGVib2Fy
ZCkKQEAgLTE1OTcsMTAgKzE1OTgsMTAgQEAgdm9pZCBFZGl0b3I6OmNvcHlJbWFnZShjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgICAgIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdl
VVJMKCk7CiAKICNpZiAhUExBVEZPUk0oV0lOKQotICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCAqZWxlbWVudCwgdXJsLCByZXN1
bHQuYWx0RGlzcGxheVN0cmluZygpKTsKKyAgICB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVh
dGUobV9kb2N1bWVudC5wYWdlSUQoKSkpLCAqZWxlbWVudCwgdXJsLCByZXN1bHQuYWx0RGlzcGxh
eVN0cmluZygpKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IERlbGV0ZSBhZnRlciA8aHR0cDovL3dl
YmtpdC5vcmcvYi8xNzc2MTg+IGxhbmRzLgotICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpLT53cml0ZUltYWdlKCplbGVtZW50LCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5U3Ry
aW5nKCkpOworICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVi
b2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSktPndyaXRlSW1hZ2UoKmVs
ZW1lbnQsIHVybCwgcmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggMWExMDAyZjgzMWUxZjBj
MDAyNGIyNDRiMTc0MWY1YWJkMTM4Zjc0OS4uOTg0MTdkZWJmYjAyYWJiMzY1ZjQ5ZTBjZGU4MWI3
NzVkMzA2ZjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBA
IC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSW5zZXJ0TGlzdENvbW1hbmQuaCIKICNpbmNsdWRl
ICJJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTkxNCw3ICs5MTUsNyBA
QCBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGVHbG9iYWxTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiAgICAgQVNTRVJUX1VOVVNFRChzb3VyY2UsIHNv
dXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcpOwogICAgIFVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRpY2F0b3IoZnJhbWUpOwotICAgIGZyYW1lLmVk
aXRvcigpLnBhc3RlKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKSk7Cisg
ICAgZnJhbWUuZWRpdG9yKCkucGFzdGUoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVj
dGlvbihQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShmcmFtZS5wYWdlSUQoKSkpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CmluZGV4IDJiNzNiZGQ2ZmNmODhmMDFjMDk2YzkwNWZjMTI2ZTQ5ZDdiYjY0OWYuLmE5YjQ2YWIz
NGI3MDIzMDk4ZWRlZGNjMzIwNzIyZGRjMTc4OWY3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9FZGl0b3JNYWMubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIkhUTUxOYW1lcy5o
IgogI2ltcG9ydCAiTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCIKICNpbXBvcnQgIkxlZ2FjeVdl
YkFyY2hpdmUuaCIKKyNpbXBvcnQgIlBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIgogI2ltcG9ydCAi
UGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTEwMCw3ICsxMDEsNyBAQCB2b2lkIEVkaXRvcjo6cGFz
dGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8UGFzdGVP
cHRpb24+CiAKIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpOworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChQYWdlUGFzdGVib2FyZENv
bnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFzdGVib2FyZE5hbWUpOwogICAg
IGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkpCiAgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHsgUGFz
dGVPcHRpb246OkFsbG93UGxhaW5UZXh0IH0pOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDQsNyBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGF1dG8gcmFuZ2UgPSBtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKm5vZGUpOwogICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RT
ZXRGb2N1cyk7CiAKLSAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpOwor
ICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZSht
X2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFzdGVib2FyZE5hbWUpOwogCiAgICAgaWYgKCFtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsK
ICAgICAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAppbmRleCA5
NGQwM2Q4NWQ2ZGE5ZjRmODhmOGNkMTJlNGJmZmJkMzNiNGRjNTY3Li5mMjg4NzNjMGE1OGNiZDg5
MDQyN2MwN2E2MTJmNGM0OTJlYTc4ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpT
Q29tbWFuZExpbmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRl
eHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIldlYkNvbnNvbGVBZ2VudC5oIgpAQCAtMTQ5LDcgKzE1MCw3IEBAIHZvaWQgQ29tbWFu
ZExpbmVBUElIb3N0OjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAKIHZvaWQgQ29tbWFuZExpbmVB
UElIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBhc3RlYm9hcmQ6
OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CisgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKHsgfSktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVw
bGFjZSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxl
T2JqZWN0OjpnZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDgzMjI5Njc2Y2E3NDFm
ODYzMGU3OTRiNTVjNDQ5MjQwMTIxOTY3OGMuLjAwZDYyY2Y0NzE5NmU4ZTc3OTMyZGZjODU3ZDIw
Y2IwMTQ4MmIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQxNCw3ICs0MTUsOCBA
QCBTdHJpbmcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpwb3J0KCkgY29uc3QKIAogdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFpblRleHQodGV4dCwg
UGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fZnJv
bnRlbmRQYWdlID8gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnBhZ2VJRCgpIDogV1RGOjpu
dWxsb3B0OworICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVi
b2FyZENvbnRleHQ6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VJRCkpKS0+d3JpdGVQbGFpblRleHQodGV4
dCwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVw
ZW5kVG9LaWxsUmluZywgYm9vbCBzaG91bGRTdGFydE5ld1NlcXVlbmNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA5ZmNlZmQ2ZTlmMzMzMjRiMWM2ZTI5MDNmZDYx
N2Y0MDdkMzVmY2QxLi44NDIxZDI1NjFmOTI5YTA2Njc1OGUwYTM1Y2U2YmM3YWQ0ZDQzMzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBA
IHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFn
RGF0YShjb25zdCBEcmFnRGF0YSYgZHJhCiAgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKIAog
ICAgIGlmIChkcmFnRGF0YS5jb250YWluc0NvbXBhdGlibGVDb250ZW50KCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gZnJhZ21lbnQgPSBmcmFtZS5lZGl0b3IoKS53ZWJDb250ZW50RnJvbVBhc3RlYm9h
cmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKSwgY29udGV4dCwg
YWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KSkKKyAgICAgICAgaWYgKGF1dG8gZnJhZ21l
bnQgPSBmcmFtZS5lZGl0b3IoKS53ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6
OmNyZWF0ZShkcmFnRGF0YSksIGNvbnRleHQsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4
dCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAKICAgICAgICAgaWYgKGRyYWdEYXRh
LmNvbnRhaW5zVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpKSB7CkBAIC0yMjAs
NyArMjIwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCiB7CiAgICAgYXV0byYgbWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgp
OwogICAgIGlmIChtYWluRnJhbWUudmlldygpKQotICAgICAgICBtYWluRnJhbWUuZXZlbnRIYW5k
bGVyKCkuY2FuY2VsRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKSwgZHJhZ0RhdGEuZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CisgICAgICAg
IG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2
ZW50KGRyYWdEYXRhKSwgUGFzdGVib2FyZDo6Y3JlYXRlKGRyYWdEYXRhKSwgZHJhZ0RhdGEuZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CiAg
ICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChudWxscHRyKTsKICAgICBpZiAobV9maWxlSW5wdXRF
bGVtZW50VW5kZXJNb3VzZSkKICAgICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+
c2V0Q2FuUmVjZWl2ZURyb3BwZWRGaWxlcyhmYWxzZSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgICAgICBSZWY8RnJhbWU+IG1haW5GcmFtZShtX3BhZ2UubWFpbkZyYW1lKCkp
OwogICAgICAgICBib29sIHByZXZlbnRlZERlZmF1bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1h
aW5GcmFtZS0+dmlldygpKQotICAgICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9IG1haW5GcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJh
Z0RhdGEpLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSksIGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBkcmFnRGF0YS5jb250YWluc0ZpbGVz
KCkpOworICAgICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5k
bGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBQYXN0
ZWJvYXJkOjpjcmVhdGUoZHJhZ0RhdGEpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2soKSwgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICAgICAgaWYgKHByZXZlbnRl
ZERlZmF1bHQpIHsKICAgICAgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7CiAgICAgICAgICAgICBt
X2RvY3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CkBAIC03MjQsNyArNzI0LDcgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0
aW9uYWw8RHJhZ09wZXJhdGkKIAogICAgIGF1dG8gc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGF1dG8gdGFyZ2V0UmVzcG9u
c2UgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1v
dXNlRXZlbnQoZHJhZ0RhdGEpLCBbJmRyYWdEYXRhXSgpIHsKLSAgICAgICAgcmV0dXJuIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKTsKKyAgICAgICAgcmV0dXJuIFBh
c3RlYm9hcmQ6OmNyZWF0ZShkcmFnRGF0YSk7CiAgICAgfSwgc291cmNlT3BlcmF0aW9uTWFzaywg
ZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICBpZiAoIXRhcmdldFJlc3BvbnNlLmFjY2Vw
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViQ29udGVudFJl
YWRlciByZWFkZXIoKmZyYW1lLCAqbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlLCB0cnVl
KTsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cChkcmFnRGF0YSk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlKGRy
YWdEYXRhKTsKICAgICBwYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CiAKICAgICBpZiAoIXJlYWRl
ci5mcmFnbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBjYjZhZTNl
YTY5ZGYwZmZiMDJhMjI2OTQ1NjFkNjEyZWM3NjFiZjVkLi5hZWVkNWMyYjM4MDc5NmUxNTYxNzQw
NDk0NmViZmRhMWM1YjQ2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0zOTg5LDcgKzM5ODksMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAvLyBGSVhN
RTogQ29uc2lkZXIgZG9pbmcgdGhpcyBlYXJsaWVyIGluIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGVh
cmxpZXN0IHBvaW50IHdlJ3JlIHN1cmUgaXQgd291bGQgYmUgc2FmZSB0byBkcm9wIGFuIG9sZCBk
cmFnLgogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKIAotICAgIGRyYWdTdGF0ZSgpLmRh
dGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZygpOworICAgIGlmICghbV9m
cmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkcmFnU3RhdGUo
KS5kYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKm1fZnJhbWUuZG9j
dW1lbnQoKSk7CiAgICAgYXV0byBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25E
ZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vOwogICAgIAogICAgIGlmIChkcmFnU3RhdGUoKS5zaG91
bGREaXNwYXRjaEV2ZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
UGFzdGVib2FyZENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9hcmRD
b250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwYzYzNmVmZGYyMzI3MTRlODNkMmNmZGNiMGFmNjRhYjY0
YWVmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9h
cmRDb250ZXh0LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkQ29udGV4
dC5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlUGFzdGVib2FyZENvbnRleHQg
ZmluYWwgOiBwdWJsaWMgUGFzdGVib2FyZENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dChPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4mJiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpCisgICAgICAgIDogUGFzdGVib2Fy
ZENvbnRleHQoKQorICAgICAgICAsIG1fcGFnZUlEKFdURk1vdmUocGFnZUlEKSkKKyAgICB7Cisg
ICAgfQorCisgICAgflBhZ2VQYXN0ZWJvYXJkQ29udGV4dCgpIHsgfQorCisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gY3JlYXRlKE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiYmIHBhZ2VJRCA9IFdURjo6bnVsbG9wdCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oV1RGTW92ZShwYWdlSUQpKTsKKyAgICB9
CisKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH0KKyAgICBib29sIGlzUGFnZVBhc3RlYm9hcmRDb250ZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBtX3BhZ2VJRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpQYWdlUGFzdGVib2FyZENvbnRleHQpCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0JiBj
b250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzUGFnZVBhc3RlYm9hcmRDb250ZXh0KCk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
Y3BwCmluZGV4IGMyN2ZkMGY2ZWExZjcwMDc5YjBjZTBkZTFkMWE2M2VmOGUyY2ZjOTQuLjU1YWJk
NTY5OTZkOGQ1Mzg1YWE3YzY5MDYyMWI0OWNmZGZlNGQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRyYWdEYXRhLmgiCisjaW5jbHVkZSAiUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgogCkBAIC0zMiwyNyArMzMsMzQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lm
ICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlv
blNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFn
RGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQog
ICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRlc3RpbmF0aW9uQWN0aW9uTWFzaykK
KyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKIHsgIAogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6
RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdz
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ss
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9u
KGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikK
ICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBwbGljYXRpb25GbGFncyhm
bGFncykKICAgICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkZXN0aW5hdGlvbkFjdGlv
bk1hc2spCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiB7CiB9CiAjZW5kaWYKIAorc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBEcmFnRGF0YTo6Y3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4geyBtX3BhZ2VJRCB9KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCmluZGV4IGFjYzNlOGVkMTYxODk4Yjg2MWM5ZmZkOTY2ODJlYTQyNGEy
ZGJlZWYuLmYyMjEyNWM1MDMwZjc1ZjNiZjk5MjRhYmEzOGJkMGRkYTUwNGU4ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbG9y
LmgiCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02NSw2
ICs2Niw4IEBAIGVudW0gY2xhc3MgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgOiB1aW50OF90IHsKICAg
ICBJc0NvcHlLZXlEb3duID0gOAogfTsKIAorY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CisKICNp
ZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFZlY3RvcjxTdHJpbmc+
PiBEcmFnRGF0YU1hcDsKICNlbmRpZgpAQCAtNzUsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZv
ckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUg
dGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywg
d2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShE
cmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERy
YWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJh
Z0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkp
OworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFj
dGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gV1RGOjpudWxsb3B0KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNh
dGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlE
cmFnRGVzdGluYXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9
IFdURjo6bnVsbG9wdCk7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5
IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBi
eSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgp
ID0gZGVmYXVsdDsKICNpZiBQTEFURk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0Rh
dGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0p
OworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8
RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEID0gV1RGOjpudWxsb3B0KTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0RhdGFNYXAo
KTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBTdHJpbmcm
IHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZv
aWQqIGRhdGFCbG9iKTsKQEAgLTExMSwxOSArMTE0LDI4IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zUHJvbWlzZSgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisgICAg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CiAKLSAgICBEcmFnRGF0YSYgb3BlcmF0b3IgPShjb25zdCBEcmFnRGF0YSYgZGF0YSkKKyAg
ICBEcmFnRGF0YSYgb3BlcmF0b3I9KGNvbnN0IERyYWdEYXRhJiBkYXRhKQogICAgIHsKICAgICAg
ICAgbV9jbGllbnRQb3NpdGlvbiA9IGRhdGEubV9jbGllbnRQb3NpdGlvbjsKICAgICAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IGRhdGEubV9nbG9iYWxQb3NpdGlvbjsKICAgICAgICAgbV9wbGF0Zm9y
bURyYWdEYXRhID0gZGF0YS5tX3BsYXRmb3JtRHJhZ0RhdGE7CiAgICAgICAgIG1fZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrID0gZGF0YS5tX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsK
ICAgICAgICAgbV9hcHBsaWNhdGlvbkZsYWdzID0gZGF0YS5tX2FwcGxpY2F0aW9uRmxhZ3M7Cisg
ICAgICAgIG1fZmlsZU5hbWVzID0gZGF0YS5tX2ZpbGVOYW1lczsKICAgICAgICAgbV9kcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrID0gZGF0YS5tX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7Cisg
ICAgICAgIG1fcGFnZUlEID0gZGF0YS5tX3BhZ2VJRDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICAgICAgbV9wYXN0ZWJvYXJkTmFtZSA9IGRhdGEubV9wYXN0ZWJvYXJkTmFtZTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgbV9kcmFnRGF0YU1hcCA9IGRhdGEubV9kcmFnRGF0
YU1hcDsKKyNlbmRpZgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQotI2VuZGlmCisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IGNyZWF0ZVBhc3RlYm9hcmRDb250
ZXh0KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV9jbGllbnRQb3NpdGlvbjsK
QEAgLTEzMyw2ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFnQXBwbGljYXRp
b25GbGFncz4gbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5h
bWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzazsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBhYWRjNDY2OThkZjc5NTY0MzYy
YTAzZjVkZmU4OWIwZWI3ODExY2U5Li5hZjU0NzE1ZDhhYzhlNmY4N2M0MWJmYWZlN2ZhYjJmZjYz
NjQ4ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgorI2luY2x1ZGUgIlBh
c3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEN1c3RvbURhdGEuaCIKICNp
bmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtMTc2LDI0ICsxNzcsMjQgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKIGNsYXNz
IFBhc3RlYm9hcmQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhc3RlYm9hcmQpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYXN0ZWJvYXJkKCk7CisgICAgUGFz
dGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYpOwogICAgIHZpcnR1
YWwgflBhc3RlYm9hcmQoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBleHBsaWNpdCBQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgZXhwbGljaXQgUGFzdGVib2FyZChTZWxl
Y3Rpb25EYXRhJik7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+JiYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgZXhwbGljaXQgUGFz
dGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYsIFNlbGVjdGlvbkRh
dGEmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQo
U2VsZWN0aW9uRGF0YSYmKTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgU2VsZWN0aW9uRGF0YSYmKTsKICNlbmRpZgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgZXhwbGljaXQgUGFzdGVib2FyZChJRGF0YU9iamVj
dCopOwotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoV0NEYXRhT2JqZWN0Kik7Ci0gICAgZXhwbGlj
aXQgUGFzdGVib2FyZChjb25zdCBEcmFnRGF0YU1hcCYpOworICAgIGV4cGxpY2l0IFBhc3RlYm9h
cmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmLCBJRGF0YU9iamVjdCopOwor
ICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0
PiYmLCBXQ0RhdGFPYmplY3QqKTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgY29uc3QgRHJhZ0RhdGFNYXAmKTsKICNlbmRpZgog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZENvbnRleHQ+JiYpOwogCiAgICAgc3RhdGljIGJvb2wgaXNTYWZlVHlwZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIGNhbkV4
cG9zZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKGNvbnN0IFN0cmluZyYpOwpA
QCAtMjM1LDggKzIzNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKTsgLy8g
RklYTUU6IFR3byBzZXBhcmF0ZSBmdW5jdGlvbnMgd291bGQgYmUgY2xlYXJlciB0aGFuIG9uZSBm
dW5jdGlvbiB3aXRoIGFuIGFyZ3VtZW50LgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNyZWF0
ZUZvckRyYWdBbmREcm9wKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gY3Jl
YXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNy
ZWF0ZShjb25zdCBEcmFnRGF0YSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldERyYWdJbWFnZShE
cmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KTsKICNlbmRpZgpAQCAtMjQ5LDE5ICsy
NTAsMTkgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNvbnN0IFNlbGVjdGlv
bkRhdGEmIHNlbGVjdGlvbkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IGNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gY3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgZXhwbGljaXQgUGFzdGVib2FyZChpbnQ2NF90IGNoYW5nZUNvdW50KTsK
LSAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwor
ICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0
PiYmLCBpbnQ2NF90IGNoYW5nZUNvdW50KTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSk7CiAKICAgICBzdGF0aWMgTlNBcnJheSAqc3VwcG9ydGVkV2ViQ29udGVudFBhc3RlYm9h
cmRUeXBlcygpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZShOU1N0cmluZyAq
bWltZVR5cGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZXhwbGljaXQgUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcHJvbWlzZWRGaWxlUGF0aHMgPSB7IH0pOworICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWlzZWRGaWxlUGF0aHMgPSB7IH0pOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI5OCw2ICsyOTksOCBAQCBwdWJsaWM6
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBT
dHJpbmcmIHRpdGxlKTsKIAorICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHJlc3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0OwpA
QCAtMzI4LDYgKzMzMSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgog
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CisKICNp
ZiBQTEFURk9STShHVEspCiAgICAgT3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gbV9zZWxlY3Rpb25E
YXRhOwogICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGQwYzVkYmNlYzVhN2Y2NWQwNTE4ODNjOTAzNWUy
YjVkNDExOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZENvbnRleHQuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFBhc3RlYm9hcmRDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkQ29udGV4dCgpID0gZGVmYXVsdDsK
KworICAgIHZpcnR1YWwgYm9vbCBpc1BhZ2VQYXN0ZWJvYXJkQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBQYXN0ZWJvYXJkQ29udGV4dCgpID0gZGVm
YXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggNmYzMjFmYWVmZDBlNjE0OTE1MThhYTVk
ZDRkYWJmMThmZTExYmViOC4uYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAg
LTMwLDcgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RhdGljUGFzdGVib2Fy
ZDo6U3RhdGljUGFzdGVib2FyZCgpID0gZGVmYXVsdDsKK1N0YXRpY1Bhc3RlYm9hcmQ6OlN0YXRp
Y1Bhc3RlYm9hcmQoKQorICAgIDogUGFzdGVib2FyZCh7IH0pCit7Cit9CisKIFN0YXRpY1Bhc3Rl
Ym9hcmQ6On5TdGF0aWNQYXN0ZWJvYXJkKCkgPSBkZWZhdWx0OwogCiBib29sIFN0YXRpY1Bhc3Rl
Ym9hcmQ6Omhhc0RhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRHJhZ0RhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdE
YXRhQ29jb2EubW0KaW5kZXggMTdlMDkxZDQ0NDQxYTUyNjk0MjdlNDNmM2U4NWZmMmM1ZDliYThk
My4uZTQzM2VkYjM4ZThjNThhMDA2NTRkYjVhNTllMWJjZDQwOTdhM2QwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0zMCw2ICszMCw3
IEBACiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIgogI2ltcG9ydCAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIlBhZ2VQ
YXN0ZWJvYXJkQ29udGV4dC5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGFz
dGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVBhc3RlYm9hcmQuaCIKQEAgLTEz
MCwxMyArMTMxLDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
CiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBw
bGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRh
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9w
dGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGlu
YXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAg
LCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdE
YXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVy
YXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQogICAgICwgbV9kcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrKGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKKyAgICAsIG1fcGFn
ZUlEKHBhZ2VJRCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKFtb
bV9wbGF0Zm9ybURyYWdEYXRhIGRyYWdnaW5nUGFzdGVib2FyZF0gbmFtZV0pCiAjZWxzZQpAQCAt
MTQ1LDEzICsxNDcsMTQgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJhZ0Rh
dGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBw
bGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRy
YWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVy
YXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBv
c2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1f
cGxhdGZvcm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2so
c291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBwbGljYXRpb25GbGFncyhmbGFncykKICAg
ICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkZXN0aW5hdGlvbkFjdGlvbk1hc2spCisg
ICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKGRyYWdTdG9yYWdl
TmFtZSkKIHsKIH0KQEAgLTE2NSw3ICsxNjgsNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1VS
TFR5cGVJZGVudGlmaWVyKCkgY29uc3QKICAgICAKIGJvb2wgRHJhZ0RhdGE6OmNhblNtYXJ0UmVw
bGFjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFBhc3RlYm9hcmQobV9wYXN0ZWJvYXJkTmFtZSku
Y2FuU21hcnRSZXBsYWNlKCk7CisgICAgcmV0dXJuIFBhc3RlYm9hcmQoY3JlYXRlUGFzdGVib2Fy
ZENvbnRleHQoKSwgbV9wYXN0ZWJvYXJkTmFtZSkuY2FuU21hcnRSZXBsYWNlKCk7CiB9CiAKIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IoKSBjb25zdApAQCAtMjE3LDcgKzIyMCw3IEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QKIAogU3RyaW5nIERyYWdEYXRh
Ojphc1BsYWluVGV4dCgpIGNvbnN0CiB7Ci0gICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKG1fcGFz
dGVib2FyZE5hbWUpOworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChjcmVhdGVQYXN0ZWJvYXJk
Q29udGV4dCgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBQYXN0ZWJvYXJkUGxhaW5UZXh0IHRl
eHQ7CiAgICAgcGFzdGVib2FyZC5yZWFkKHRleHQpOwogICAgIFN0cmluZyBzdHJpbmcgPSB0ZXh0
LnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAK
aW5kZXggZGM2ODUzNDU1NjgxN2ZjNGQwNTg2MzA5OWQzYzhhMDUyNjA4N2I0Zi4uZjBmYWRkNzA4
Njk1NjM4ZjdjODFlOTI2NzFmNjdjMTg0ZTM4YzI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDMsNDUgKzQzLDUyIEBAIGVudW0gQ2xp
cGJvYXJkRGF0YVR5cGUgewogICAgIENsaXBib2FyZERhdGFUeXBlVW5rbm93bgogfTsKIAotc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQog
ewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJE
Iik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JHbG9iYWxTZWxlY3Rpb24oKQorc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENv
bnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigi
UFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29u
dGV4dCksICJQUklNQVJZIik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkK
K3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksIFNlbGVjdGlvbkRh
dGEoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0
YSkKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEuY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSwgKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KIAotUGFzdGVib2FyZDo6UGFzdGVi
b2FyZChTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKLSAgICA6IG1fc2VsZWN0aW9uRGF0
YShXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpKQorUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgU2VsZWN0aW9uRGF0YSYmIHNl
bGVjdGlvbkRhdGEpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1f
c2VsZWN0aW9uRGF0YShXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpKQogewogfQogI2VuZGlmCiAKLVBh
c3RlYm9hcmQ6OlBhc3RlYm9hcmQoU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uRGF0YSkKLSAgICA6
IG1fc2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhKQorUGFzdGVib2FyZDo6UGFzdGVib2FyZChz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgU2VsZWN0aW9uRGF0
YSYgc2VsZWN0aW9uRGF0YSkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAg
ICwgbV9zZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRhdGEpCiB7CiB9CiAKLVBhc3RlYm9hcmQ6OlBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogbV9uYW1lKG5hbWUpCitQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKKyAgICAsIG1fbmFtZShuYW1lKQoreworfQorCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogbV9jb250
ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CiB9CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKSA9
IGRlZmF1bHQ7CiBQYXN0ZWJvYXJkOjp+UGFzdGVib2FyZCgpID0gZGVmYXVsdDsKIAogY29uc3Qg
U2VsZWN0aW9uRGF0YSYgUGFzdGVib2FyZDo6c2VsZWN0aW9uRGF0YSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGE2MmY4MzE2ZmJm
Y2NjNWVlMTk1ZDJiZjFkMmI5MDBmOWY4ZjRlMDYuLjMzNjVhM2ViODZiYjBhYjQ5YTljMGFiYWRm
NDgxZGRmMDgwOWU3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCkBAIC01Miw4ICs1Miw5IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi0g
ICAgOiBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmROYW1lKQorUGFzdGVib2FyZDo6UGFzdGVi
b2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQp
KQorICAgICwgbV9wYXN0ZWJvYXJkTmFtZShwYXN0ZWJvYXJkTmFtZSkKICAgICAsIG1fY2hhbmdl
Q291bnQocGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VD
b3VudChwYXN0ZWJvYXJkTmFtZSkpCiB7CiB9CkBAIC03MCwxNCArNzEsMTQgQEAgU3RyaW5nIFBh
c3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gImRyYWcgYW5kIGRy
b3AgcGFzdGVib2FyZCI7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmRDb250ZXh0PiYmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSwgUGFzdGVib2FyZDo6bmFtZU9mRHJh
Z1Bhc3RlYm9hcmQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0
YS5wYXN0ZWJvYXJkTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihk
cmFnRGF0YS5jcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpLCBkcmFnRGF0YS5wYXN0ZWJvYXJkTmFt
ZSgpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC05MSwxMyArOTIs
MTUgQEAgc3RhdGljIGludDY0X3QgY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUgPSB7IH0pCiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqV2ViQXJj
aGl2ZVBib2FyZFR5cGUgPSBAIkFwcGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQgdHlwZSI7CiBO
U1N0cmluZyAqVUlDb2xvclBib2FyZFR5cGUgPSBAImNvbS5hcHBsZS51aWtpdC5jb2xvciI7CiAK
LVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQotICAgIDogbV9jaGFuZ2VDb3VudCgwKQorUGFzdGVi
b2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29u
dGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9jaGFuZ2VD
b3VudCgwKQogewogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGludDY0X3QgY2hhbmdlQ291
bnQpCi0gICAgOiBtX2NoYW5nZUNvdW50KGNoYW5nZUNvdW50KQorUGFzdGVib2FyZDo6UGFzdGVi
b2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgaW50NjRf
dCBjaGFuZ2VDb3VudCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwg
bV9jaGFuZ2VDb3VudChjaGFuZ2VDb3VudCkKIHsKIH0KIApAQCAtMTA1LDkgKzEwOCw5IEBAIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIHsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
CitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewot
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFBBTDo6Z2V0X1VJS2l0X1VJUGFzdGVi
b2FyZE5hbWVHZW5lcmFsKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdU
Rk1vdmUoY29udGV4dCksIFBBTDo6Z2V0X1VJS2l0X1VJUGFzdGVib2FyZE5hbWVHZW5lcmFsKCkp
OwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCmluZGV4IDc4YjQ4YTNhODkyZTQ2YjhjMTUwYWIyNzcwNTBiMDI1OGVm
NjkwNjguLmU2NWZhODdjZDFlOWExZGVkNzAxZTQyZGVhZjQ1YTJlZTU0M2JhYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAK
QEAgLTM1LDEyICszNSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQorc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZShzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
c3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCkpOwogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJk
KCkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250
ZXh0PiYmIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAx
MmJjM2Q2YWU4ZTJjZjFiYzUyYTNhMGQ2ZGUxYjkyNzE5YzdlYmQ0Li5mN2Y4ZmZlNGY4ZTlmOGMz
YTk2YjMyNzZjYmEzNWQ4M2I2ZDlkNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtODMsMjQgKzgzLDI2IEBAIE5TQXJyYXkgKlBhc3RlYm9h
cmQ6OnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKQogICAgIHJldHVybiBAWyAo
TlNTdHJpbmcgKilsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCAoTlNTdHJpbmcg
KilsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpIF07CiB9CiAKLVBhc3RlYm9hcmQ6OlBh
c3RlYm9hcmQoKQotICAgIDogbV9wYXN0ZWJvYXJkTmFtZShlbXB0eVN0cmluZygpKQorUGFzdGVi
b2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29u
dGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9wYXN0ZWJv
YXJkTmFtZShlbXB0eVN0cmluZygpKQogICAgICwgbV9jaGFuZ2VDb3VudCgwKQogewogfQogCi1Q
YXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwcm9taXNlZEZpbGVQYXRocykKLSAgICA6IG1fcGFzdGVib2FyZE5h
bWUocGFzdGVib2FyZE5hbWUpCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWlzZWRGaWxlUGF0aHMpCisgICAgOiBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fcGFzdGVib2FyZE5hbWUocGFzdGVib2Fy
ZE5hbWUpCiAgICAgLCBtX2NoYW5nZUNvdW50KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSkpCiAgICAgLCBtX3By
b21pc2VkRmlsZVBhdGhzKHByb21pc2VkRmlsZVBhdGhzKQogewogICAgIEFTU0VSVChwYXN0ZWJv
YXJkTmFtZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKQorc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENv
bnRleHQ+JiYgY29udGV4dCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSwgTlNH
ZW5lcmFsUGJvYXJkKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0K
IApAQCAtMTEwLDE2ICsxMTIsMTYgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0
ZWJvYXJkKCkKICAgICByZXR1cm4gTlNQYXN0ZWJvYXJkTmFtZURyYWc7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCitz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiB7CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3Rl
Ym9hcmQ+KFdURk1vdmUoY29udGV4dCksIE5TRHJhZ1Bib2FyZCk7CiAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihk
cmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEuY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSwgZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
RGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
CmluZGV4IDYxZWE0YzQ3ZmEzNTIyNTg4ZjgzYTY4NmQ4NWM3N2MxNDI5MDljMjQuLjllMjg3ODNl
NmUxYWMxMzU5NzBiMDZkNDIwZjVlYzY0YTZiOTlmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtNDAsMTMgKzQwLDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiBkYXRh
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwKLSAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFz
aywgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncykKK0RyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+
IGZsYWdzLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogICAgIDogbV9jbGllbnRQ
b3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9z
aXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKICAgICAsIG1fZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spCiAgICAgLCBtX2FwcGxpY2F0aW9u
RmxhZ3MoZmxhZ3MpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2RyYWdEYXRhTWFw
KGRhdGEpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKaW5kZXggMjFiOTdmNThiMGVlMzllNDQ3MjFlNmYyN2QwN2U2MjkxMmViMDRkNy4uY2M4
MDAzZjVlMTUzMjA1YWMwNzVhZDA2OTU0MjE1OTUwMTk5ZGViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsOSArOTMsOSBAQCBzdGF0
aWMgTFJFU1VMVCBDQUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlO
VCBtZXNzYWdlLCBXUEFSQU0gdwogICAgIHJldHVybiBscmVzdWx0OwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKK3N0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiB7Ci0gICAg
YXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFz
dGVib2FyZCA9IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSk7CiAgICAg
Q09NUHRyPElEYXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9s
ZUdldENsaXBib2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0g
MDsKQEAgLTEwNCwyMCArMTA0LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCgpCitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNv
bnRleHQpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9iamVjdDsKICAgICBXQ0Rh
dGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsKLSAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCBkYXRhT2JqZWN0LmdldCgpKTsKIH0KIAog
Ly8gc3RhdGljCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZShjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CiB7CiAgICAgaWYgKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKQotICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLmNyZWF0ZVBhc3RlYm9hcmRDb250
ZXh0KCksIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIGFk
ZCBhIGNvbnN0IG92ZXJsb2FkIG9mIGRyYWdEYXRhTWFwIHNvIHdlIGRvbid0IG5lZWQgYSBjb25z
dF9jYXN0IGhlcmUuCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2Fz
dDxEcmFnRGF0YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5jcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpLCBjb25z
dF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOwogfQogI2VuZGlmCiAK
QEAgLTEzOSwyOSArMTM5LDMzIEBAIHZvaWQgUGFzdGVib2FyZDo6ZmluaXNoQ3JlYXRpbmdQYXN0
ZWJvYXJkKCkKICAgICBDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0ID0gOjpSZWdpc3RlckNsaXBi
b2FyZEZvcm1hdChMIldlYktpdCBDdXN0b20gRGF0YSBGb3JtYXQiKTsKIH0KIAotUGFzdGVib2Fy
ZDo6UGFzdGVib2FyZCgpCi0gICAgOiBtX2RhdGFPYmplY3QoMCkKK1Bhc3RlYm9hcmQ6OlBhc3Rl
Ym9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCisgICAg
OiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fZGF0YU9iamVjdCgwKQogICAg
ICwgbV93cml0YWJsZURhdGFPYmplY3QoMCkKIHsKICAgICBmaW5pc2hDcmVhdGluZ1Bhc3RlYm9h
cmQoKTsKIH0KIAotUGFzdGVib2FyZDo6UGFzdGVib2FyZChJRGF0YU9iamVjdCogZGF0YU9iamVj
dCkKLSAgICA6IG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQorUGFzdGVib2FyZDo6UGFzdGVib2Fy
ZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgSURhdGFPYmpl
Y3QqIGRhdGFPYmplY3QpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAs
IG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV93cml0YWJsZURhdGFPYmplY3QoMCkK
IHsKICAgICBmaW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQoKTsKIH0KIAotUGFzdGVib2FyZDo6UGFz
dGVib2FyZChXQ0RhdGFPYmplY3QqIGRhdGFPYmplY3QpCi0gICAgOiBtX2RhdGFPYmplY3QoZGF0
YU9iamVjdCkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmRDb250ZXh0PiYmIGNvbnRleHQsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCkKKyAgICA6IG1f
Y29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3Qp
CiAgICAgLCBtX3dyaXRhYmxlRGF0YU9iamVjdChkYXRhT2JqZWN0KQogewogICAgIGZpbmlzaENy
ZWF0aW5nUGFzdGVib2FyZCgpOwogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IERy
YWdEYXRhTWFwJiBkYXRhTWFwKQotICAgIDogbV9kYXRhT2JqZWN0KDApCitQYXN0ZWJvYXJkOjpQ
YXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBj
b25zdCBEcmFnRGF0YU1hcCYgZGF0YU1hcCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRl
eHQpKQorICAgICwgbV9kYXRhT2JqZWN0KDApCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9iamVjdCgw
KQogICAgICwgbV9kcmFnRGF0YU1hcChkYXRhTWFwKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYmI3Yzg0YmY4MTQ3NWNjYzkxOWYw
NzgzMDA0ZDkyOTcxODAwZmU1ZS4uNjExZjQ2MjRkYmI4OTYxYTlhYWQxNzNlNTZlNzU1YWFmNDM5
MDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0xNDA5LDYgKzE0MDksNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIGVu
Y29kZXIgPDwgZHJhZ0RhdGEuZmlsZU5hbWVzKCk7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGRy
YWdEYXRhLmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKTsKKyAgICBlbmNvZGVyIDw8IGRyYWdE
YXRhLnBhZ2VJRCgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQpAQCAtMTQ0Myw3ICsxNDQ0LDEx
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZHJhZ0RhdGEg
PSBEcmFnRGF0YShwYXN0ZWJvYXJkTmFtZSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9u
LCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3MsIGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2spOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBkcmFnRGF0YSA9IERyYWdEYXRhKHBhc3RlYm9hcmROYW1lLCBjbGllbnRQb3NpdGlv
biwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgYXBwbGljYXRp
b25GbGFncywgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaywgcGFnZUlEKTsKICAgICBkcmFnRGF0
YS5zZXRGaWxlTmFtZXMoZmlsZU5hbWVzKTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA5MGViNGRiZGRjMGZh
NzgzM2UyOGE4ZjNmMTI2ZGNmOTA3ODMxZTkxLi44ZGQ0MzI1NGM1MmVhYmU2NGRmYzkyYzExOWI3
OWYzODY0ZTNhYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtNDAxOSw3ICs0MDE5LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBs
OjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5m
by5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRvIGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3
IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10p
OwogICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7Ci0gICAgV2ViQ29yZTo6RHJh
Z0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlv
bk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwg
ZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CisgICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJh
dGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQo
KSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaywgbV9wYWdlLT53ZWJQ
YWdlSUQoKSk7CiAKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwog
ICAgIG1fcGFnZS0+ZHJhZ0VudGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bh
c3RlYm9hcmQubmFtZSk7CkBAIC00MDU3LDcgKzQwNTcsNyBAQCBOU0RyYWdPcGVyYXRpb24gV2Vi
Vmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5m
bykKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAgIGF1dG8g
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dp
bmdJbmZvXSk7CiAgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9u
TWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKLSAgICBXZWJD
b3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFn
T3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxl
YXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKKyAgICBX
ZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBk
cmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9y
ZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLCBtX3Bh
Z2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX3BhZ2UtPmRyYWdVcGRhdGVkKGRyYWdEYXRhLCBkcmFn
Z2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogCiAgICAgTlNJbnRlZ2VyIG51bWJl
ck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX3BhZ2UtPmN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1Rv
QmVBY2NlcHRlZCgpOwpAQCAtNDA4MSw3ICs0MDgxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJh
Z2dpbmdFeGl0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwg
W21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5m
by5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyht
X3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3Bl
cmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBw
bGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0lu
Zm8pLCBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAg
ICAgbV9wYWdlLT5kcmFnRXhpdGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0
ZWJvYXJkLm5hbWUpOwogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7
CiAgICAgZHJhZ2dpbmdJbmZvLm51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxO
dW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwpAQCAtNDA5Nyw3ICs0MDk3LDcgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2lu
Z0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBv
aW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9y
ZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0Rh
dGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwg
Y29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCks
IGRyYWdnaW5nSW5mbyksIGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBtX3BhZ2UtPndlYlBh
Z2VJRCgpKTsKIAogICAgIE5TQXJyYXkgKnR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFz
dGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDhkMTQ3N2M5YjZlNGYzOGJjNzQ5OTFiZWEy
ZjJiZmNkMjIwOTA5MTIuLmM4OWY5NWZmYmQ1MzdiNjA5M2VkMTU3MTgxODI2YzFiZDdjZTkxZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzc3Nyw3ICs3Nzc3LDE2IEBAIC0gKFdlYkNvcmU6OkRyYWdE
YXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGRy
YWdEZXN0CiAgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IFdlYkNvcmU6OmFueURyYWdPcGVy
YXRpb24oKTsKICAgICBpZiAoIXNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbikKICAgICAgICAg
ZHJhZ09wZXJhdGlvbk1hc2sucmVtb3ZlKFdlYkNvcmU6OkRyYWdPcGVyYXRpb246Ok1vdmUpOwot
ICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBX
ZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ssIHsgfSwg
V2ViS2l0Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25BY3Rp
b24pIH07CisKKyAgICByZXR1cm4geworICAgICAgICBzZXNzaW9uLAorICAgICAgICBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwKKyAgICAgICAgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KGdsb2JhbCksCisgICAgICAgIGRyYWdPcGVyYXRpb25NYXNrLAorICAgICAgICB7IH0sCisg
ICAgICAgIFdlYktpdDo6Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKSwKKyAgICAgICAgX3BhZ2UtPndlYlBhZ2VJRCgpCisgICAgfTsKIH0KIAogLSAo
dm9pZCljbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JD
bGllbnRHdGsuY3BwCmluZGV4IDlmOTg2NTk1MjE3MWYzMzdiMTczY2Y1NTFmYjk0OWU4ZjI4OTdj
NGQuLjFjY2VkZDljNTgxNjkxNWIxZWRhYjM4N2U2N2ZjMDY2YWVkNWRlNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xp
ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Z3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0V2ZW50TmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlUGFzdGVi
b2FyZENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEl0ZXJhdG9yLmg+CkBAIC0xNDUsNyArMTQ2LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVw
ZGF0ZUdsb2JhbFNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgcGFzdGVib2FyZENvbnRlbnQu
Y2FuU21hcnRDb3B5T3JEZWxldGUgPSBmYWxzZTsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0
ID0gcGxhaW5UZXh0KCpyYW5nZSk7CiAgICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3kp
OwotICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpLT53cml0ZShwYXN0
ZWJvYXJkQ29udGVudCk7CisgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9u
KFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZyYW1lLT5wYWdlSUQoKSkpLT53cml0ZShw
YXN0ZWJvYXJkQ29udGVudCk7CiB9CiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRTaG93
VW5pY29kZU1lbnUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDhiMTRiNjJj
MDEzMzE0Y2QzNWJkYjM4M2YwMWM5ZWJiZDNkYmE0NzkuLjYwMjNjZTc4Zjg0MGJkY2QzOWI2NjM3
YTg0YmE0Zjg0MzA4YjFkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9yLmg+CkBAIC0xODgsOCArMTg5LDgg
QEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikKIHsK
LSAgICBpZiAoYXV0byBmcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3AoKSwgZWxlbWVudCwgdXJsLCBsYWJlbCk7CisgICAgaWYgKGF1dG8g
ZnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKSkKKyAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZyYW1lLT5wYWdl
SUQoKSkpLCBlbGVtZW50LCB1cmwsIGxhYmVsKTsKIH0KIAogI2VuZGlmIC8vIFVTRShBUFBLSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDZi
ODMzMDNmZTVlMWFjZWMzY2U1YjAzMjU5YjdiMGNjZjQzN2U0OWMuLjI5ODUzNjQ2MjdhYmNmYmJm
YjViNWRjOTMwZGU1NmM5MDAzMDdiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MTQ0LDcgKzQxNDQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNv
bnN0IEludAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEo
JnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrLCBmbGFncyk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVj
dGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBmbGFncywgbV9pZGVudGlmaWVyKTsKICAgICBzd2l0Y2ggKGFjdGlvbikg
ewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6IHsKICAgICAgICAgYXV0
byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0Vu
dGVyZWQoZHJhZ0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4ZDQ1MTU2N2EzZTY0Y2VkYWY2ZjVhNDU2N2E4ZmFj
N2RiODVjYmQwLi42NDY5YTZhZWFjYjUyYjkwYjQ4N2ZkM2U4OGU3ZDBiNGI2ZDU0OTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtMTE0LDYgKzExNCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL05vZGVSZW5kZXJTdHlsZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KQEAgLTI5
ODYsNyArMjk4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50
MzJfdCBhY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gbGlua0VsZW1lbnQtPnRl
eHRDb250ZW50KCk7CiAgICAgICAgICAgICAgICAgdGl0bGUgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXModGl0bGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9pbnRl
cmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgq
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCksIGVsZW1lbnQsIHVybCwgdGl0bGUp
OworICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZWRpdG9yKCkud3Jp
dGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBh
Z2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGVsZW1lbnQuZG9jdW1lbnQoKS5wYWdlSUQoKSkp
LCBlbGVtZW50LCB1cmwsIHRpdGxlKTsKICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmlzTGlu
aygpKQogICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZWRpdG9yKCku
Y29weVVSTChlbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBlbGVtZW50LnRleHRDb250ZW50KCkpOwogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQppbmRleCBmMjFlOTQzYmU0ZTY2MjRk
ZWVkYzNiZGJjMmRjMzRjNTc3M2Y0YTIxLi41NTY3NDk5MDRmZDUzNmIyNTE0ODMwNjc5ZGI4ZjY2
Yzg4MmJkNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVi
b2FyZFdyaXRlci5oPgogCkBAIC0yNjgsOCArMjY5LDggQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojpi
ZWdpbkRyYWcoRHJhZ0l0ZW0sIEZyYW1lJiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2lu
dCYKIAogdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikKIHsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBl
bGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLndyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIGVs
ZW1lbnQsIHVybCwgbGFiZWwpOworICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihlbGVt
ZW50LmRvY3VtZW50KCkuZnJhbWUoKSkpCisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS53cml0ZUlt
YWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChQYWdlUGFz
dGVib2FyZENvbnRleHQ6OmNyZWF0ZShmcmFtZS0+cGFnZUlEKCkpKSwgZWxlbWVudCwgdXJsLCBs
YWJlbCk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420704</attachid>
            <date>2021-02-17 13:24:32 -0800</date>
            <delta_ts>2021-02-17 15:23:04 -0800</delta_ts>
            <desc>Fix GTK build again</desc>
            <filename>bug-221987-20210217132431.patch</filename>
            <type>text/plain</type>
            <size>77603</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5NzdiZDI2MWIxNWY4
OTk4NDM4NWQ2MTRhMzQ4YzdhMGFkZTJmOS4uYTY0OWNmY2RkYmQyOWFkMTUzYWUzZTRjNmE4OGU1
YjRlY2E4ZDEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTAyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBsdW1iIGFuIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFBhc3RlYm9hcmQtcmVsYXRlZCBjb2RlcGF0
aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsg
aW4gcHJvZ3Jlc3Mgb25seS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZDo6cmVhZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjp3cml0
ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZDo6SXRlbVdyaXRlcjo6SXRlbVdyaXRlcik6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKToK
KyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDbGlwYm9hcmRFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBlcmZvcm1DdXRPckNvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpwYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFp
blRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzUXVvdGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvcHlJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUdsb2JhbFNlbGVjdGlvbik6CisgICAgICAgICog
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBs
YWNlTm9kZUZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y29weVRl
eHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpjb3B5VGV4dCk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZy
YWdtZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJh
Z09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxE
cmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBw
YWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OkRyYWdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjcmVhdGVQYXN0ZWJv
YXJkQ29udGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6cGFnZUlEIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQ6OmlzUGFnZVBhc3RlYm9hcmRDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6
OlN0YXRpY1Bhc3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNhblNtYXJ0UmVwbGFjZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JHbG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRl
Rm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFz
dGVib2FyZCk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW21hY09TXSBJbnRyb2R1Y2UgYSBuZXcgY29udGV4dCBtZW51IGl0
ZW0gdG8gcHJldmlldyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzE5YTA5YWRhZWUyZjQ3OWFhY2NjOTBj
ZDgzZmI3ZWNlNDllODkzOC4uNzgzMzQ2NzkwZWUyNjU0YjdlZDA4NWFkN2E5NGM4NDA3YTIzMGRj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBhdGhzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNz
IG9ubHkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRy
YWdnaW5nRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdEYXRhRm9yRHJvcFNlc3Npb246ZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkVkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xp
ZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1l
bnQpOgorCiAyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFttYWNPU10gSW50cm9kdWNlIGEgbmV3IGNvbnRleHQgbWVudSBpdGVtIHRv
IHByZXZpZXcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggODY4NTFmNDQw
MTU1OWYyY2VkZDE0NTA5MDQ4MzI0YmY3NzM2YTBkOC4uNmIzOTdjNzRjMWM4ZTBjYzdmMWYyNjM1
OTQ1YjZkODlmNGY1ZmY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFBsdW1iIGFuIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFBh
c3RlYm9hcmQtcmVsYXRlZCBjb2RlcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3Mgb25seS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorCiAyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gSW50cm9kdWNlIGEgbmV3
IGNvbnRleHQgbWVudSBpdGVtIHRvIHByZXZpZXcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBiMzNhMzY5MTdiYTIyNGJkZGY2MmQ2MDU3NTA0MGQyZDdlYzk2Yzk4Li5mZDU4NjhmYmU0MTFl
OGUyODgxMjVkZTgxNGFiNWFiMDFmYmUzMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTg5Nyw2
ICs4OTcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGFn
ZS9QYWdlSWRlbnRpZmllci5oCiAgICAgcGFnZS9QYWdlT3ZlcmxheS5oCiAgICAgcGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuaAorICAgIHBhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgKICAg
ICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCiAgICAgcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQuaAogICAgIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgKQEAgLTEwNDMsNiAr
MTA0NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaAogICAgIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oCiAg
ICAgcGxhdGZvcm0vUGFzdGVib2FyZC5oCisgICAgcGxhdGZvcm0vUGFzdGVib2FyZENvbnRleHQu
aAogICAgIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKICAgICBwbGF0Zm9ybS9QYXN0
ZWJvYXJkSXRlbUluZm8uaAogICAgIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNw
cAppbmRleCA2NGYxYzQzZTIzNjRhZDFkNjQyZmI4ZTg5YzJhMjRiNDQxMzM4ZGQ0Li40MGJiMDZh
ZjI5ZDllNDVkMGQ1OTliMzE4OWIwZDYzMGM0NWI4NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJKU0NsaXBib2FyZEl0ZW0uaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBhZ2VQYXN0
ZWJvYXJkQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMTA1LDcgKzEwNiw3IEBAIHZv
aWQgQ2xpcGJvYXJkOjpyZWFkVGV4dChSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUo
ZnJhbWUtPnBhZ2VJRCgpKSk7CiAgICAgYXV0byBjaGFuZ2VDb3VudEF0U3RhcnQgPSBwYXN0ZWJv
YXJkLT5jaGFuZ2VDb3VudCgpOwogICAgIGlmICghZnJhbWUtPnJlcXVlc3RET01QYXN0ZUFjY2Vz
cygpKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwpAQCAtMTQ2
LDcgKzE0Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVRleHQoY29uc3QgU3RyaW5nJiBkYXRh
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgUGFzdGVib2FyZEN1c3RvbURh
dGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9z
LCBkYXRhKTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihkb2N1bWVudC0+b3JpZ2luSWRlbnRp
ZmllckZvclBhc3RlYm9hcmQoKSk7Ci0gICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKCktPndyaXRlQ3VzdG9tRGF0YSh7IFdURk1vdmUoY3VzdG9tRGF0YSkgfSk7CisgICAgUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3Jl
YXRlKGZyYW1lLT5wYWdlSUQoKSkpLT53cml0ZUN1c3RvbURhdGEoeyBXVEZNb3ZlKGN1c3RvbURh
dGEpIH0pOwogICAgIHByb21pc2UtPnJlc29sdmUoKTsKIH0KIApAQCAtMTYzLDcgKzE2NCw3IEBA
IHZvaWQgQ2xpcGJvYXJkOjpyZWFkKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOworICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShm
cmFtZS0+cGFnZUlEKCkpKTsKICAgICBhdXRvIGNoYW5nZUNvdW50QXRTdGFydCA9IHBhc3RlYm9h
cmQtPmNoYW5nZUNvdW50KCk7CiAKICAgICBpZiAoIWZyYW1lLT5yZXF1ZXN0RE9NUGFzdGVBY2Nl
c3MoKSkgewpAQCAtMzAzLDcgKzMwNCw3IEBAIFBhc3RlYm9hcmQmIENsaXBib2FyZDo6YWN0aXZl
UGFzdGVib2FyZCgpCiBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6Okl0ZW1Xcml0ZXIoQ2xpcGJvYXJk
JiBjbGlwYm9hcmQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICA6IG1fY2xp
cGJvYXJkKG1ha2VXZWFrUHRyKGNsaXBib2FyZCkpCiAgICAgLCBtX3Byb21pc2UoV1RGTW92ZShw
cm9taXNlKSkKLSAgICAsIG1fcGFzdGVib2FyZChQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKSkKKyAgICAsIG1fcGFzdGVib2FyZChQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUoY2xpcGJvYXJkLmZyYW1lKCktPnBh
Z2VJRCgpKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3MWFhOGM1ODFiNjVkOTRjYjlmNTQzMjQ3MzM5ZjgwNzVi
ZjBhNmYyLi5iNGQ2ODlmNWZjNzQ4NDM0M2I1MmVjZTQ2Y2Q2ODQ4ZGMzOWRlYWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
MjY3LDYgKzUyNjcsOCBAQAogCQlGM0FCRkUwQzEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjNBQkZFMEIxMzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuaCAqLzsg
fTsKIAkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NzExNjFENTMy
MDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLzsgfTsKIAkJRjQwM0U3ODcyMzYzQjU4QzAw
MDQ0NTUwIC8qIEVudGVyS2V5SGludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQwM0U3ODUyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0MERB
QUVDMjVEOUYyNUUwMDExQjRGQSAvKiBQYXN0ZWJvYXJkQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwREFBRUIyNUQ5RjI1RTAwMTFCNEZB
IC8qIFBhc3RlYm9hcmRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRjQwREFBRUYyNUQ5RjNCRjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJv
YXJkQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQwREFBRUUyNUQ5RjNCRjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MjkyNjE4
MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXllcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MjkyNjE3MjUyNjRENDQwMDAwNzg5
OCAvKiBNZWRpYVBsYXllcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMzRTkwMzFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGlj
UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDM3N0Q1NzI1NTFD
OUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzNzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERp
c3BsYXlMaXN0SXRlbVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTY1OTIsNiArMTY1OTQsOCBAQAogCQlGM0Q0NjE0NzExNjFENTMyMDBD
QTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFcnJvckhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwM0U3
ODUyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbnRl
cktleUhpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwM0U3ODYyMzYzQjU4
QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbnRlcktl
eUhpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDBEQUFFQjI1RDlGMjVF
MDAxMUI0RkEgLyogUGFzdGVib2FyZENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2Fy
ZENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwREFBRUUyNUQ5RjNC
RjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdl
UGFzdGVib2FyZENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyMkI4
QjUyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5
ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVySWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxODIsNiArMjIxODYsNyBAQAogCQkJCTJE
NUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZE
MTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTJE
NUM5Q0ZFMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCAqLywKKwkJ
CQlGNDBEQUFFRTI1RDlGM0JGMDAxMUI0RkEgLyogUGFnZVBhc3RlYm9hcmRDb250ZXh0LmggKi8s
CiAJCQkJMzcxRTY1Q0QxMzY2MUVFRDAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLywK
IAkJCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAqLywKIAkJ
CQlCQzRBNTMyODI1NjA1NjNCMDAyOEM1OTIgLyogUERGSW1hZ2VDYWNoaW5nUG9saWN5LmggKi8s
CkBAIC0yNzY1NCw2ICsyNzY1OSw3IEBACiAJCQkJNDE4NEY1MTUxRUFGMDU5ODAwRjE4QkYwIC8q
IE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLywKIAkJCQkyRUUwMkExRTFGNzMyNDI4MDAwNkFGNzIg
LyogUGFzdGVib2FyZC5jcHAgKi8sCiAJCQkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBh
c3RlYm9hcmQuaCAqLywKKwkJCQlGNDBEQUFFQjI1RDlGMjVFMDAxMUI0RkEgLyogUGFzdGVib2Fy
ZENvbnRleHQuaCAqLywKIAkJCQlGNEZCMzRGQjIzNTBDODVEMDBGMDA5NEEgLyogUGFzdGVib2Fy
ZEN1c3RvbURhdGEuY3BwICovLAogCQkJCUY0RkIzNEZBMjM1MEM4NUQwMEYwMDk0QSAvKiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oICovLAogCQkJCUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQ
YXN0ZWJvYXJkSXRlbUluZm8uaCAqLywKQEAgLTM0MDEzLDYgKzM0MDE5LDcgQEAKIAkJCQlBNUNC
MDUyNDFGQjUxRjMzMDAwODlCOTcgLyogUGFnZU5ldHdvcmtBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ1QzlEMDAxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDVDOUQwMjE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDBEQUFFRjI1RDlGM0JGMDAxMUI0RkEgLyogUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkRCNjFBMTE2RDYwMzdF
MDBCQjMzOTQgLyogUGFnZVJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Qjgx
Q0M1MUZBQTQ0QkMwMDM3RDFFNiAvKiBQYWdlUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzQwMzUsNiArMzQwNDIsNyBAQAogCQkJCTUzNkQ1QTIzMTkzRThFMEMwMENF
NENBQiAvKiBQYXJzaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDQTEy
NTFGMTJEMDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTRCMjcwOEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNDBEQUFFQzI1RDlGMjVFMDAxMUI0RkEgLyogUGFzdGVib2FyZENvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY0RkIzNEZDMjM1MEM4NUQwMEYwMDk0QSAvKiBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ5Nzg2ODgxRkY0NUZBNTAwRTA2MEFCIC8q
IFBhc3RlYm9hcmRJdGVtSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTcxNEU5QzI4
MDAwRThEMThCIC8qIFBhc3RlYm9hcmRTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDdlMTlhZGJjMDgxMDAzODZmOTAxMjFlNjcyY2Nk
ZDM5MGUxZDYwNzcuLjFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQ4OCw5ICs0ODksOSBAQCB2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQmLCBpbnQsIGludCkKIAogI2Vsc2UKIAotUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKCkKK1JlZjxEYXRhVHJhbnNm
ZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZTo6UmVh
ZFdyaXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBlOjpEcmFnQW5k
RHJvcERhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVN
b2RlOjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKFBhZ2VQYXN0
ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LnBhZ2VJRCgpKSksIFR5cGU6OkRyYWdBbmRE
cm9wRGF0YSkpOwogfQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuaAppbmRleCBhN2JjYzg4MzgzMzk5ZjdkMzVjNTM3Y2I2NjBjNThmYjI1NGJmMjZk
Li5iMDg0ZWU0MTY1MTI2NTIyMjBlNDNhNmQ0YmNjY2FmZjdjNjY2ZDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5oCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1p
dFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQot
ICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKCk7CisgICAgc3RhdGlj
IFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9j
dW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChjb25z
dCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgc3RhdGljIFJlZjxEYXRhVHJh
bnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wg
ZHJhZ2dpbmdGaWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDc5Mjk0MjA3
YThjMDQ5NjJjY2IyMzk5NGI2YjE0YzBkZmI2MTJhMS4uMjIwZTA0MzJiZTM4MmZmMGVlMWZmODcw
MzkyZDQxMGE5ZWFiZTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtODMsNiAr
ODMsNyBAQAogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJS
ZW1vdmVGb3JtYXRDb21tYW5kLmgiCkBAIC0zOTksNyArNDAwLDcgQEAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBk
b2N1bWVudCwKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1BsYWluVGV4dDoK
ICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3Vz
dG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0
VHlwZSA9ICJ0ZXh0L3BsYWluIl9zOwotICAgICAgICAgICAgYXV0byBwbGFpblRleHQgPSBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+cmVhZFN0cmluZyhwbGFpblRleHRUeXBl
KTsKKyAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0ID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LnBhZ2VJRCgp
KSktPnJlYWRTdHJpbmcocGxhaW5UZXh0VHlwZSk7CiAgICAgICAgICAgICBhdXRvIHBhc3RlYm9h
cmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgICAgICAgICBwYXN0ZWJv
YXJkLT53cml0ZVN0cmluZyhwbGFpblRleHRUeXBlLCBwbGFpblRleHQpOwogICAgICAgICAgICAg
cmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCkpOwpAQCAt
NDA3LDcgKzQwOCw3IEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNm
ZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgICAgIEZBTExUSFJP
VUdIOwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToKICAgICBjYXNlIENsaXBi
b2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbjoKLSAgICAgICAgcmV0dXJuIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3Jl
TW9kZTo6UmVhZG9ubHksIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShkb2N1bWVudC5wYWdl
SUQoKSkpKTsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToKICAgICBj
YXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZl
bnRLaW5kOjpCZWZvcmVQYXN0ZToKQEAgLTQzMyw3ICs0MzQsNyBAQCBzdGF0aWMgYm9vbCBkaXNw
YXRjaENsaXBib2FyZEV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIHRhcmdldCwgQ2xpcGJvYXJkRXZl
bnRLaW5kCiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICBib29sIG5vRGVm
YXVsdFByb2Nlc3NpbmcgPSBldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogICAgIGlmIChub0Rl
ZmF1bHRQcm9jZXNzaW5nICYmIChraW5kID09IENsaXBib2FyZEV2ZW50S2luZDo6Q29weSB8fCBr
aW5kID09IENsaXBib2FyZEV2ZW50S2luZDo6Q3V0KSAmJiBkYXRhVHJhbnNmZXItPnBhc3RlYm9h
cmQoKS5oYXNEYXRhKCkpCi0gICAgICAgIGRhdGFUcmFuc2Zlci0+Y29tbWl0VG9QYXN0ZWJvYXJk
KCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7CisgICAgICAgIGRhdGFUcmFu
c2Zlci0+Y29tbWl0VG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUodGFyZ2V0LT5kb2N1bWVudCgpLnBhZ2VJ
RCgpKSkpOwogCiAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAK
QEAgLTYxOCw3ICs2MTksNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1
bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFydAogCiB2b2lkIEVkaXRv
cjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCkKIHsKLSAgICBwYXN0ZUFzUGxhaW5U
ZXh0V2l0aFBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsK
KyAgICBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBh
Z2VJRCgpKSkpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJv
YXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCkBAIC0xNDExLDcgKzE0MTIsNyBAQCB2b2lkIEVk
aXRvcjo6cGVyZm9ybUN1dE9yQ29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIgYWN0aW9uKQogICAg
IH0KIAogICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSkKLSAgICAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2Zl
cigpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNl
IDogUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICAgICAgUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9j
dW1lbnQucGFnZUlEKCkpKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5z
ZmVyKCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0ZWJvYXJkOjpDYW5TbWFydFJlcGxh
Y2UgOiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogICAgIGVsc2UgewogICAgICAg
ICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBudWxscHRyOwogICAgICAgICBpZiAo
YWN0aW9uID09IENvcHlBY3Rpb24pCkBAIC0xNDE5LDE3ICsxNDIwLDE3IEBAIHZvaWQgRWRpdG9y
OjpwZXJmb3JtQ3V0T3JDb3B5KEVkaXRvckFjdGlvblNwZWNpZmllciBhY3Rpb24pCiAKICAgICAg
ICAgaWYgKGltYWdlRWxlbWVudCkgewogI2lmICFQTEFURk9STShXSU4pCi0gICAgICAgICAgICB3
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
KSwgKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51cmwoKSwgZG9jdW1lbnQoKS50aXRsZSgpKTsK
KyAgICAgICAgICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBh
Z2VJRCgpKSksICppbWFnZUVsZW1lbnQsIGRvY3VtZW50KCkudXJsKCksIGRvY3VtZW50KCkudGl0
bGUoKSk7CiAjZWxzZQogICAgICAgICAgICAgLy8gRklYTUU6IERlbGV0ZSBhZnRlciA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xNzc2MTg+IGxhbmRzLgotICAgICAgICAgICAgUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlSW1hZ2UoKmltYWdlRWxlbWVudCwgZG9jdW1lbnQo
KS51cmwoKSwgZG9jdW1lbnQoKS50aXRsZSgpKTsKKyAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3Vt
ZW50LnBhZ2VJRCgpKSktPndyaXRlSW1hZ2UoKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51cmwo
KSwgZG9jdW1lbnQoKS50aXRsZSgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgewogI2lmICFQ
TEFURk9STShXSU4pCi0gICAgICAgICAgICB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgqUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgICAgICAgICAgd3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdl
UGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSkpOwogI2Vsc2UK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBEZWxldGUgYWZ0ZXIgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTc3NjE4PiBsYW5kcy4KLSAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZSgpLT53cml0ZVNlbGVjdGlvbigqc2VsZWN0aW9uLCBjYW5TbWFydENvcHlPckRlbGV0ZSgp
LCAqbV9kb2N1bWVudC5mcmFtZSgpLCBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yRGF0YVRyYW5zZmVy
KTsKKyAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFz
dGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSktPndyaXRlU2VsZWN0
aW9uKCpzZWxlY3Rpb24sIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksICptX2RvY3VtZW50LmZyYW1l
KCksIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JEYXRhVHJhbnNmZXIpOwogI2VuZGlmCiAgICAgICAg
IH0KICAgICB9CkBAIC0xNDQ3LDcgKzE0NDgsNyBAQCB2b2lkIEVkaXRvcjo6cGVyZm9ybUN1dE9y
Q29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIgYWN0aW9uKQogCiB2b2lkIEVkaXRvcjo6cGFzdGUo
RnJvbU1lbnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiB7Ci0gICAgcGFzdGUo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCBmcm9tTWVudU9yS2V5QmluZGlu
Zyk7CisgICAgcGFzdGUoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFz
dGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSksIGZyb21NZW51T3JL
ZXlCaW5kaW5nKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlKFBhc3RlYm9hcmQmIHBhc3RlYm9h
cmQsIEZyb21NZW51T3JLZXlCaW5kaW5nIGZyb21NZW51T3JLZXlCaW5kaW5nKQpAQCAtMTQ3NSw3
ICsxNDc2LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoRnJvbU1lbnVPcktleUJp
bmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiAgICAgaWYgKCFjYW5QYXN0ZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFs
c2UpOwotICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2Fy
ZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4
dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0
ZUFzUXVvdGF0aW9uKEZyb21NZW51T3JLZXlCaW5kaW5nIGZyb21NZW51T3JLZXlCaW5kaW5nKQpA
QCAtMTQ4OCw3ICsxNDg5LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNRdW90YXRpb24oRnJvbU1l
bnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCiAgICAgICAgIHJldHVybjsKICAg
ICB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhmYWxzZSk7CiAgICAgUmVz
b3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yIHZhbGlkYXRpb25TdXBwcmVzc29yKGRvY3Vt
ZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0gUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6
Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKTsKICAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKQogICAgICAgICBwYXN0
ZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQuZ2V0KCksIHsgUGFzdGVPcHRpb246OkFsbG93UGxh
aW5UZXh0LCBQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24gfSk7CiAgICAgZWxzZQpAQCAtMTU1NSw3
ICsxNTU2LDcgQEAgdm9pZCBFZGl0b3I6OnNpbXBsaWZ5TWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwg
Tm9kZSogZW5kTm9kZSkKIAogdm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgY29weVVSTCh1cmwsIHRpdGxlLCAqUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAgIGNvcHlVUkwodXJsLCB0aXRsZSwgKlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNy
ZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSkpOwogfQogCiB2b2lkIEVkaXRvcjo6Y29weVVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYgcGFzdGVib2Fy
ZCkKQEAgLTE1OTcsMTAgKzE1OTgsMTAgQEAgdm9pZCBFZGl0b3I6OmNvcHlJbWFnZShjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgICAgIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdl
VVJMKCk7CiAKICNpZiAhUExBVEZPUk0oV0lOKQotICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCAqZWxlbWVudCwgdXJsLCByZXN1
bHQuYWx0RGlzcGxheVN0cmluZygpKTsKKyAgICB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVh
dGUobV9kb2N1bWVudC5wYWdlSUQoKSkpLCAqZWxlbWVudCwgdXJsLCByZXN1bHQuYWx0RGlzcGxh
eVN0cmluZygpKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IERlbGV0ZSBhZnRlciA8aHR0cDovL3dl
YmtpdC5vcmcvYi8xNzc2MTg+IGxhbmRzLgotICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpLT53cml0ZUltYWdlKCplbGVtZW50LCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5U3Ry
aW5nKCkpOworICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVi
b2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSktPndyaXRlSW1hZ2UoKmVs
ZW1lbnQsIHVybCwgcmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggMWExMDAyZjgzMWUxZjBj
MDAyNGIyNDRiMTc0MWY1YWJkMTM4Zjc0OS4uOTg0MTdkZWJmYjAyYWJiMzY1ZjQ5ZTBjZGU4MWI3
NzVkMzA2ZjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBA
IC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSW5zZXJ0TGlzdENvbW1hbmQuaCIKICNpbmNsdWRl
ICJJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTkxNCw3ICs5MTUsNyBA
QCBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGVHbG9iYWxTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiAgICAgQVNTRVJUX1VOVVNFRChzb3VyY2UsIHNv
dXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcpOwogICAgIFVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRpY2F0b3IoZnJhbWUpOwotICAgIGZyYW1lLmVk
aXRvcigpLnBhc3RlKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKSk7Cisg
ICAgZnJhbWUuZWRpdG9yKCkucGFzdGUoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVj
dGlvbihQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShmcmFtZS5wYWdlSUQoKSkpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CmluZGV4IDJiNzNiZGQ2ZmNmODhmMDFjMDk2YzkwNWZjMTI2ZTQ5ZDdiYjY0OWYuLmE5YjQ2YWIz
NGI3MDIzMDk4ZWRlZGNjMzIwNzIyZGRjMTc4OWY3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9FZGl0b3JNYWMubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIkhUTUxOYW1lcy5o
IgogI2ltcG9ydCAiTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCIKICNpbXBvcnQgIkxlZ2FjeVdl
YkFyY2hpdmUuaCIKKyNpbXBvcnQgIlBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIgogI2ltcG9ydCAi
UGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTEwMCw3ICsxMDEsNyBAQCB2b2lkIEVkaXRvcjo6cGFz
dGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8UGFzdGVP
cHRpb24+CiAKIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpOworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChQYWdlUGFzdGVib2FyZENv
bnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFzdGVib2FyZE5hbWUpOwogICAg
IGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkpCiAgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHsgUGFz
dGVPcHRpb246OkFsbG93UGxhaW5UZXh0IH0pOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDQsNyBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGF1dG8gcmFuZ2UgPSBtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKm5vZGUpOwogICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RT
ZXRGb2N1cyk7CiAKLSAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpOwor
ICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZSht
X2RvY3VtZW50LnBhZ2VJRCgpKSwgcGFzdGVib2FyZE5hbWUpOwogCiAgICAgaWYgKCFtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsK
ICAgICAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAppbmRleCA5
NGQwM2Q4NWQ2ZGE5ZjRmODhmOGNkMTJlNGJmZmJkMzNiNGRjNTY3Li5mMjg4NzNjMGE1OGNiZDg5
MDQyN2MwN2E2MTJmNGM0OTJlYTc4ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpT
Q29tbWFuZExpbmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRl
eHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIldlYkNvbnNvbGVBZ2VudC5oIgpAQCAtMTQ5LDcgKzE1MCw3IEBAIHZvaWQgQ29tbWFu
ZExpbmVBUElIb3N0OjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAKIHZvaWQgQ29tbWFuZExpbmVB
UElIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBhc3RlYm9hcmQ6
OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CisgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKHsgfSktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVw
bGFjZSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxl
T2JqZWN0OjpnZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDgzMjI5Njc2Y2E3NDFm
ODYzMGU3OTRiNTVjNDQ5MjQwMTIxOTY3OGMuLjAwZDYyY2Y0NzE5NmU4ZTc3OTMyZGZjODU3ZDIw
Y2IwMTQ4MmIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQxNCw3ICs0MTUsOCBA
QCBTdHJpbmcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpwb3J0KCkgY29uc3QKIAogdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFpblRleHQodGV4dCwg
UGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fZnJv
bnRlbmRQYWdlID8gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnBhZ2VJRCgpIDogV1RGOjpu
dWxsb3B0OworICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVi
b2FyZENvbnRleHQ6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VJRCkpKS0+d3JpdGVQbGFpblRleHQodGV4
dCwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVw
ZW5kVG9LaWxsUmluZywgYm9vbCBzaG91bGRTdGFydE5ld1NlcXVlbmNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA5ZmNlZmQ2ZTlmMzMzMjRiMWM2ZTI5MDNmZDYx
N2Y0MDdkMzVmY2QxLi44NDIxZDI1NjFmOTI5YTA2Njc1OGUwYTM1Y2U2YmM3YWQ0ZDQzMzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBA
IHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFn
RGF0YShjb25zdCBEcmFnRGF0YSYgZHJhCiAgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKIAog
ICAgIGlmIChkcmFnRGF0YS5jb250YWluc0NvbXBhdGlibGVDb250ZW50KCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gZnJhZ21lbnQgPSBmcmFtZS5lZGl0b3IoKS53ZWJDb250ZW50RnJvbVBhc3RlYm9h
cmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKSwgY29udGV4dCwg
YWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KSkKKyAgICAgICAgaWYgKGF1dG8gZnJhZ21l
bnQgPSBmcmFtZS5lZGl0b3IoKS53ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6
OmNyZWF0ZShkcmFnRGF0YSksIGNvbnRleHQsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4
dCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAKICAgICAgICAgaWYgKGRyYWdEYXRh
LmNvbnRhaW5zVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpKSB7CkBAIC0yMjAs
NyArMjIwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCiB7CiAgICAgYXV0byYgbWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgp
OwogICAgIGlmIChtYWluRnJhbWUudmlldygpKQotICAgICAgICBtYWluRnJhbWUuZXZlbnRIYW5k
bGVyKCkuY2FuY2VsRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKSwgZHJhZ0RhdGEuZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CisgICAgICAg
IG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2
ZW50KGRyYWdEYXRhKSwgUGFzdGVib2FyZDo6Y3JlYXRlKGRyYWdEYXRhKSwgZHJhZ0RhdGEuZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CiAg
ICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChudWxscHRyKTsKICAgICBpZiAobV9maWxlSW5wdXRF
bGVtZW50VW5kZXJNb3VzZSkKICAgICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+
c2V0Q2FuUmVjZWl2ZURyb3BwZWRGaWxlcyhmYWxzZSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgICAgICBSZWY8RnJhbWU+IG1haW5GcmFtZShtX3BhZ2UubWFpbkZyYW1lKCkp
OwogICAgICAgICBib29sIHByZXZlbnRlZERlZmF1bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1h
aW5GcmFtZS0+dmlldygpKQotICAgICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9IG1haW5GcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJh
Z0RhdGEpLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSksIGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBkcmFnRGF0YS5jb250YWluc0ZpbGVz
KCkpOworICAgICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5k
bGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBQYXN0
ZWJvYXJkOjpjcmVhdGUoZHJhZ0RhdGEpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2soKSwgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICAgICAgaWYgKHByZXZlbnRl
ZERlZmF1bHQpIHsKICAgICAgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7CiAgICAgICAgICAgICBt
X2RvY3VtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CkBAIC03MjQsNyArNzI0LDcgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0
aW9uYWw8RHJhZ09wZXJhdGkKIAogICAgIGF1dG8gc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdE
YXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGF1dG8gdGFyZ2V0UmVzcG9u
c2UgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1v
dXNlRXZlbnQoZHJhZ0RhdGEpLCBbJmRyYWdEYXRhXSgpIHsKLSAgICAgICAgcmV0dXJuIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKTsKKyAgICAgICAgcmV0dXJuIFBh
c3RlYm9hcmQ6OmNyZWF0ZShkcmFnRGF0YSk7CiAgICAgfSwgc291cmNlT3BlcmF0aW9uTWFzaywg
ZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICBpZiAoIXRhcmdldFJlc3BvbnNlLmFjY2Vw
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViQ29udGVudFJl
YWRlciByZWFkZXIoKmZyYW1lLCAqbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlLCB0cnVl
KTsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cChkcmFnRGF0YSk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlKGRy
YWdEYXRhKTsKICAgICBwYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CiAKICAgICBpZiAoIXJlYWRl
ci5mcmFnbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBjYjZhZTNl
YTY5ZGYwZmZiMDJhMjI2OTQ1NjFkNjEyZWM3NjFiZjVkLi5hZWVkNWMyYjM4MDc5NmUxNTYxNzQw
NDk0NmViZmRhMWM1YjQ2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0zOTg5LDcgKzM5ODksMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAvLyBGSVhN
RTogQ29uc2lkZXIgZG9pbmcgdGhpcyBlYXJsaWVyIGluIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGVh
cmxpZXN0IHBvaW50IHdlJ3JlIHN1cmUgaXQgd291bGQgYmUgc2FmZSB0byBkcm9wIGFuIG9sZCBk
cmFnLgogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKIAotICAgIGRyYWdTdGF0ZSgpLmRh
dGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZygpOworICAgIGlmICghbV9m
cmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkcmFnU3RhdGUo
KS5kYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKm1fZnJhbWUuZG9j
dW1lbnQoKSk7CiAgICAgYXV0byBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25E
ZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vOwogICAgIAogICAgIGlmIChkcmFnU3RhdGUoKS5zaG91
bGREaXNwYXRjaEV2ZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
UGFzdGVib2FyZENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9hcmRD
b250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwYzYzNmVmZGYyMzI3MTRlODNkMmNmZGNiMGFmNjRhYjY0
YWVmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9h
cmRDb250ZXh0LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkQ29udGV4
dC5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlUGFzdGVib2FyZENvbnRleHQg
ZmluYWwgOiBwdWJsaWMgUGFzdGVib2FyZENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dChPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4mJiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpCisgICAgICAgIDogUGFzdGVib2Fy
ZENvbnRleHQoKQorICAgICAgICAsIG1fcGFnZUlEKFdURk1vdmUocGFnZUlEKSkKKyAgICB7Cisg
ICAgfQorCisgICAgflBhZ2VQYXN0ZWJvYXJkQ29udGV4dCgpIHsgfQorCisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gY3JlYXRlKE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiYmIHBhZ2VJRCA9IFdURjo6bnVsbG9wdCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oV1RGTW92ZShwYWdlSUQpKTsKKyAgICB9
CisKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH0KKyAgICBib29sIGlzUGFnZVBhc3RlYm9hcmRDb250ZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBtX3BhZ2VJRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpQYWdlUGFzdGVib2FyZENvbnRleHQpCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0JiBj
b250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzUGFnZVBhc3RlYm9hcmRDb250ZXh0KCk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
Y3BwCmluZGV4IGMyN2ZkMGY2ZWExZjcwMDc5YjBjZTBkZTFkMWE2M2VmOGUyY2ZjOTQuLjU1YWJk
NTY5OTZkOGQ1Mzg1YWE3YzY5MDYyMWI0OWNmZGZlNGQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRyYWdEYXRhLmgiCisjaW5jbHVkZSAiUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgogCkBAIC0zMiwyNyArMzMsMzQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lm
ICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlv
blNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFn
RGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQog
ICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRlc3RpbmF0aW9uQWN0aW9uTWFzaykK
KyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKIHsgIAogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6
RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdz
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ss
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9u
KGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikK
ICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBwbGljYXRpb25GbGFncyhm
bGFncykKICAgICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkZXN0aW5hdGlvbkFjdGlv
bk1hc2spCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiB7CiB9CiAjZW5kaWYKIAorc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBEcmFnRGF0YTo6Y3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4geyBtX3BhZ2VJRCB9KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCmluZGV4IGFjYzNlOGVkMTYxODk4Yjg2MWM5ZmZkOTY2ODJlYTQyNGEy
ZGJlZWYuLmYyMjEyNWM1MDMwZjc1ZjNiZjk5MjRhYmEzOGJkMGRkYTUwNGU4ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbG9y
LmgiCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02NSw2
ICs2Niw4IEBAIGVudW0gY2xhc3MgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgOiB1aW50OF90IHsKICAg
ICBJc0NvcHlLZXlEb3duID0gOAogfTsKIAorY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CisKICNp
ZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFZlY3RvcjxTdHJpbmc+
PiBEcmFnRGF0YU1hcDsKICNlbmRpZgpAQCAtNzUsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZv
ckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUg
dGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywg
d2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShE
cmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERy
YWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJh
Z0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkp
OworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFj
dGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gV1RGOjpudWxsb3B0KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNh
dGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlE
cmFnRGVzdGluYXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9
IFdURjo6bnVsbG9wdCk7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5
IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBi
eSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgp
ID0gZGVmYXVsdDsKICNpZiBQTEFURk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0Rh
dGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0p
OworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8
RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEID0gV1RGOjpudWxsb3B0KTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0RhdGFNYXAo
KTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBTdHJpbmcm
IHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZv
aWQqIGRhdGFCbG9iKTsKQEAgLTExMSwxOSArMTE0LDI4IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zUHJvbWlzZSgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisgICAg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CiAKLSAgICBEcmFnRGF0YSYgb3BlcmF0b3IgPShjb25zdCBEcmFnRGF0YSYgZGF0YSkKKyAg
ICBEcmFnRGF0YSYgb3BlcmF0b3I9KGNvbnN0IERyYWdEYXRhJiBkYXRhKQogICAgIHsKICAgICAg
ICAgbV9jbGllbnRQb3NpdGlvbiA9IGRhdGEubV9jbGllbnRQb3NpdGlvbjsKICAgICAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IGRhdGEubV9nbG9iYWxQb3NpdGlvbjsKICAgICAgICAgbV9wbGF0Zm9y
bURyYWdEYXRhID0gZGF0YS5tX3BsYXRmb3JtRHJhZ0RhdGE7CiAgICAgICAgIG1fZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrID0gZGF0YS5tX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsK
ICAgICAgICAgbV9hcHBsaWNhdGlvbkZsYWdzID0gZGF0YS5tX2FwcGxpY2F0aW9uRmxhZ3M7Cisg
ICAgICAgIG1fZmlsZU5hbWVzID0gZGF0YS5tX2ZpbGVOYW1lczsKICAgICAgICAgbV9kcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrID0gZGF0YS5tX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7Cisg
ICAgICAgIG1fcGFnZUlEID0gZGF0YS5tX3BhZ2VJRDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICAgICAgbV9wYXN0ZWJvYXJkTmFtZSA9IGRhdGEubV9wYXN0ZWJvYXJkTmFtZTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgbV9kcmFnRGF0YU1hcCA9IGRhdGEubV9kcmFnRGF0
YU1hcDsKKyNlbmRpZgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQotI2VuZGlmCisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IGNyZWF0ZVBhc3RlYm9hcmRDb250
ZXh0KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV9jbGllbnRQb3NpdGlvbjsK
QEAgLTEzMyw2ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFnQXBwbGljYXRp
b25GbGFncz4gbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5h
bWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzazsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBhYWRjNDY2OThkZjc5NTY0MzYy
YTAzZjVkZmU4OWIwZWI3ODExY2U5Li5hZjU0NzE1ZDhhYzhlNmY4N2M0MWJmYWZlN2ZhYjJmZjYz
NjQ4ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgorI2luY2x1ZGUgIlBh
c3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEN1c3RvbURhdGEuaCIKICNp
bmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtMTc2LDI0ICsxNzcsMjQgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKIGNsYXNz
IFBhc3RlYm9hcmQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhc3RlYm9hcmQpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYXN0ZWJvYXJkKCk7CisgICAgUGFz
dGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYpOwogICAgIHZpcnR1
YWwgflBhc3RlYm9hcmQoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBleHBsaWNpdCBQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgZXhwbGljaXQgUGFzdGVib2FyZChTZWxl
Y3Rpb25EYXRhJik7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+JiYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgZXhwbGljaXQgUGFz
dGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYsIFNlbGVjdGlvbkRh
dGEmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQo
U2VsZWN0aW9uRGF0YSYmKTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgU2VsZWN0aW9uRGF0YSYmKTsKICNlbmRpZgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgZXhwbGljaXQgUGFzdGVib2FyZChJRGF0YU9iamVj
dCopOwotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoV0NEYXRhT2JqZWN0Kik7Ci0gICAgZXhwbGlj
aXQgUGFzdGVib2FyZChjb25zdCBEcmFnRGF0YU1hcCYpOworICAgIGV4cGxpY2l0IFBhc3RlYm9h
cmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmLCBJRGF0YU9iamVjdCopOwor
ICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0
PiYmLCBXQ0RhdGFPYmplY3QqKTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgY29uc3QgRHJhZ0RhdGFNYXAmKTsKICNlbmRpZgog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZENvbnRleHQ+JiYpOwogCiAgICAgc3RhdGljIGJvb2wgaXNTYWZlVHlwZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIGNhbkV4
cG9zZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKGNvbnN0IFN0cmluZyYpOwpA
QCAtMjM1LDggKzIzNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKTsgLy8g
RklYTUU6IFR3byBzZXBhcmF0ZSBmdW5jdGlvbnMgd291bGQgYmUgY2xlYXJlciB0aGFuIG9uZSBm
dW5jdGlvbiB3aXRoIGFuIGFyZ3VtZW50LgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNyZWF0
ZUZvckRyYWdBbmREcm9wKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gY3Jl
YXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNy
ZWF0ZShjb25zdCBEcmFnRGF0YSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldERyYWdJbWFnZShE
cmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KTsKICNlbmRpZgpAQCAtMjQ5LDE5ICsy
NTAsMTkgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNvbnN0IFNlbGVjdGlv
bkRhdGEmIHNlbGVjdGlvbkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IGNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gY3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgZXhwbGljaXQgUGFzdGVib2FyZChpbnQ2NF90IGNoYW5nZUNvdW50KTsK
LSAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwor
ICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0
PiYmLCBpbnQ2NF90IGNoYW5nZUNvdW50KTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSk7CiAKICAgICBzdGF0aWMgTlNBcnJheSAqc3VwcG9ydGVkV2ViQ29udGVudFBhc3RlYm9h
cmRUeXBlcygpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZShOU1N0cmluZyAq
bWltZVR5cGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZXhwbGljaXQgUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcHJvbWlzZWRGaWxlUGF0aHMgPSB7IH0pOworICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWlzZWRGaWxlUGF0aHMgPSB7IH0pOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI5OCw2ICsyOTksOCBAQCBwdWJsaWM6
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBT
dHJpbmcmIHRpdGxlKTsKIAorICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHJlc3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0OwpA
QCAtMzI4LDYgKzMzMSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgog
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CisKICNp
ZiBQTEFURk9STShHVEspCiAgICAgT3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gbV9zZWxlY3Rpb25E
YXRhOwogICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGQwYzVkYmNlYzVhN2Y2NWQwNTE4ODNjOTAzNWUy
YjVkNDExOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZENvbnRleHQuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFBhc3RlYm9hcmRDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkQ29udGV4dCgpID0gZGVmYXVsdDsK
KworICAgIHZpcnR1YWwgYm9vbCBpc1BhZ2VQYXN0ZWJvYXJkQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBQYXN0ZWJvYXJkQ29udGV4dCgpID0gZGVm
YXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggNmYzMjFmYWVmZDBlNjE0OTE1MThhYTVk
ZDRkYWJmMThmZTExYmViOC4uYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAg
LTMwLDcgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RhdGljUGFzdGVib2Fy
ZDo6U3RhdGljUGFzdGVib2FyZCgpID0gZGVmYXVsdDsKK1N0YXRpY1Bhc3RlYm9hcmQ6OlN0YXRp
Y1Bhc3RlYm9hcmQoKQorICAgIDogUGFzdGVib2FyZCh7IH0pCit7Cit9CisKIFN0YXRpY1Bhc3Rl
Ym9hcmQ6On5TdGF0aWNQYXN0ZWJvYXJkKCkgPSBkZWZhdWx0OwogCiBib29sIFN0YXRpY1Bhc3Rl
Ym9hcmQ6Omhhc0RhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRHJhZ0RhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdE
YXRhQ29jb2EubW0KaW5kZXggMTdlMDkxZDQ0NDQxYTUyNjk0MjdlNDNmM2U4NWZmMmM1ZDliYThk
My4uZTQzM2VkYjM4ZThjNThhMDA2NTRkYjVhNTllMWJjZDQwOTdhM2QwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0zMCw2ICszMCw3
IEBACiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIgogI2ltcG9ydCAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIlBhZ2VQ
YXN0ZWJvYXJkQ29udGV4dC5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGFz
dGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVBhc3RlYm9hcmQuaCIKQEAgLTEz
MCwxMyArMTMxLDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
CiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBw
bGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRh
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9w
dGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGlu
YXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAg
LCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdE
YXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVy
YXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQogICAgICwgbV9kcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrKGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKKyAgICAsIG1fcGFn
ZUlEKHBhZ2VJRCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKFtb
bV9wbGF0Zm9ybURyYWdEYXRhIGRyYWdnaW5nUGFzdGVib2FyZF0gbmFtZV0pCiAjZWxzZQpAQCAt
MTQ1LDEzICsxNDcsMTQgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJhZ0Rh
dGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBw
bGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRy
YWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVy
YXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBv
c2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1f
cGxhdGZvcm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2so
c291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBwbGljYXRpb25GbGFncyhmbGFncykKICAg
ICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkZXN0aW5hdGlvbkFjdGlvbk1hc2spCisg
ICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKGRyYWdTdG9yYWdl
TmFtZSkKIHsKIH0KQEAgLTE2NSw3ICsxNjgsNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1VS
TFR5cGVJZGVudGlmaWVyKCkgY29uc3QKICAgICAKIGJvb2wgRHJhZ0RhdGE6OmNhblNtYXJ0UmVw
bGFjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFBhc3RlYm9hcmQobV9wYXN0ZWJvYXJkTmFtZSku
Y2FuU21hcnRSZXBsYWNlKCk7CisgICAgcmV0dXJuIFBhc3RlYm9hcmQoY3JlYXRlUGFzdGVib2Fy
ZENvbnRleHQoKSwgbV9wYXN0ZWJvYXJkTmFtZSkuY2FuU21hcnRSZXBsYWNlKCk7CiB9CiAKIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IoKSBjb25zdApAQCAtMjE3LDcgKzIyMCw3IEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QKIAogU3RyaW5nIERyYWdEYXRh
Ojphc1BsYWluVGV4dCgpIGNvbnN0CiB7Ci0gICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKG1fcGFz
dGVib2FyZE5hbWUpOworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChjcmVhdGVQYXN0ZWJvYXJk
Q29udGV4dCgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBQYXN0ZWJvYXJkUGxhaW5UZXh0IHRl
eHQ7CiAgICAgcGFzdGVib2FyZC5yZWFkKHRleHQpOwogICAgIFN0cmluZyBzdHJpbmcgPSB0ZXh0
LnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAK
aW5kZXggZGM2ODUzNDU1NjgxN2ZjNGQwNTg2MzA5OWQzYzhhMDUyNjA4N2I0Zi4uZjBmYWRkNzA4
Njk1NjM4ZjdjODFlOTI2NzFmNjdjMTg0ZTM4YzI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDMsNDUgKzQzLDUyIEBAIGVudW0gQ2xp
cGJvYXJkRGF0YVR5cGUgewogICAgIENsaXBib2FyZERhdGFUeXBlVW5rbm93bgogfTsKIAotc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQog
ewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJE
Iik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JHbG9iYWxTZWxlY3Rpb24oKQorc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENv
bnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigi
UFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29u
dGV4dCksICJQUklNQVJZIik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkK
K3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksIFNlbGVjdGlvbkRh
dGEoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0
YSkKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEuY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSwgKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KIAotUGFzdGVib2FyZDo6UGFzdGVi
b2FyZChTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKLSAgICA6IG1fc2VsZWN0aW9uRGF0
YShXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpKQorUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgU2VsZWN0aW9uRGF0YSYmIHNl
bGVjdGlvbkRhdGEpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1f
c2VsZWN0aW9uRGF0YShXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpKQogewogfQogI2VuZGlmCiAKLVBh
c3RlYm9hcmQ6OlBhc3RlYm9hcmQoU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uRGF0YSkKLSAgICA6
IG1fc2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhKQorUGFzdGVib2FyZDo6UGFzdGVib2FyZChz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgU2VsZWN0aW9uRGF0
YSYgc2VsZWN0aW9uRGF0YSkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAg
ICwgbV9zZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRhdGEpCiB7CiB9CiAKLVBhc3RlYm9hcmQ6OlBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogbV9uYW1lKG5hbWUpCitQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKKyAgICAsIG1fbmFtZShuYW1lKQoreworfQorCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogbV9jb250
ZXh0KFdURk1vdmUoY29udGV4dCkpCiB7CiB9CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKSA9
IGRlZmF1bHQ7CiBQYXN0ZWJvYXJkOjp+UGFzdGVib2FyZCgpID0gZGVmYXVsdDsKIAogY29uc3Qg
U2VsZWN0aW9uRGF0YSYgUGFzdGVib2FyZDo6c2VsZWN0aW9uRGF0YSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGE2MmY4MzE2ZmJm
Y2NjNWVlMTk1ZDJiZjFkMmI5MDBmOWY4ZjRlMDYuLjMzNjVhM2ViODZiYjBhYjQ5YTljMGFiYWRm
NDgxZGRmMDgwOWU3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCkBAIC01Miw4ICs1Miw5IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi0g
ICAgOiBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmROYW1lKQorUGFzdGVib2FyZDo6UGFzdGVi
b2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQp
KQorICAgICwgbV9wYXN0ZWJvYXJkTmFtZShwYXN0ZWJvYXJkTmFtZSkKICAgICAsIG1fY2hhbmdl
Q291bnQocGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VD
b3VudChwYXN0ZWJvYXJkTmFtZSkpCiB7CiB9CkBAIC03MCwxNCArNzEsMTQgQEAgU3RyaW5nIFBh
c3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gImRyYWcgYW5kIGRy
b3AgcGFzdGVib2FyZCI7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmRDb250ZXh0PiYmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSwgUGFzdGVib2FyZDo6bmFtZU9mRHJh
Z1Bhc3RlYm9hcmQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0
YS5wYXN0ZWJvYXJkTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihk
cmFnRGF0YS5jcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpLCBkcmFnRGF0YS5wYXN0ZWJvYXJkTmFt
ZSgpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC05MSwxMyArOTIs
MTUgQEAgc3RhdGljIGludDY0X3QgY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUgPSB7IH0pCiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqV2ViQXJj
aGl2ZVBib2FyZFR5cGUgPSBAIkFwcGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQgdHlwZSI7CiBO
U1N0cmluZyAqVUlDb2xvclBib2FyZFR5cGUgPSBAImNvbS5hcHBsZS51aWtpdC5jb2xvciI7CiAK
LVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQotICAgIDogbV9jaGFuZ2VDb3VudCgwKQorUGFzdGVi
b2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29u
dGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9jaGFuZ2VD
b3VudCgwKQogewogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGludDY0X3QgY2hhbmdlQ291
bnQpCi0gICAgOiBtX2NoYW5nZUNvdW50KGNoYW5nZUNvdW50KQorUGFzdGVib2FyZDo6UGFzdGVi
b2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgaW50NjRf
dCBjaGFuZ2VDb3VudCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwg
bV9jaGFuZ2VDb3VudChjaGFuZ2VDb3VudCkKIHsKIH0KIApAQCAtMTA1LDkgKzEwOCw5IEBAIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIHsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
CitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewot
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFBBTDo6Z2V0X1VJS2l0X1VJUGFzdGVi
b2FyZE5hbWVHZW5lcmFsKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdU
Rk1vdmUoY29udGV4dCksIFBBTDo6Z2V0X1VJS2l0X1VJUGFzdGVib2FyZE5hbWVHZW5lcmFsKCkp
OwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCmluZGV4IDc4YjQ4YTNhODkyZTQ2YjhjMTUwYWIyNzcwNTBiMDI1OGVm
NjkwNjguLmU2NWZhODdjZDFlOWExZGVkNzAxZTQyZGVhZjQ1YTJlZTU0M2JhYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAK
QEAgLTM1LDEyICszNSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQorc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZShzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
c3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCkpOwogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJk
KCkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250
ZXh0PiYmIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAx
MmJjM2Q2YWU4ZTJjZjFiYzUyYTNhMGQ2ZGUxYjkyNzE5YzdlYmQ0Li5mN2Y4ZmZlNGY4ZTlmOGMz
YTk2YjMyNzZjYmEzNWQ4M2I2ZDlkNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtODMsMjQgKzgzLDI2IEBAIE5TQXJyYXkgKlBhc3RlYm9h
cmQ6OnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKQogICAgIHJldHVybiBAWyAo
TlNTdHJpbmcgKilsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCAoTlNTdHJpbmcg
KilsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpIF07CiB9CiAKLVBhc3RlYm9hcmQ6OlBh
c3RlYm9hcmQoKQotICAgIDogbV9wYXN0ZWJvYXJkTmFtZShlbXB0eVN0cmluZygpKQorUGFzdGVi
b2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29u
dGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9wYXN0ZWJv
YXJkTmFtZShlbXB0eVN0cmluZygpKQogICAgICwgbV9jaGFuZ2VDb3VudCgwKQogewogfQogCi1Q
YXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwcm9taXNlZEZpbGVQYXRocykKLSAgICA6IG1fcGFzdGVib2FyZE5h
bWUocGFzdGVib2FyZE5hbWUpCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWlzZWRGaWxlUGF0aHMpCisgICAgOiBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fcGFzdGVib2FyZE5hbWUocGFzdGVib2Fy
ZE5hbWUpCiAgICAgLCBtX2NoYW5nZUNvdW50KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSkpCiAgICAgLCBtX3By
b21pc2VkRmlsZVBhdGhzKHByb21pc2VkRmlsZVBhdGhzKQogewogICAgIEFTU0VSVChwYXN0ZWJv
YXJkTmFtZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKQorc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENv
bnRleHQ+JiYgY29udGV4dCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSwgTlNH
ZW5lcmFsUGJvYXJkKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0K
IApAQCAtMTEwLDE2ICsxMTIsMTYgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0
ZWJvYXJkKCkKICAgICByZXR1cm4gTlNQYXN0ZWJvYXJkTmFtZURyYWc7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCitz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiB7CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3Rl
Ym9hcmQ+KFdURk1vdmUoY29udGV4dCksIE5TRHJhZ1Bib2FyZCk7CiAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihk
cmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEuY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSwgZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
RGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
CmluZGV4IDYxZWE0YzQ3ZmEzNTIyNTg4ZjgzYTY4NmQ4NWM3N2MxNDI5MDljMjQuLjllMjg3ODNl
NmUxYWMxMzU5NzBiMDZkNDIwZjVlYzY0YTZiOTlmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtNDAsMTMgKzQwLDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiBkYXRh
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwKLSAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFz
aywgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncykKK0RyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+
IGZsYWdzLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogICAgIDogbV9jbGllbnRQ
b3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9z
aXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKICAgICAsIG1fZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spCiAgICAgLCBtX2FwcGxpY2F0aW9u
RmxhZ3MoZmxhZ3MpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2RyYWdEYXRhTWFw
KGRhdGEpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKaW5kZXggMjFiOTdmNThiMGVlMzllNDQ3MjFlNmYyN2QwN2U2MjkxMmViMDRkNy4uY2M4
MDAzZjVlMTUzMjA1YWMwNzVhZDA2OTU0MjE1OTUwMTk5ZGViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsOSArOTMsOSBAQCBzdGF0
aWMgTFJFU1VMVCBDQUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlO
VCBtZXNzYWdlLCBXUEFSQU0gdwogICAgIHJldHVybiBscmVzdWx0OwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKK3N0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiB7Ci0gICAg
YXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFz
dGVib2FyZCA9IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSk7CiAgICAg
Q09NUHRyPElEYXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9s
ZUdldENsaXBib2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0g
MDsKQEAgLTEwNCwyMCArMTA0LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCgpCitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNv
bnRleHQpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9iamVjdDsKICAgICBXQ0Rh
dGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsKLSAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCBkYXRhT2JqZWN0LmdldCgpKTsKIH0KIAog
Ly8gc3RhdGljCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZShjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CiB7CiAgICAgaWYgKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKQotICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLmNyZWF0ZVBhc3RlYm9hcmRDb250
ZXh0KCksIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIGFk
ZCBhIGNvbnN0IG92ZXJsb2FkIG9mIGRyYWdEYXRhTWFwIHNvIHdlIGRvbid0IG5lZWQgYSBjb25z
dF9jYXN0IGhlcmUuCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2Fz
dDxEcmFnRGF0YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5jcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpLCBjb25z
dF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOwogfQogI2VuZGlmCiAK
QEAgLTEzOSwyOSArMTM5LDMzIEBAIHZvaWQgUGFzdGVib2FyZDo6ZmluaXNoQ3JlYXRpbmdQYXN0
ZWJvYXJkKCkKICAgICBDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0ID0gOjpSZWdpc3RlckNsaXBi
b2FyZEZvcm1hdChMIldlYktpdCBDdXN0b20gRGF0YSBGb3JtYXQiKTsKIH0KIAotUGFzdGVib2Fy
ZDo6UGFzdGVib2FyZCgpCi0gICAgOiBtX2RhdGFPYmplY3QoMCkKK1Bhc3RlYm9hcmQ6OlBhc3Rl
Ym9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCisgICAg
OiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAsIG1fZGF0YU9iamVjdCgwKQogICAg
ICwgbV93cml0YWJsZURhdGFPYmplY3QoMCkKIHsKICAgICBmaW5pc2hDcmVhdGluZ1Bhc3RlYm9h
cmQoKTsKIH0KIAotUGFzdGVib2FyZDo6UGFzdGVib2FyZChJRGF0YU9iamVjdCogZGF0YU9iamVj
dCkKLSAgICA6IG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQorUGFzdGVib2FyZDo6UGFzdGVib2Fy
ZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgSURhdGFPYmpl
Y3QqIGRhdGFPYmplY3QpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICAs
IG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV93cml0YWJsZURhdGFPYmplY3QoMCkK
IHsKICAgICBmaW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQoKTsKIH0KIAotUGFzdGVib2FyZDo6UGFz
dGVib2FyZChXQ0RhdGFPYmplY3QqIGRhdGFPYmplY3QpCi0gICAgOiBtX2RhdGFPYmplY3QoZGF0
YU9iamVjdCkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmRDb250ZXh0PiYmIGNvbnRleHQsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCkKKyAgICA6IG1f
Y29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3Qp
CiAgICAgLCBtX3dyaXRhYmxlRGF0YU9iamVjdChkYXRhT2JqZWN0KQogewogICAgIGZpbmlzaENy
ZWF0aW5nUGFzdGVib2FyZCgpOwogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IERy
YWdEYXRhTWFwJiBkYXRhTWFwKQotICAgIDogbV9kYXRhT2JqZWN0KDApCitQYXN0ZWJvYXJkOjpQ
YXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBj
b25zdCBEcmFnRGF0YU1hcCYgZGF0YU1hcCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRl
eHQpKQorICAgICwgbV9kYXRhT2JqZWN0KDApCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9iamVjdCgw
KQogICAgICwgbV9kcmFnRGF0YU1hcChkYXRhTWFwKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYmI3Yzg0YmY4MTQ3NWNjYzkxOWYw
NzgzMDA0ZDkyOTcxODAwZmU1ZS4uNjExZjQ2MjRkYmI4OTYxYTlhYWQxNzNlNTZlNzU1YWFmNDM5
MDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0xNDA5LDYgKzE0MDksNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIGVu
Y29kZXIgPDwgZHJhZ0RhdGEuZmlsZU5hbWVzKCk7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGRy
YWdEYXRhLmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKTsKKyAgICBlbmNvZGVyIDw8IGRyYWdE
YXRhLnBhZ2VJRCgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQpAQCAtMTQ0Myw3ICsxNDQ0LDEx
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZHJhZ0RhdGEg
PSBEcmFnRGF0YShwYXN0ZWJvYXJkTmFtZSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9u
LCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3MsIGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2spOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBkcmFnRGF0YSA9IERyYWdEYXRhKHBhc3RlYm9hcmROYW1lLCBjbGllbnRQb3NpdGlv
biwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgYXBwbGljYXRp
b25GbGFncywgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaywgcGFnZUlEKTsKICAgICBkcmFnRGF0
YS5zZXRGaWxlTmFtZXMoZmlsZU5hbWVzKTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA5MGViNGRiZGRjMGZh
NzgzM2UyOGE4ZjNmMTI2ZGNmOTA3ODMxZTkxLi44ZGQ0MzI1NGM1MmVhYmU2NGRmYzkyYzExOWI3
OWYzODY0ZTNhYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtNDAxOSw3ICs0MDE5LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBs
OjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5m
by5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRvIGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3
IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10p
OwogICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7Ci0gICAgV2ViQ29yZTo6RHJh
Z0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlv
bk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwg
ZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CisgICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJh
dGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQo
KSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaywgbV9wYWdlLT53ZWJQ
YWdlSUQoKSk7CiAKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwog
ICAgIG1fcGFnZS0+ZHJhZ0VudGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bh
c3RlYm9hcmQubmFtZSk7CkBAIC00MDU3LDcgKzQwNTcsNyBAQCBOU0RyYWdPcGVyYXRpb24gV2Vi
Vmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5m
bykKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAgIGF1dG8g
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dp
bmdJbmZvXSk7CiAgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9u
TWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKLSAgICBXZWJD
b3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFn
T3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxl
YXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKKyAgICBX
ZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBk
cmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9y
ZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLCBtX3Bh
Z2UtPndlYlBhZ2VJRCgpKTsKICAgICBtX3BhZ2UtPmRyYWdVcGRhdGVkKGRyYWdEYXRhLCBkcmFn
Z2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogCiAgICAgTlNJbnRlZ2VyIG51bWJl
ck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX3BhZ2UtPmN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1Rv
QmVBY2NlcHRlZCgpOwpAQCAtNDA4MSw3ICs0MDgxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJh
Z2dpbmdFeGl0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwg
W21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5m
by5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyht
X3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3Bl
cmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBw
bGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0lu
Zm8pLCBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgbV9wYWdlLT53ZWJQYWdlSUQoKSk7CiAg
ICAgbV9wYWdlLT5kcmFnRXhpdGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0
ZWJvYXJkLm5hbWUpOwogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7
CiAgICAgZHJhZ2dpbmdJbmZvLm51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxO
dW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwpAQCAtNDA5Nyw3ICs0MDk3LDcgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2lu
Z0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBv
aW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9y
ZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0Rh
dGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwg
Y29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCks
IGRyYWdnaW5nSW5mbyksIGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBtX3BhZ2UtPndlYlBh
Z2VJRCgpKTsKIAogICAgIE5TQXJyYXkgKnR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFz
dGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDhkMTQ3N2M5YjZlNGYzOGJjNzQ5OTFiZWEy
ZjJiZmNkMjIwOTA5MTIuLmM4OWY5NWZmYmQ1MzdiNjA5M2VkMTU3MTgxODI2YzFiZDdjZTkxZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzc3Nyw3ICs3Nzc3LDE2IEBAIC0gKFdlYkNvcmU6OkRyYWdE
YXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGRy
YWdEZXN0CiAgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IFdlYkNvcmU6OmFueURyYWdPcGVy
YXRpb24oKTsKICAgICBpZiAoIXNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbikKICAgICAgICAg
ZHJhZ09wZXJhdGlvbk1hc2sucmVtb3ZlKFdlYkNvcmU6OkRyYWdPcGVyYXRpb246Ok1vdmUpOwot
ICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBX
ZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ssIHsgfSwg
V2ViS2l0Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25BY3Rp
b24pIH07CisKKyAgICByZXR1cm4geworICAgICAgICBzZXNzaW9uLAorICAgICAgICBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwKKyAgICAgICAgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KGdsb2JhbCksCisgICAgICAgIGRyYWdPcGVyYXRpb25NYXNrLAorICAgICAgICB7IH0sCisg
ICAgICAgIFdlYktpdDo6Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKSwKKyAgICAgICAgX3BhZ2UtPndlYlBhZ2VJRCgpCisgICAgfTsKIH0KIAogLSAo
dm9pZCljbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JD
bGllbnRHdGsuY3BwCmluZGV4IDlmOTg2NTk1MjE3MWYzMzdiMTczY2Y1NTFmYjk0OWU4ZjI4OTdj
NGQuLjFjY2VkZDljNTgxNjkxNWIxZWRhYjM4N2U2N2ZjMDY2YWVkNWRlNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xp
ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Z3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0V2ZW50TmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlUGFzdGVi
b2FyZENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEl0ZXJhdG9yLmg+CkBAIC0xNDUsNyArMTQ2LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVw
ZGF0ZUdsb2JhbFNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgcGFzdGVib2FyZENvbnRlbnQu
Y2FuU21hcnRDb3B5T3JEZWxldGUgPSBmYWxzZTsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0
ID0gcGxhaW5UZXh0KCpyYW5nZSk7CiAgICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3kp
OwotICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpLT53cml0ZShwYXN0
ZWJvYXJkQ29udGVudCk7CisgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9u
KFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZyYW1lLT5wYWdlSUQoKSkpLT53cml0ZShw
YXN0ZWJvYXJkQ29udGVudCk7CiB9CiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRTaG93
VW5pY29kZU1lbnUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDhiMTRiNjJj
MDEzMzE0Y2QzNWJkYjM4M2YwMWM5ZWJiZDNkYmE0NzkuLjYwMjNjZTc4Zjg0MGJkY2QzOWI2NjM3
YTg0YmE0Zjg0MzA4YjFkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9yLmg+CkBAIC0xODgsOCArMTg5LDgg
QEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikKIHsK
LSAgICBpZiAoYXV0byBmcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3AoKSwgZWxlbWVudCwgdXJsLCBsYWJlbCk7CisgICAgaWYgKGF1dG8g
ZnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKSkKKyAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZyYW1lLT5wYWdl
SUQoKSkpLCBlbGVtZW50LCB1cmwsIGxhYmVsKTsKIH0KIAogI2VuZGlmIC8vIFVTRShBUFBLSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDZi
ODMzMDNmZTVlMWFjZWMzY2U1YjAzMjU5YjdiMGNjZjQzN2U0OWMuLmM5ZTNmNmIzNTU2MGM5MDk2
OGQwZTk1YjEyNWNkMzExMjkyOTg3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MTQ0LDcgKzQxNDQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNv
bnN0IEludAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEo
JnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrLCBmbGFncyk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVj
dGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBmbGFncywgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCksIG1faWRlbnRp
Zmllcik7CiAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0
aW9uOjpFbnRlcmVkOiB7CiAgICAgICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggOGQ0
NTE1NjdhM2U2NGNlZGFmNmY1YTQ1NjdhOGZhYzdkYjg1Y2JkMC4uNjQ2OWE2YWVhY2I1MmI5MGI0
ODdmZDNlODhlN2QwYjRiNmQ1NDkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTExNCw2ICsxMTQsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9Ob2RlUmVuZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdl
UGFzdGVib2FyZENvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CkBAIC0yOTg2LDcgKzI5ODcsNyBAQCB2b2lkIFdlYlBhZ2U6
OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICAgICAgICAg
ICAgICB0aXRsZSA9IGxpbmtFbGVtZW50LT50ZXh0Q29udGVudCgpOwogICAgICAgICAgICAgICAg
IHRpdGxlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHRpdGxlKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmVkaXRv
cigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZSgpLCBlbGVtZW50LCB1cmwsIHRpdGxlKTsKKyAgICAgICAgICAgIG1faW50ZXJhY3Rpb25O
b2RlLT5kb2N1bWVudCgpLmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShl
bGVtZW50LmRvY3VtZW50KCkucGFnZUlEKCkpKSwgZWxlbWVudCwgdXJsLCB0aXRsZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoZWxlbWVudC5pc0xpbmsoKSkKICAgICAgICAgICAgIG1faW50ZXJhY3Rp
b25Ob2RlLT5kb2N1bWVudCgpLmVkaXRvcigpLmNvcHlVUkwoZWxlbWVudC5kb2N1bWVudCgpLmNv
bXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhlbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpocmVmQXR0cikpKSwgZWxlbWVu
dC50ZXh0Q29udGVudCgpKTsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQubW0KaW5kZXggZjIxZTk0M2JlNGU2NjI0ZGVlZGMzYmRiYzJkYzM0YzU3NzNmNGEyMS4uNTU2
NzQ5OTA0ZmQ1MzZiMjUxNDgzMDY3OWRiOGY2NmM4ODJiZDYwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCkBA
IC01NSw2ICs1NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9JbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJk
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmRXcml0ZXIuaD4KIApAQCAtMjY4LDggKzI2
OSw4IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6YmVnaW5EcmFnKERyYWdJdGVtLCBGcmFtZSYsIGNv
bnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmCiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSop
CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpCi0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBlbGVtZW50LCB1cmwsIGxhYmVsKTsKKyAgICBpZiAo
YXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpKQorICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6
Y3JlYXRlRm9yRHJhZ0FuZERyb3AoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUoZnJhbWUt
PnBhZ2VJRCgpKSksIGVsZW1lbnQsIHVybCwgbGFiZWwpOwogfQogCiB2b2lkIFdlYkRyYWdDbGll
bnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420732</attachid>
            <date>2021-02-17 15:23:06 -0800</date>
            <delta_ts>2021-02-18 08:58:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221987-20210217152306.patch</filename>
            <type>text/plain</type>
            <size>79996</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5NzdiZDI2MWIxNWY4
OTk4NDM4NWQ2MTRhMzQ4YzdhMGFkZTJmOS4uYzY4MWVjMWY4MmFmZTMzNzkzMDliZGQ5MDZmMWUw
ZWY4NzMwZjJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAyMS0wMi0xNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBh
dGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5
ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBmYWNpbGl0YXRlIHRhZ2dpbmcgcGFzdGVib2FyZCByZWFkcyBhbmQgd3JpdGVzIHdp
dGggYSBkYXRhIG93bmVyIHR5cGUgb24gaU9TIHNvdXJjZWQgZnJvbQorICAgICAgICBgV0tDb250
ZW50Vmlld2AsIHdlIGFkZCBpbmZyYXN0cnVjdHVyZSB0byAoaW5kaXJlY3RseSkgdGFnIGBQYXN0
ZWJvYXJkYCB3aXRoIGFuIG9wdGlvbmFsIGBQYWdlSWRlbnRpZmllcmAgdG8KKyAgICAgICAgaW5k
aWNhdGUgd2hpY2ggcGFnZSBpcyB0cmlnZ2VyaW5nIHRoZSBwYXN0ZWJvYXJkIG9wZXJhdGlvbi4K
KworICAgICAgICBIb3dldmVyLCBzaW5jZSB0aGUgYFBhc3RlYm9hcmRgIGNsYXNzIHNob3VsZCBv
bmx5IGJlIHJlc3BvbnNpYmxlIGZvciBpbnRlcmZhY2luZyB3aXRoIHBsYXRmb3JtLWRlcGVuZGVu
dAorICAgICAgICBzdHJhdGVnaWVzIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgZGF0YSwgd2UgY2Fu
J3QgZGlyZWN0bHkgYWRkIGEgYFBhZ2VJZGVudGlmaWVyYCBtZW1iZXIgdG8gYFBhc3RlYm9hcmRg
LgorICAgICAgICBJbnN0ZWFkLCB3ZSBpbnRyb2R1Y2UgYSBzZXBhcmF0ZSBgUGFzdGVib2FyZENv
bnRleHRgIG9iamVjdCwgYW5kIGxldCBgUGFzdGVib2FyZGAgaG9sZCBhIHVuaXF1ZSBwb2ludGVy
IHRvIHRoaXMKKyAgICAgICAgY29udGV4dCAod2hpY2ggaXMgc2V0IGR1cmluZyBjb25zdHJ1Y3Rp
b24pLiBgUGFzdGVib2FyZENvbnRleHRgIGlzIHRoZW4gc3ViY2xhc3NlZCBieSBgUGFnZVBhc3Rl
Ym9hcmRDb250ZXh0YCwKKyAgICAgICAgd2hpY2ggaG9sZHMgYSBgUGFnZUlkZW50aWZpZXJgIGFu
ZCBpcyBjcmVhdGVkIGZyb20gY2FsbCBzaXRlcyBvZiB0aGUgYFBhc3RlYm9hcmRgIGNvbnN0cnVj
dG9yIHRoYXQgaGF2ZSBhY2Nlc3MKKyAgICAgICAgdG8gcGFnZSBpZGVudGlmaWVycyAoZS5nLiBg
RWRpdG9yYCwgYENsaXBib2FyZGAsIGBFdmVudEhhbmRsZXJgKS4KKworICAgICAgICBJbiBhIGZ1
dHVyZSBwYXRjaCwgdGhpcyBvcGFxdWUgYFBhc3RlYm9hcmRDb250ZXh0YCB3aWxsIGJlIGNvbnZl
cnRlZCBiYWNrIHRvIGEgYFBhZ2VQYXN0ZWJvYXJkQ29udGV4dGAgaW4gb3JkZXIKKyAgICAgICAg
dG8gcmV0cmlldmUgdGhlIHBhZ2UgaWRlbnRpZmllciBpbiB0aGUgV2ViS2l0IGNsaWVudCBsYXll
ci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6cmVh
ZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjp3cml0ZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZDo6SXRlbVdyaXRlcjo6SXRlbVdyaXRlcik6CisKKyAgICAgICAgSGVyZSAoYW5kIGluIG1hbnkg
cGxhY2VzIGJlbG93KSwgY3JlYXRlIGBQYWdlUGFzdGVib2FyZENvbnRleHRgIG9iamVjdHMgYW5k
IHVzZSB0aGVtIHRvIGNyZWF0ZSBgUGFzdGVib2FyZGBzLAorICAgICAgICBwYXNzaW5nIHRoZW0g
aW4gYXMgb3BhcXVlIGBQYXN0ZWJvYXJkQ29udGV4dGBzLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDbGlwYm9hcmRFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnBlcmZvcm1DdXRPckNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpwYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFpblRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzUXVvdGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Y29weVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNv
cHlJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUdsb2JhbFNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFkU2VsZWN0
aW9uRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlTm9k
ZUZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y29weVRleHQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpjb3B5VGV4dCk6CisgICAgICAgICogcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50
RnJvbURyYWdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRXhp
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3BwZWRJbWFn
ZVBsYWNlaG9sZGVycyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VQYXN0ZWJvYXJkQ29udGV4dC5oOiBBZGRlZC4KKworICAgICAgICBBZGQgYFBhZ2VQYXN0ZWJv
YXJkQ29udGV4dGAsIGEgYFBhc3RlYm9hcmRDb250ZXh0YCBzdWJjbGFzcyB0aGF0IGNvbnRhaW5z
IGEgYFBhZ2VJZGVudGlmaWVyYCBpbmRpY2F0aW5nIHdoaWNoCisgICAgICAgIGBQYWdlYCBpcyBy
ZXF1ZXN0aW5nIHBhc3RlYm9hcmQgYWNjZXNzLgorCisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y3JlYXRlUGFzdGVib2FyZENv
bnRleHQgY29uc3QpOgorCisgICAgICAgIEFsc28gcGx1bWIgYSBgUGFnZUlkZW50aWZpZXJgIHRo
cm91Z2ggYERyYWdEYXRhYCwgYW5kIHVzZSBpdCB0byBpbXBsZW1lbnQgYSBoZWxwZXIgbWV0aG9k
IHRoYXQgcmV0dXJucyBhIGNvbnRleHQKKyAgICAgICAgb2JqZWN0IGZvciBgUGFzdGVib2FyZGAu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorCisgICAgICAgIEFkZGl0aW9uYWxs
eSBtYWtlIGBvcGVyYXRvcj1gIHBsYXRmb3JtLWFnbm9zdGljLCBpbnN0ZWFkIG9mIGxpbWl0ZWQg
dG8gR1RLLiAoSXQgaXNuJ3QgY2xlYXIgd2h5IHRoaXMgbmVlZHMgdG8gYmUKKyAgICAgICAgbGlt
aXRlZCB0byB0aGUgR1RLIHBvcnQpLgorCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJh
Z0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OnBhZ2VJRCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorCisgICAgICAgIEF1Z21lbnQgYFBhc3RlYm9h
cmRgJ3MgKG51bWVyb3VzKSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zdHJ1Y3RvcnMgdG8gdGFrZSBp
biBhIGBQYXN0ZWJvYXJkQ29udGV4dGAgdW5pcXVlCisgICAgICAgIHBvaW50ZXIgYXMgd2VsbCwg
YW5kIHN0b3JlIGl0IGluIGBtX2NvbnRleHRgLgorCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNvbnRleHQg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDb250ZXh0Lmg6IEFkZGVkLgor
CisgICAgICAgIEFkZCBgUGFzdGVib2FyZENvbnRleHRgLCB3aGljaCBwcm92aWRlcyBhZGRpdGlv
bmFsIGNvbnRleHQgZm9yIGFuIGFyYml0cmFyeSBwYXN0ZWJvYXJkIG9wZXJhdGlvbiBpbiBhbiBv
cGFxdWUKKyAgICAgICAgZmFzaGlvbi4gU2VlIGBQYWdlUGFzdGVib2FyZENvbnRleHRgIGFib3Zl
LgorCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dDo6aXNQYWdlUGFzdGVib2Fy
ZENvbnRleHQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6U3RhdGljUGFzdGVib2FyZCk6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
Y2FuU21hcnRSZXBsYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1Bs
YWluVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndw
ZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKwogMjAyMS0w
Mi0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIEludHJvZHVjZSBhIG5ldyBjb250ZXh0IG1lbnUgaXRlbSB0byBwcmV2aWV3IGltYWdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA3MTlhMDlhZGFlZTJmNDc5YWFjY2M5MGNkODNmYjdlY2U0OWU4OTM4Li5h
YzNmNGZiMjgzY2VjZjQ0ZDQ5OGY0Mjg1NWQ4ZjllZmY2NGVlNTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFBsdW1iIGFuIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdo
IFBhc3RlYm9hcmQtcmVsYXRlZCBjb2RlcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBtb3JlIGBEcmFnRGF0YWAgYW5kIGBQYXN0ZWJv
YXJkYCBpbml0aWFsaXphdGlvbiBzaXRlcyBieSBwYXNzaW5nIGluIGEgYFBhZ2VJZGVudGlmaWVy
YCBvcgorICAgICAgICBgUGFzdGVib2FyZENvbnRleHRgLCByZXNwZWN0aXZlbHkuIFNlZSBXZWJD
b3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0Rh
dGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmRyYWdnaW5nRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0YUZv
ckRyb3BTZXNzaW9uOmRyYWdEZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZUdsb2JhbFNlbGVjdGlvbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KToKKwogMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEludHJvZHVjZSBh
IG5ldyBjb250ZXh0IG1lbnUgaXRlbSB0byBwcmV2aWV3IGltYWdlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDg2ODUxZjQ0MDE1NTlmMmNlZGQxNDUwOTA0ODMyNGJmNzczNmEwZDgu
LjkwODllYWRhMjkwYmRiZjBkM2IzMTllNDlkNDM0MjJiOWY0ZDgxY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBhdGhzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgYW5kIHBh
c3MgaW4gYSBgUGFzdGVib2FyZENvbnRleHRgIHdoZW4gY3JlYXRpbmcgYSBgUGFzdGVib2FyZGAu
IFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBJbnRyb2R1Y2UgYSBuZXcg
Y29udGV4dCBtZW51IGl0ZW0gdG8gcHJldmlldyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4
IGIzM2EzNjkxN2JhMjI0YmRkZjYyZDYwNTc1MDQwZDJkN2VjOTZjOTguLmZkNTg2OGZiZTQxMWU4
ZTI4ODEyNWRlODE0YWI1YWIwMWZiZTMyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtODk3LDYg
Kzg5Nyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdl
L1BhZ2VJZGVudGlmaWVyLmgKICAgICBwYWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VP
dmVybGF5Q29udHJvbGxlci5oCisgICAgcGFnZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaAogICAg
IHBhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmgKICAgICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZ0Ns
aWVudC5oCiAgICAgcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA0Myw2ICsx
MDQ0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRm
b3JtL1BPREludGVydmFsVHJlZS5oCiAgICAgcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKICAg
ICBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKyAgICBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ29udGV4dC5o
CiAgICAgcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAogICAgIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRJdGVtSW5mby5oCiAgICAgcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3Bw
CmluZGV4IDY0ZjFjNDNlMjM2NGFkMWQ2NDJmYjhlODljMmEyNGI0NDEzMzhkZDQuLjQwYmIwNmFm
MjlkOWU0NWQwZDU5OWIzMTg5YjBkNjMwYzQ1Yjg1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkpTQ2xpcGJvYXJkSXRlbS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCisjaW5jbHVkZSAiUGFnZVBhc3Rl
Ym9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0xMDUsNyArMTA2LDcgQEAgdm9p
ZCBDbGlwYm9hcmQ6OnJlYWRUZXh0KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOworICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShm
cmFtZS0+cGFnZUlEKCkpKTsKICAgICBhdXRvIGNoYW5nZUNvdW50QXRTdGFydCA9IHBhc3RlYm9h
cmQtPmNoYW5nZUNvdW50KCk7CiAgICAgaWYgKCFmcmFtZS0+cmVxdWVzdERPTVBhc3RlQWNjZXNz
KCkpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CkBAIC0xNDYs
NyArMTQ3LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlVGV4dChjb25zdCBTdHJpbmcmIGRhdGEs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3Ms
IGRhdGEpOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGRvY3VtZW50LT5vcmlnaW5JZGVudGlm
aWVyRm9yUGFzdGVib2FyZCgpKTsKLSAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoKS0+d3JpdGVDdXN0b21EYXRhKHsgV1RGTW92ZShjdXN0b21EYXRhKSB9KTsKKyAgICBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVh
dGUoZnJhbWUtPnBhZ2VJRCgpKSktPndyaXRlQ3VzdG9tRGF0YSh7IFdURk1vdmUoY3VzdG9tRGF0
YSkgfSk7CiAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogfQogCkBAIC0xNjMsNyArMTY0LDcgQEAg
dm9pZCBDbGlwYm9hcmQ6OnJlYWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZy
YW1lLT5wYWdlSUQoKSkpOwogICAgIGF1dG8gY2hhbmdlQ291bnRBdFN0YXJ0ID0gcGFzdGVib2Fy
ZC0+Y2hhbmdlQ291bnQoKTsKIAogICAgIGlmICghZnJhbWUtPnJlcXVlc3RET01QYXN0ZUFjY2Vz
cygpKSB7CkBAIC0zMDMsNyArMzA0LDcgQEAgUGFzdGVib2FyZCYgQ2xpcGJvYXJkOjphY3RpdmVQ
YXN0ZWJvYXJkKCkKIENsaXBib2FyZDo6SXRlbVdyaXRlcjo6SXRlbVdyaXRlcihDbGlwYm9hcmQm
IGNsaXBib2FyZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIDogbV9jbGlw
Ym9hcmQobWFrZVdlYWtQdHIoY2xpcGJvYXJkKSkKICAgICAsIG1fcHJvbWlzZShXVEZNb3ZlKHBy
b21pc2UpKQotICAgICwgbV9wYXN0ZWJvYXJkKFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZSgpKQorICAgICwgbV9wYXN0ZWJvYXJkKFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShjbGlwYm9hcmQuZnJhbWUoKS0+cGFn
ZUlEKCkpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDcxYWE4YzU4MWI2NWQ5NGNiOWY1NDMyNDczMzlmODA3NWJm
MGE2ZjIuLmI0ZDY4OWY1ZmM3NDg0MzQzYjUyZWNlNDZjZDY4NDhkYzM5ZGVhZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUy
NjcsNiArNTI2Nyw4IEBACiAJCUYzQUJGRTBDMTMwRTlEQTAwMEU3RjdEMSAvKiBJbnN0cnVtZW50
aW5nQWdlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGM0FCRkUwQjEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5oICovOyB9
OwogCQlGM0Q0NjE0OTExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzRDQ2MTQ3MTE2MUQ1MzIw
MENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oICovOyB9OwogCQlGNDAzRTc4NzIzNjNCNThDMDAw
NDQ1NTAgLyogRW50ZXJLZXlIaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDAzRTc4NTIzNjNCNThDMDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQwREFB
RUMyNUQ5RjI1RTAwMTFCNEZBIC8qIFBhc3RlYm9hcmRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDBEQUFFQjI1RDlGMjVFMDAxMUI0RkEg
LyogUGFzdGVib2FyZENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlGNDBEQUFFRjI1RDlGM0JGMDAxMUI0RkEgLyogUGFnZVBhc3RlYm9h
cmRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDBEQUFFRTI1RDlGM0JGMDAxMUI0RkEgLyogUGFnZVBhc3RlYm9hcmRDb250ZXh0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQyOTI2MTgy
NTI2NEQ0NDAwMDA3ODk4IC8qIE1lZGlhUGxheWVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTI2MTcyNTI2NEQ0NDAwMDA3ODk4
IC8qIE1lZGlhUGxheWVySWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUY0MzNFOTAzMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQ
YXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0Mzc3RDU3MjU1MUM5
QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM3N0Q1NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlz
cGxheUxpc3RJdGVtVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNjU5Miw2ICsxNjU5NCw4IEBACiAJCUYzRDQ2MTQ3MTE2MUQ1MzIwMENB
MEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0Vycm9ySGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDAzRTc4
NTIzNjNCNThDMDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVudGVy
S2V5SGludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDAzRTc4NjIzNjNCNThD
MDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVudGVyS2V5
SGludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MERBQUVCMjVEOUYyNUUw
MDExQjRGQSAvKiBQYXN0ZWJvYXJkQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJk
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDBEQUFFRTI1RDlGM0JG
MDAxMUI0RkEgLyogUGFnZVBhc3RlYm9hcmRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VQ
YXN0ZWJvYXJkQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDIyQjhC
NTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDIyQjhCNjI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0MjkyNjE3MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXll
cklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjE4Miw2ICsyMjE4Niw3IEBACiAJCQkJMkQ1
QzlDRkMxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmggKi8sCiAJCQkJMkQ1QzlDRkQx
OUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMkQ1
QzlDRkUxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5Q29udHJvbGxlci5oICovLAorCQkJ
CUY0MERBQUVFMjVEOUYzQkYwMDExQjRGQSAvKiBQYWdlUGFzdGVib2FyZENvbnRleHQuaCAqLywK
IAkJCQkzNzFFNjVDRDEzNjYxRUVEMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuY3BwICovLAog
CQkJCTM3MUU2NUNCMTM2NjFFREMwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5oICovLAogCQkJ
CUJDNEE1MzI4MjU2MDU2M0IwMDI4QzU5MiAvKiBQREZJbWFnZUNhY2hpbmdQb2xpY3kuaCAqLywK
QEAgLTI3NjU0LDYgKzI3NjU5LDcgQEAKIAkJCQk0MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyog
T3JpZW50YXRpb25Ob3RpZmllci5oICovLAogCQkJCTJFRTAyQTFFMUY3MzI0MjgwMDA2QUY3MiAv
KiBQYXN0ZWJvYXJkLmNwcCAqLywKIAkJCQk0QjI3MDhDNTBBRjE5RUU0MDA2NTEyN0YgLyogUGFz
dGVib2FyZC5oICovLAorCQkJCUY0MERBQUVCMjVEOUYyNUUwMDExQjRGQSAvKiBQYXN0ZWJvYXJk
Q29udGV4dC5oICovLAogCQkJCUY0RkIzNEZCMjM1MEM4NUQwMEYwMDk0QSAvKiBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHAgKi8sCiAJCQkJRjRGQjM0RkEyMzUwQzg1RDAwRjAwOTRBIC8qIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhLmggKi8sCiAJCQkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFCIC8qIFBh
c3RlYm9hcmRJdGVtSW5mby5oICovLApAQCAtMzQwMTMsNiArMzQwMTksNyBAQAogCQkJCUE1Q0Iw
NTI0MUZCNTFGMzMwMDA4OUI5NyAvKiBQYWdlTmV0d29ya0FnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDVDOUQwMDE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENUM5RDAyMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MERBQUVGMjVEOUYzQkYwMDExQjRGQSAvKiBQYWdl
UGFzdGVib2FyZENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCREI2MUExMTZENjAzN0Uw
MEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFD
QzUxRkFBNDRCQzAwMzdEMUU2IC8qIFBhZ2VSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTM3MUU2NUNDMTM2NjFFREMwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zNDAzNSw2ICszNDA0Miw3IEBACiAJCQkJNTM2RDVBMjMxOTNFOEUwQzAwQ0U0
Q0FCIC8qIFBhcnNpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzRENBMTI1
MUYxMkQwMDNFRjI2OSAvKiBQYXNzd29yZElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NEIyNzA4QzcwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUY0MERBQUVDMjVEOUYyNUUwMDExQjRGQSAvKiBQYXN0ZWJvYXJkQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjRGQjM0RkMyMzUwQzg1RDAwRjAwOTRBIC8qIFBhc3RlYm9hcmRDdXN0
b21EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYwQUIgLyog
UGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1NzE0RTlDMjgw
MDBFOEQxOEIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggN2UxOWFkYmMwODEwMDM4NmY5MDEyMWU2NzJjY2Rk
MzkwZTFkNjA3Ny4uMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNDg4LDkgKzQ4OSw5IEBAIHZvaWQgRGF0YVRyYW5z
ZmVyOjpzZXREcmFnSW1hZ2UoRWxlbWVudCYsIGludCwgaW50KQogCiAjZWxzZQogCi1SZWY8RGF0
YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKQorUmVmPERhdGFUcmFuc2Zl
cj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFk
V3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIFR5cGU6OkRyYWdBbmRE
cm9wRGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1v
ZGU6OlJlYWRXcml0ZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoUGFnZVBhc3Rl
Ym9hcmRDb250ZXh0OjpjcmVhdGUoZG9jdW1lbnQucGFnZUlEKCkpKSwgVHlwZTo6RHJhZ0FuZERy
b3BEYXRhKSk7CiB9CiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
RHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5oCmluZGV4IGE3YmNjODgzODMzOTlmN2QzNWM1MzdjYjY2MGM1OGZiMjU0YmYyNmQu
LmIwODRlZTQxNjUxMjY1MjIyMGU0M2E2ZDRiY2NjYWZmN2M2NjZkNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tbWl0
VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0g
ICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoKTsKKyAgICBzdGF0aWMg
UmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYpOwogICAgIHN0
YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1
bWVudCYpOwogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKGNvbnN0
IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFu
c2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBk
cmFnZ2luZ0ZpbGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0NzkyOTQyMDdh
OGMwNDk2MmNjYjIzOTk0YjZiMTRjMGRmYjYxMmExLi4yMjBlMDQzMmJlMzgyZmYwZWUxZmY4NzAz
OTJkNDEwYTllYWJlODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC04Myw2ICs4
Myw3IEBACiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIgog
I2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJl
bW92ZUZvcm1hdENvbW1hbmQuaCIKQEAgLTM5OSw3ICs0MDAsNyBAQCBzdGF0aWMgUmVmPERhdGFU
cmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRv
Y3VtZW50LAogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5UZXh0Ogog
ICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0
b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFpblRleHRU
eXBlID0gInRleHQvcGxhaW4iX3M7Ci0gICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4dFR5cGUp
OworICAgICAgICAgICAgYXV0byBwbGFpblRleHQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUoZG9jdW1lbnQucGFnZUlEKCkp
KS0+cmVhZFN0cmluZyhwbGFpblRleHRUeXBlKTsKICAgICAgICAgICAgIGF1dG8gcGFzdGVib2Fy
ZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKICAgICAgICAgICAgIHBhc3RlYm9h
cmQtPndyaXRlU3RyaW5nKHBsYWluVGV4dFR5cGUsIHBsYWluVGV4dCk7CiAgICAgICAgICAgICBy
ZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFU
cmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSk7CkBAIC00
MDcsNyArNDA4LDcgQEAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2Zl
ckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICAgICAgRkFMTFRIUk9V
R0g7CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3RlOgogICAgIGNhc2UgQ2xpcGJv
YXJkRXZlbnRLaW5kOjpQYXN0ZUFzUXVvdGF0aW9uOgotICAgICAgICByZXR1cm4gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVN
b2RlOjpSZWFkb25seSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOworICAg
ICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQs
IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LnBhZ2VJ
RCgpKSkpOwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5OgogICAgIGNh
c2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDdXQ6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVu
dEtpbmQ6OkJlZm9yZVBhc3RlOgpAQCAtNDMzLDcgKzQzNCw3IEBAIHN0YXRpYyBib29sIGRpc3Bh
dGNoQ2xpcGJvYXJkRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgdGFyZ2V0LCBDbGlwYm9hcmRFdmVu
dEtpbmQKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgIGJvb2wgbm9EZWZh
dWx0UHJvY2Vzc2luZyA9IGV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiAgICAgaWYgKG5vRGVm
YXVsdFByb2Nlc3NpbmcgJiYgKGtpbmQgPT0gQ2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5IHx8IGtp
bmQgPT0gQ2xpcGJvYXJkRXZlbnRLaW5kOjpDdXQpICYmIGRhdGFUcmFuc2Zlci0+cGFzdGVib2Fy
ZCgpLmhhc0RhdGEoKSkKLSAgICAgICAgZGF0YVRyYW5zZmVyLT5jb21taXRUb1Bhc3RlYm9hcmQo
KlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKKyAgICAgICAgZGF0YVRyYW5z
ZmVyLT5jb21taXRUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZSh0YXJnZXQtPmRvY3VtZW50KCkucGFnZUlE
KCkpKSk7CiAKICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKIApA
QCAtNjE4LDcgKzYxOSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0CiAKIHZvaWQgRWRpdG9y
OjpwYXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQogewotICAgIHBhc3RlQXNQbGFpblRl
eHRXaXRoUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOwor
ICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFn
ZUlEKCkpKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKQEAgLTE0MTEsNyArMTQxMiw3IEBAIHZvaWQgRWRp
dG9yOjpwZXJmb3JtQ3V0T3JDb3B5KEVkaXRvckFjdGlvblNwZWNpZmllciBhY3Rpb24pCiAgICAg
fQogCiAgICAgaWYgKGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChtX2RvY3VtZW50LnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpKQotICAgICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVy
KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0ZWJvYXJkOjpDYW5TbWFydFJlcGxhY2Ug
OiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOworICAgICAgICBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUobV9kb2N1
bWVudC5wYWdlSUQoKSkpLT53cml0ZVBsYWluVGV4dChzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNm
ZXIoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSA/IFBhc3RlYm9hcmQ6OkNhblNtYXJ0UmVwbGFj
ZSA6IFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IG51bGxwdHI7CiAgICAgICAgIGlmIChh
Y3Rpb24gPT0gQ29weUFjdGlvbikKQEAgLTE0MTksMTcgKzE0MjAsMTcgQEAgdm9pZCBFZGl0b3I6
OnBlcmZvcm1DdXRPckNvcHkoRWRpdG9yQWN0aW9uU3BlY2lmaWVyIGFjdGlvbikKIAogICAgICAg
ICBpZiAoaW1hZ2VFbGVtZW50KSB7CiAjaWYgIVBMQVRGT1JNKFdJTikKLSAgICAgICAgICAgIHdy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
LCAqaW1hZ2VFbGVtZW50LCBkb2N1bWVudCgpLnVybCgpLCBkb2N1bWVudCgpLnRpdGxlKCkpOwor
ICAgICAgICAgICAgd3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFn
ZUlEKCkpKSwgKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51cmwoKSwgZG9jdW1lbnQoKS50aXRs
ZSgpKTsKICNlbHNlCiAgICAgICAgICAgICAvLyBGSVhNRTogRGVsZXRlIGFmdGVyIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzE3NzYxOD4gbGFuZHMuCi0gICAgICAgICAgICBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVJbWFnZSgqaW1hZ2VFbGVtZW50LCBkb2N1bWVudCgp
LnVybCgpLCBkb2N1bWVudCgpLnRpdGxlKCkpOworICAgICAgICAgICAgUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9jdW1l
bnQucGFnZUlEKCkpKS0+d3JpdGVJbWFnZSgqaW1hZ2VFbGVtZW50LCBkb2N1bWVudCgpLnVybCgp
LCBkb2N1bWVudCgpLnRpdGxlKCkpOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7CiAjaWYgIVBM
QVRGT1JNKFdJTikKLSAgICAgICAgICAgIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7CisgICAgICAgICAgICB3cml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQ
YXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKSk7CiAjZWxzZQog
ICAgICAgICAgICAgLy8gRklYTUU6IERlbGV0ZSBhZnRlciA8aHR0cDovL3dlYmtpdC5vcmcvYi8x
Nzc2MTg+IGxhbmRzLgotICAgICAgICAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKCktPndyaXRlU2VsZWN0aW9uKCpzZWxlY3Rpb24sIGNhblNtYXJ0Q29weU9yRGVsZXRlKCks
ICptX2RvY3VtZW50LmZyYW1lKCksIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JEYXRhVHJhbnNmZXIp
OworICAgICAgICAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0
ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKS0+d3JpdGVTZWxlY3Rp
b24oKnNlbGVjdGlvbiwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgKm1fZG9jdW1lbnQuZnJhbWUo
KSwgSW5jbHVkZUltYWdlQWx0VGV4dEZvckRhdGFUcmFuc2Zlcik7CiAjZW5kaWYKICAgICAgICAg
fQogICAgIH0KQEAgLTE0NDcsNyArMTQ0OCw3IEBAIHZvaWQgRWRpdG9yOjpwZXJmb3JtQ3V0T3JD
b3B5KEVkaXRvckFjdGlvblNwZWNpZmllciBhY3Rpb24pCiAKIHZvaWQgRWRpdG9yOjpwYXN0ZShG
cm9tTWVudU9yS2V5QmluZGluZyBmcm9tTWVudU9yS2V5QmluZGluZykKIHsKLSAgICBwYXN0ZSgq
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCksIGZyb21NZW51T3JLZXlCaW5kaW5n
KTsKKyAgICBwYXN0ZSgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0
ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKSwgZnJvbU1lbnVPcktl
eUJpbmRpbmcpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGUoUGFzdGVib2FyZCYgcGFzdGVib2Fy
ZCwgRnJvbU1lbnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCkBAIC0xNDc1LDcg
KzE0NzYsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChGcm9tTWVudU9yS2V5Qmlu
ZGluZyBmcm9tTWVudU9yS2V5QmluZGluZykKICAgICBpZiAoIWNhblBhc3RlKCkpCiAgICAgICAg
IHJldHVybjsKICAgICB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhmYWxz
ZSk7Ci0gICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoKSk7CisgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJk
KCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0
OjpjcmVhdGUobV9kb2N1bWVudC5wYWdlSUQoKSkpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3Rl
QXNRdW90YXRpb24oRnJvbU1lbnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRpbmcpCkBA
IC0xNDg4LDcgKzE0ODksNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1F1b3RhdGlvbihGcm9tTWVu
dU9yS2V5QmluZGluZyBmcm9tTWVudU9yS2V5QmluZGluZykKICAgICAgICAgcmV0dXJuOwogICAg
IHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKGZhbHNlKTsKICAgICBSZXNv
dXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1cHByZXNzb3IoZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoUGFnZVBhc3RlYm9hcmRDb250ZXh0Ojpj
cmVhdGUobV9kb2N1bWVudC5wYWdlSUQoKSkpOwogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpCiAgICAgICAgIHBhc3Rl
V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZC5nZXQoKSwgeyBQYXN0ZU9wdGlvbjo6QWxsb3dQbGFp
blRleHQsIFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbiB9KTsKICAgICBlbHNlCkBAIC0xNTU1LDcg
KzE1NTYsNyBAQCB2b2lkIEVkaXRvcjo6c2ltcGxpZnlNYXJrdXAoTm9kZSogc3RhcnROb2RlLCBO
b2RlKiBlbmROb2RlKQogCiB2b2lkIEVkaXRvcjo6Y29weVVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBjb3B5VVJMKHVybCwgdGl0bGUsICpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7CisgICAgY29weVVSTCh1cmwsIHRpdGxlLCAqUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3Jl
YXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpjb3B5VVJMKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
KQpAQCAtMTU5NywxMCArMTU5OCwxMCBAQCB2b2lkIEVkaXRvcjo6Y29weUltYWdlKGNvbnN0IEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICAgICAgdXJsID0gcmVzdWx0LmFic29sdXRlSW1hZ2VV
UkwoKTsKIAogI2lmICFQTEFURk9STShXSU4pCi0gICAgd3JpdGVJbWFnZVRvUGFzdGVib2FyZCgq
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCksICplbGVtZW50LCB1cmwsIHJlc3Vs
dC5hbHREaXNwbGF5U3RyaW5nKCkpOworICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0
ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSksICplbGVtZW50LCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5
U3RyaW5nKCkpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogRGVsZXRlIGFmdGVyIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzE3NzYxOD4gbGFuZHMuCi0gICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCktPndyaXRlSW1hZ2UoKmVsZW1lbnQsIHVybCwgcmVzdWx0LmFsdERpc3BsYXlTdHJp
bmcoKSk7CisgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJv
YXJkQ29udGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpKS0+d3JpdGVJbWFnZSgqZWxl
bWVudCwgdXJsLCByZXN1bHQuYWx0RGlzcGxheVN0cmluZygpKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAxYTEwMDJmODMxZTFmMGMw
MDI0YjI0NGIxNzQxZjVhYmQxMzhmNzQ5Li45ODQxN2RlYmZiMDJhYmIzNjVmNDllMGNkZTgxYjc3
NWQzMDZmNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAg
LTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJJbnNlcnRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUg
Ikluc2VydE5lc3RlZExpc3RDb21tYW5kLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgpAQCAtOTE0LDcgKzkxNSw3IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjCiAKICAgICBBU1NFUlRfVU5VU0VEKHNvdXJjZSwgc291
cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZyk7CiAgICAgVXNlclR5cGluZ0dlc3R1
cmVJbmRpY2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgZnJhbWUuZWRp
dG9yKCkucGFzdGUoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpKTsKKyAg
ICBmcmFtZS5lZGl0b3IoKS5wYXN0ZSgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0
aW9uKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZyYW1lLnBhZ2VJRCgpKSkpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
aW5kZXggMmI3M2JkZDZmY2Y4OGYwMWMwOTZjOTA1ZmMxMjZlNDlkN2JiNjQ5Zi4uYTliNDZhYjM0
YjcwMjMwOThlZGVkY2MzMjA3MjJkZGMxNzg5Zjc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCAiSFRNTE5hbWVzLmgi
CiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIgogI2ltcG9ydCAiTGVnYWN5V2Vi
QXJjaGl2ZS5oIgorI2ltcG9ydCAiUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW1wb3J0ICJQ
YXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgpAQCAtMTAwLDcgKzEwMSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0
ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9wdGlvblNldDxQYXN0ZU9w
dGlvbj4KIAogdm9pZCBFZGl0b3I6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSk7CisgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKFBhZ2VQYXN0ZWJvYXJkQ29u
dGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQucGFnZUlEKCkpLCBwYXN0ZWJvYXJkTmFtZSk7CiAgICAg
aWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSkKICAgICAgICAgcGFzdGVXaXRoUGFzdGVib2FyZCgmcGFzdGVib2FyZCwgeyBQYXN0
ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQgfSk7CiAgICAgZWxzZQpAQCAtMTQzLDcgKzE0NCw3IEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgYXV0byByYW5nZSA9IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqbm9kZSk7CiAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNl
dEZvY3VzKTsKIAotICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKG1f
ZG9jdW1lbnQucGFnZUlEKCkpLCBwYXN0ZWJvYXJkTmFtZSk7CiAKICAgICBpZiAoIW1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewog
ICAgICAgICBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmluZGV4IDk0
ZDAzZDg1ZDZkYTlmNGY4OGY4Y2QxMmU0YmZmYmQzM2I0ZGM1NjcuLmYyODg3M2MwYTU4Y2JkODkw
NDI3YzA3YTYxMmY0YzQ5MmVhNzhmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSlND
b21tYW5kTGluZUFQSUhvc3QuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlBhZ2VQYXN0ZWJvYXJkQ29udGV4
dC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCkBAIC0xNDksNyArMTUwLDcgQEAgdm9pZCBDb21tYW5k
TGluZUFQSUhvc3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKIAogdm9pZCBDb21tYW5kTGluZUFQ
SUhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFzdGVib2FyZDo6
Q2Fubm90U21hcnRSZXBsYWNlKTsKKyAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoeyB9KS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBs
YWNlKTsKIH0KIAogSlNDOjpKU1ZhbHVlIENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVP
YmplY3Q6OmdldChKU0M6OkpTR2xvYmFsT2JqZWN0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggODMyMjk2NzZjYTc0MWY4
NjMwZTc5NGI1NWM0NDkyNDAxMjE5Njc4Yy4uMDBkNjJjZjQ3MTk2ZThlNzc5MzJkZmM4NTdkMjBj
YjAxNDgyYjE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdl
UGFzdGVib2FyZENvbnRleHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNDE0LDcgKzQxNSw4IEBA
IFN0cmluZyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBvcnQoKSBjb25zdAogCiB2b2lkIEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6Y29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIFBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT53cml0ZVBsYWluVGV4dCh0ZXh0LCBQ
YXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOworICAgIGF1dG8gcGFnZUlEID0gbV9mcm9u
dGVuZFBhZ2UgPyBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkucGFnZUlEKCkgOiBXVEY6Om51
bGxvcHQ7CisgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJv
YXJkQ29udGV4dDo6Y3JlYXRlKFdURk1vdmUocGFnZUlEKSkpLT53cml0ZVBsYWluVGV4dCh0ZXh0
LCBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogfQogCiB2b2lkIEluc3BlY3RvckZy
b250ZW5kSG9zdDo6a2lsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNob3VsZFByZXBl
bmRUb0tpbGxSaW5nLCBib29sIHNob3VsZFN0YXJ0TmV3U2VxdWVuY2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDlmY2VmZDZlOWYzMzMyNGIxYzZlMjkwM2ZkNjE3
ZjQwN2QzNWZjZDEuLjg0MjFkMjU2MWY5MjlhMDY2NzU4ZTBhMzVjZTZiYzdhZDRkNDMzOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAg
c3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdE
YXRhKGNvbnN0IERyYWdEYXRhJiBkcmEKICAgICBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwogCiAg
ICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSkgewotICAgICAgICBp
ZiAoYXV0byBmcmFnbWVudCA9IGZyYW1lLmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2Fy
ZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpLCBjb250ZXh0LCBh
bGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpKQorICAgICAgICBpZiAoYXV0byBmcmFnbWVu
dCA9IGZyYW1lLmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6
Y3JlYXRlKGRyYWdEYXRhKSwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0
KSkKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKIAogICAgICAgICBpZiAoZHJhZ0RhdGEu
Y29udGFpbnNVUkwoRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcykpIHsKQEAgLTIyMCw3
ICsyMjAsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVkKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKICAgICBhdXRvJiBtYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZyYW1lKCk7
CiAgICAgaWYgKG1haW5GcmFtZS52aWV3KCkpCi0gICAgICAgIG1haW5GcmFtZS5ldmVudEhhbmRs
ZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRhKSwgUGFzdGVi
b2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpLCBkcmFnRGF0YS5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2soKSwgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKKyAgICAgICAg
bWFpbkZyYW1lLmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZl
bnQoZHJhZ0RhdGEpLCBQYXN0ZWJvYXJkOjpjcmVhdGUoZHJhZ0RhdGEpLCBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAg
ICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpOwogICAgIGlmIChtX2ZpbGVJbnB1dEVs
ZW1lbnRVbmRlck1vdXNlKQogICAgICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlLT5z
ZXRDYW5SZWNlaXZlRHJvcHBlZEZpbGVzKGZhbHNlKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29s
IERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEpCiAgICAgICAgIFJlZjxGcmFtZT4gbWFpbkZyYW1lKG1fcGFnZS5tYWluRnJhbWUoKSk7
CiAgICAgICAgIGJvb2wgcHJldmVudGVkRGVmYXVsdCA9IGZhbHNlOwogICAgICAgICBpZiAobWFp
bkZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gbWFpbkZyYW1l
LT5ldmVudEhhbmRsZXIoKS5wZXJmb3JtRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFn
RGF0YSksIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKSwgZHJhZ0Rh
dGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMo
KSk7CisgICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5wZXJmb3JtRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZShkcmFnRGF0YSksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaygpLCBkcmFnRGF0YS5jb250YWluc0ZpbGVzKCkpOwogICAgICAgICBpZiAocHJldmVudGVk
RGVmYXVsdCkgewogICAgICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsKICAgICAgICAgICAgIG1f
ZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKQEAgLTcyNCw3ICs3MjQsNyBAQCBib29sIERy
YWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRp
b25hbDxEcmFnT3BlcmF0aQogCiAgICAgYXV0byBzb3VyY2VPcGVyYXRpb25NYXNrID0gZHJhZ0Rh
dGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7CiAgICAgYXV0byB0YXJnZXRSZXNwb25z
ZSA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91
c2VFdmVudChkcmFnRGF0YSksIFsmZHJhZ0RhdGFdKCkgewotICAgICAgICByZXR1cm4gUGFzdGVi
b2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpOworICAgICAgICByZXR1cm4gUGFz
dGVib2FyZDo6Y3JlYXRlKGRyYWdEYXRhKTsKICAgICB9LCBzb3VyY2VPcGVyYXRpb25NYXNrLCBk
cmFnRGF0YS5jb250YWluc0ZpbGVzKCkpOwogICAgIGlmICghdGFyZ2V0UmVzcG9uc2UuYWNjZXB0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXZWJDb250ZW50UmVh
ZGVyIHJlYWRlcigqZnJhbWUsICptX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UsIHRydWUp
OwotICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9w
KGRyYWdEYXRhKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGUoZHJh
Z0RhdGEpOwogICAgIHBhc3RlYm9hcmQtPnJlYWQocmVhZGVyKTsKIAogICAgIGlmICghcmVhZGVy
LmZyYWdtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGNiNmFlM2Vh
NjlkZjBmZmIwMmEyMjY5NDU2MWQ2MTJlYzc2MWJmNWQuLmFlZWQ1YzJiMzgwNzk2ZTE1NjE3NDA0
OTQ2ZWJmZGExYzViNDY2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAg
LTM5ODksNyArMzk4OSwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogICAgIC8vIEZJWE1F
OiBDb25zaWRlciBkb2luZyB0aGlzIGVhcmxpZXIgaW4gdGhpcyBmdW5jdGlvbiBhcyB0aGUgZWFy
bGllc3QgcG9pbnQgd2UncmUgc3VyZSBpdCB3b3VsZCBiZSBzYWZlIHRvIGRyb3AgYW4gb2xkIGRy
YWcuCiAgICAgaW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwogCi0gICAgZHJhZ1N0YXRlKCkuZGF0
YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKCk7CisgICAgaWYgKCFtX2Zy
YW1lLmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRyYWdTdGF0ZSgp
LmRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZygqbV9mcmFtZS5kb2N1
bWVudCgpKTsKICAgICBhdXRvIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA9IEhhc05vbkRl
ZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm87CiAgICAgCiAgICAgaWYgKGRyYWdTdGF0ZSgpLnNob3Vs
ZERpc3BhdGNoRXZlbnRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQ
YXN0ZWJvYXJkQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUGFzdGVib2FyZENv
bnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMTBjNjM2ZWZkZjIzMjcxNGU4M2QyY2ZkY2IwYWY2NGFiNjRh
ZWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUGFzdGVib2Fy
ZENvbnRleHQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRDb250ZXh0
LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgUGFnZVBhc3RlYm9hcmRDb250ZXh0KE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiYmIHBhZ2VJRCA9IFdURjo6bnVsbG9wdCkKKyAgICAgICAgOiBQYXN0ZWJvYXJk
Q29udGV4dCgpCisgICAgICAgICwgbV9wYWdlSUQoV1RGTW92ZShwYWdlSUQpKQorICAgIHsKKyAg
ICB9CisKKyAgICB+UGFnZVBhc3RlYm9hcmRDb250ZXh0KCkgeyB9CisKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBjcmVhdGUoT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+JiYgcGFnZUlEID0gV1RGOjpudWxsb3B0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGFnZVBhc3RlYm9hcmRDb250ZXh0PihXVEZNb3ZlKHBhZ2VJRCkpOworICAgIH0K
KworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VJRDsgfQorICAgIGJvb2wgaXNQYWdlUGFzdGVib2FyZENvbnRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG1fcGFnZUlEOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlBhZ2VQYXN0ZWJvYXJkQ29udGV4dCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQmIGNv
bnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNQYWdlUGFzdGVib2FyZENvbnRleHQoKTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5j
cHAKaW5kZXggYzI3ZmQwZjZlYTFmNzAwNzliMGNlMGRlMWQxYTYzZWY4ZTJjZmM5NC4uNTVhYmQ1
Njk5NmQ4ZDUzODVhYTdjNjkwNjIxYjQ5Y2ZkZmU0ZDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdEYXRhLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgiCiAKQEAgLTMyLDI3ICszMywzNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9u
U2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdE
YXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0
aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3Np
dGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3Bs
YXRmb3JtRHJhZ0RhdGEoZGF0YSkKICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KHNvdXJjZU9wZXJhdGlvbk1hc2spCiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCiAg
ICAgLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZGVzdGluYXRpb25BY3Rpb25NYXNrKQor
ICAgICwgbV9wYWdlSUQocGFnZUlEKQogeyAgCiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlv
bk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpE
cmFnRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3Ms
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24o
Y2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQog
ICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZs
YWdzKQogICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRlc3RpbmF0aW9uQWN0aW9u
TWFzaykKKyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKIHsKIH0KICNlbmRpZgogCitzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IERyYWdEYXRhOjpjcmVhdGVQYXN0ZWJvYXJkQ29udGV4
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB7IG1fcGFnZUlEIH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKaW5kZXggYWNjM2U4ZWQxNjE4OThiODYxYzlmZmQ5NjY4MmVhNDI0YTJk
YmVlZi4uZjIyMTI1YzUwMzBmNzVmM2JmOTkyNGFiYTM4YmQwZGRhNTA0ZThlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5j
bHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTY1LDYg
KzY2LDggQEAgZW51bSBjbGFzcyBEcmFnQXBwbGljYXRpb25GbGFncyA6IHVpbnQ4X3QgewogICAg
IElzQ29weUtleURvd24gPSA4CiB9OwogCitjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKKwogI2lm
IFBMQVRGT1JNKFdJTikKIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgVmVjdG9yPFN0cmluZz4+
IERyYWdEYXRhTWFwOwogI2VuZGlmCkBAIC03NSwxMyArNzgsMTMgQEAgcHVibGljOgogICAgIGVu
dW0gY2xhc3MgRHJhZ2dpbmdQdXJwb3NlIHsgRm9yRWRpdGluZywgRm9yRmlsZVVwbG9hZCwgRm9y
Q29sb3JDb250cm9sIH07CiAKICAgICAvLyBjbGllbnRQb3NpdGlvbiBpcyB0YWtlbiB0byBiZSB0
aGUgcG9zaXRpb24gb2YgdGhlIGRyYWcgZXZlbnQgd2l0aGluIHRoZSB0YXJnZXQgd2luZG93LCB3
aXRoICgwLDApIGF0IHRoZSB0b3AgbGVmdAotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERy
YWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJh
Z0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFn
RGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9u
U2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4sIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0s
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKCksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1l
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0
aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURy
YWdEZXN0aW5hdGlvbkFjdGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0g
V1RGOjpudWxsb3B0KTsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkg
YnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5
IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIERyYWdEYXRhKCkg
PSBkZWZhdWx0OwogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0
YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291
cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxE
cmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQgPSBXVEY6Om51bGxvcHQpOwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBkcmFnRGF0YU1hcCgp
OwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVEZXNjcmlwdG9yRGF0YShpbnQmIHNpemUsIFN0cmluZyYg
cGF0aG5hbWUpOwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9p
ZCogZGF0YUJsb2IpOwpAQCAtMTExLDE5ICsxMTQsMjggQEAgcHVibGljOgogICAgIGJvb2wgY29u
dGFpbnNQcm9taXNlKCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykKKyAgICBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH0KIAotICAgIERyYWdEYXRhJiBvcGVyYXRvciA9KGNvbnN0IERyYWdEYXRhJiBkYXRhKQorICAg
IERyYWdEYXRhJiBvcGVyYXRvcj0oY29uc3QgRHJhZ0RhdGEmIGRhdGEpCiAgICAgewogICAgICAg
ICBtX2NsaWVudFBvc2l0aW9uID0gZGF0YS5tX2NsaWVudFBvc2l0aW9uOwogICAgICAgICBtX2ds
b2JhbFBvc2l0aW9uID0gZGF0YS5tX2dsb2JhbFBvc2l0aW9uOwogICAgICAgICBtX3BsYXRmb3Jt
RHJhZ0RhdGEgPSBkYXRhLm1fcGxhdGZvcm1EcmFnRGF0YTsKICAgICAgICAgbV9kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2sgPSBkYXRhLm1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwog
ICAgICAgICBtX2FwcGxpY2F0aW9uRmxhZ3MgPSBkYXRhLm1fYXBwbGljYXRpb25GbGFnczsKKyAg
ICAgICAgbV9maWxlTmFtZXMgPSBkYXRhLm1fZmlsZU5hbWVzOwogICAgICAgICBtX2RyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2sgPSBkYXRhLm1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKKyAg
ICAgICAgbV9wYWdlSUQgPSBkYXRhLm1fcGFnZUlEOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICAgICBtX3Bhc3RlYm9hcmROYW1lID0gZGF0YS5tX3Bhc3RlYm9hcmROYW1lOworI2VuZGlmCisj
aWYgUExBVEZPUk0oV0lOKQorICAgICAgICBtX2RyYWdEYXRhTWFwID0gZGF0YS5tX2RyYWdEYXRh
TWFwOworI2VuZGlmCiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9Ci0jZW5kaWYKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBJbnRQb2ludCBtX2NsaWVudFBvc2l0aW9uOwpA
QCAtMTMzLDYgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlv
bkZsYWdzPiBtX2FwcGxpY2F0aW9uRmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFt
ZXM7CiAgICAgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VJRDsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcgbV9wYXN0ZWJvYXJkTmFtZTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IGFhZGM0NjY5OGRmNzk1NjQzNjJh
MDNmNWRmZTg5YjBlYjc4MTFjZTkuLmFmNTQ3MTVkOGFjOGU2Zjg3YzQxYmZhZmU3ZmFiMmZmNjM2
NDhkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCisjaW5jbHVkZSAiUGFz
dGVib2FyZENvbnRleHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmRJdGVtSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC0xNzYsMjQgKzE3NywyNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogY2xhc3Mg
UGFzdGVib2FyZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFzdGVib2FyZCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFBhc3RlYm9hcmQoKTsKKyAgICBQYXN0
ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJik7CiAgICAgdmlydHVh
bCB+UGFzdGVib2FyZCgpOwogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIGV4cGxpY2l0IFBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKFNlbGVj
dGlvbkRhdGEmKTsKKyAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkQ29udGV4dD4mJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBleHBsaWNpdCBQYXN0
ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiwgU2VsZWN0aW9uRGF0
YSYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgZXhwbGljaXQgUGFzdGVib2FyZChT
ZWxlY3Rpb25EYXRhJiYpOworICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmRDb250ZXh0PiYmLCBTZWxlY3Rpb25EYXRhJiYpOwogI2VuZGlmCiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKElEYXRhT2JqZWN0
Kik7Ci0gICAgZXhwbGljaXQgUGFzdGVib2FyZChXQ0RhdGFPYmplY3QqKTsKLSAgICBleHBsaWNp
dCBQYXN0ZWJvYXJkKGNvbnN0IERyYWdEYXRhTWFwJik7CisgICAgZXhwbGljaXQgUGFzdGVib2Fy
ZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYsIElEYXRhT2JqZWN0Kik7Cisg
ICAgZXhwbGljaXQgUGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+
JiYsIFdDRGF0YU9iamVjdCopOworICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmLCBjb25zdCBEcmFnRGF0YU1hcCYpOwogI2VuZGlmCiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gY3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJik7CiAKICAgICBzdGF0aWMgYm9vbCBpc1NhZmVUeXBlRm9y
RE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgY2FuRXhw
b3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMoY29uc3QgU3RyaW5nJik7CkBA
IC0yMzUsOCArMjM2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pOyAvLyBG
SVhNRTogVHdvIHNlcGFyYXRlIGZ1bmN0aW9ucyB3b3VsZCBiZSBjbGVhcmVyIHRoYW4gb25lIGZ1
bmN0aW9uIHdpdGggYW4gYXJndW1lbnQuCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gY3JlYXRl
Rm9yRHJhZ0FuZERyb3AoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IGNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBjcmVh
dGVGb3JEcmFnQW5kRHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gY3Jl
YXRlKGNvbnN0IERyYWdEYXRhJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhZ0ltYWdlKERy
YWdJbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpOwogI2VuZGlmCkBAIC0yNDksMTkgKzI1
MCwxOSBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgY29uc3QgU2VsZWN0aW9u
RGF0YSYgc2VsZWN0aW9uRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gY3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCk7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGludDY0X3QgY2hhbmdlQ291bnQpOwot
ICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgZXhwbGljaXQgUGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+
JiYsIGludDY0X3QgY2hhbmdlQ291bnQpOworICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKIAogICAgIHN0YXRpYyBOU0FycmF5ICpzdXBwb3J0ZWRXZWJDb250ZW50UGFzdGVib2Fy
ZFR5cGVzKCk7CiAgICAgc3RhdGljIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlKE5TU3RyaW5nICpt
aW1lVHlwZSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBleHBsaWNpdCBQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwcm9taXNlZEZpbGVQYXRocyA9IHsgfSk7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9taXNlZEZpbGVQYXRocyA9IHsgfSk7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjk4LDYgKzI5OSw4IEBAIHB1YmxpYzoK
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpOwogCisgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3Q7CkBA
IC0zMjgsNiArMzMxLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKKwogI2lm
IFBMQVRGT1JNKEdUSykKICAgICBPcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRh
dGE7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZDBjNWRiY2VjNWE3ZjY1ZDA1MTg4M2M5MDM1ZTJi
NWQ0MTE5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ29udGV4dC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUGFzdGVib2FyZENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIHZpcnR1YWwgflBhc3RlYm9hcmRDb250ZXh0KCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCBib29sIGlzUGFnZVBhc3RlYm9hcmRDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorICAgIFBhc3RlYm9hcmRDb250ZXh0KCkgPSBkZWZh
dWx0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAppbmRleCA2ZjMyMWZhZWZkMGU2MTQ5MTUxOGFhNWRk
NGRhYmYxOGZlMTFiZWI4Li5iMmQ3YTU1MGQ0NjBlOTRjZDMxNTEzNGEzMTk1YmNkOTFjN2I3ODk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApAQCAt
MzAsNyArMzAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdGF0aWNQYXN0ZWJvYXJk
OjpTdGF0aWNQYXN0ZWJvYXJkKCkgPSBkZWZhdWx0OworU3RhdGljUGFzdGVib2FyZDo6U3RhdGlj
UGFzdGVib2FyZCgpCisgICAgOiBQYXN0ZWJvYXJkKHsgfSkKK3sKK30KKwogU3RhdGljUGFzdGVi
b2FyZDo6flN0YXRpY1Bhc3RlYm9hcmQoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgU3RhdGljUGFzdGVi
b2FyZDo6aGFzRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9EcmFnRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0Rh
dGFDb2NvYS5tbQppbmRleCAxN2UwOTFkNDQ0NDFhNTI2OTQyN2U0M2YzZTg1ZmYyYzVkOWJhOGQz
Li5lNDMzZWRiMzhlOGM1OGEwMDY1NGRiNWE1OWUxYmNkNDA5N2EzZDA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTMwLDYgKzMwLDcg
QEAKICNpbXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgiCiAjaW1wb3J0ICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiUGFnZVBh
c3RlYm9hcmRDb250ZXh0LmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQYXN0
ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgpAQCAtMTMw
LDEzICsxMzEsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYK
IH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBs
aWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVz
dGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0
aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAs
IG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0Rh
dGEoZGF0YSkKICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJh
dGlvbk1hc2spCiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCiAgICAgLCBtX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2soZGVzdGluYXRpb25BY3Rpb25NYXNrKQorICAgICwgbV9wYWdl
SUQocGFnZUlEKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGFzdGVib2FyZE5hbWUoW1tt
X3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSBuYW1lXSkKICNlbHNlCkBAIC0x
NDUsMTMgKzE0NywxNCBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQbwogewogfQogCi1EcmFnRGF0
YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBs
aWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVz
dGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJh
Z1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKDApCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhz
b3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQogICAg
ICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKKyAg
ICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fcGFzdGVib2FyZE5hbWUoZHJhZ1N0b3JhZ2VO
YW1lKQogewogfQpAQCAtMTY1LDcgKzE2OCw3IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJM
VHlwZUlkZW50aWZpZXIoKSBjb25zdAogICAgIAogYm9vbCBEcmFnRGF0YTo6Y2FuU21hcnRSZXBs
YWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKS5j
YW5TbWFydFJlcGxhY2UoKTsKKyAgICByZXR1cm4gUGFzdGVib2FyZChjcmVhdGVQYXN0ZWJvYXJk
Q29udGV4dCgpLCBtX3Bhc3RlYm9hcmROYW1lKS5jYW5TbWFydFJlcGxhY2UoKTsKIH0KIAogYm9v
bCBEcmFnRGF0YTo6Y29udGFpbnNDb2xvcigpIGNvbnN0CkBAIC0yMTcsNyArMjIwLDcgQEAgYm9v
bCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAogCiBTdHJpbmcgRHJhZ0RhdGE6
OmFzUGxhaW5UZXh0KCkgY29uc3QKIHsKLSAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQobV9wYXN0
ZWJvYXJkTmFtZSk7CisgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKGNyZWF0ZVBhc3RlYm9hcmRD
b250ZXh0KCksIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIFBhc3RlYm9hcmRQbGFpblRleHQgdGV4
dDsKICAgICBwYXN0ZWJvYXJkLnJlYWQodGV4dCk7CiAgICAgU3RyaW5nIHN0cmluZyA9IHRleHQu
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApp
bmRleCBkYzY4NTM0NTU2ODE3ZmM0ZDA1ODYzMDk5ZDNjOGEwNTI2MDg3YjRmLi5mMGZhZGQ3MDg2
OTU2MzhmN2M4MWU5MjY3MWY2N2MxODRlMzhjMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC00Myw0NSArNDMsNTIgQEAgZW51bSBDbGlw
Ym9hcmREYXRhVHlwZSB7CiAgICAgQ2xpcGJvYXJkRGF0YVR5cGVVbmtub3duCiB9OwogCi1zdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KCkKK3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiB7
Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIkNMSVBCT0FSRCIpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQi
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckdsb2JhbFNlbGVjdGlvbigpCitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29u
dGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJQ
UklNQVJZIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250
ZXh0KSwgIlBSSU1BUlkiKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi1zdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQor
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAg
IHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGEoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSwgU2VsZWN0aW9uRGF0
YSgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGUoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogewogICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5jcmVhdGVQYXN0ZWJvYXJkQ29udGV4
dCgpLCAqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJv
YXJkKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQotICAgIDogbV9zZWxlY3Rpb25EYXRh
KFdURk1vdmUoc2VsZWN0aW9uRGF0YSkpCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBTZWxlY3Rpb25EYXRhJiYgc2Vs
ZWN0aW9uRGF0YSkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9z
ZWxlY3Rpb25EYXRhKFdURk1vdmUoc2VsZWN0aW9uRGF0YSkpCiB7CiB9CiAjZW5kaWYKIAotUGFz
dGVib2FyZDo6UGFzdGVib2FyZChTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb25EYXRhKQotICAgIDog
bV9zZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRhdGEpCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb25EYXRhKQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAg
LCBtX3NlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0YSkKIHsKIH0KIAotUGFzdGVib2FyZDo6UGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUobmFtZSkKK1Bhc3RlYm9h
cmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQp
KQorICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBtX2NvbnRl
eHQoV1RGTW92ZShjb250ZXh0KSkKIHsKIH0KIAotUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpID0g
ZGVmYXVsdDsKIFBhc3RlYm9hcmQ6On5QYXN0ZWJvYXJkKCkgPSBkZWZhdWx0OwogCiBjb25zdCBT
ZWxlY3Rpb25EYXRhJiBQYXN0ZWJvYXJkOjpzZWxlY3Rpb25EYXRhKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggYTYyZjgzMTZmYmZj
Y2M1ZWUxOTVkMmJmMWQyYjkwMGY5ZjhmNGUwNi4uMzM2NWEzZWI4NmJiMGFiNDlhOWMwYWJhZGY0
ODFkZGYwODA5ZTczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTUyLDggKzUyLDkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLSAg
ICA6IG1fcGFzdGVib2FyZE5hbWUocGFzdGVib2FyZE5hbWUpCitQYXN0ZWJvYXJkOjpQYXN0ZWJv
YXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkp
CisgICAgLCBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmROYW1lKQogICAgICwgbV9jaGFuZ2VD
b3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNv
dW50KHBhc3RlYm9hcmROYW1lKSkKIHsKIH0KQEAgLTcwLDE0ICs3MSwxNCBAQCBTdHJpbmcgUGFz
dGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQogICAgIHJldHVybiAiZHJhZyBhbmQgZHJv
cCBwYXN0ZWJvYXJkIjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKK3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJk
PihQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFn
UGFzdGVib2FyZCgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGUoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRh
LnBhc3RlYm9hcmROYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRy
YWdEYXRhLmNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCksIGRyYWdEYXRhLnBhc3RlYm9hcmROYW1l
KCkpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTkxLDEzICs5Miwx
NSBAQCBzdGF0aWMgaW50NjRfdCBjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSA9IHsgfSkKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpXZWJBcmNo
aXZlUGJvYXJkVHlwZSA9IEAiQXBwbGUgV2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIjsKIE5T
U3RyaW5nICpVSUNvbG9yUGJvYXJkVHlwZSA9IEAiY29tLmFwcGxlLnVpa2l0LmNvbG9yIjsKIAot
UGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCi0gICAgOiBtX2NoYW5nZUNvdW50KDApCitQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250
ZXh0KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBtX2NoYW5nZUNv
dW50KDApCiB7CiB9CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoaW50NjRfdCBjaGFuZ2VDb3Vu
dCkKLSAgICA6IG1fY2hhbmdlQ291bnQoY2hhbmdlQ291bnQpCitQYXN0ZWJvYXJkOjpQYXN0ZWJv
YXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBpbnQ2NF90
IGNoYW5nZUNvdW50KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBt
X2NoYW5nZUNvdW50KGNoYW5nZUNvdW50KQogewogfQogCkBAIC0xMDUsOSArMTA4LDkgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogewogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkK
K3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oUEFMOjpnZXRfVUlLaXRfVUlQYXN0ZWJv
YXJkTmFtZUdlbmVyYWwoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oV1RG
TW92ZShjb250ZXh0KSwgUEFMOjpnZXRfVUlLaXRfVUlQYXN0ZWJvYXJkTmFtZUdlbmVyYWwoKSk7
CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQm
IGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFz
dGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVi
b2FyZExpYldQRS5jcHAKaW5kZXggNzhiNDhhM2E4OTJlNDZiOGMxNTBhYjI3NzA1MGIwMjU4ZWY2
OTA2OC4uZTY1ZmE4N2NkMWU5YTFkZWQ3MDFlNDJkZWFmNDVhMmVlNTQzYmFiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApA
QCAtMzUsMTIgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCitzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQo
KQorUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRl
eHQ+JiYgY29udGV4dCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDEy
YmMzZDZhZThlMmNmMWJjNTJhM2EwZDZkZTFiOTI3MTljN2ViZDQuLmY3ZjhmZmU0ZjhlOWY4YzNh
OTZiMzI3NmNiYTM1ZDgzYjZkOWQ0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC04MywyNCArODMsMjYgQEAgTlNBcnJheSAqUGFzdGVib2Fy
ZDo6c3VwcG9ydGVkRmlsZVVwbG9hZFBhc3RlYm9hcmRUeXBlcygpCiAgICAgcmV0dXJuIEBbIChO
U1N0cmluZyAqKWxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIChOU1N0cmluZyAq
KWxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCkgXTsKIH0KIAotUGFzdGVib2FyZDo6UGFz
dGVib2FyZCgpCi0gICAgOiBtX3Bhc3RlYm9hcmROYW1lKGVtcHR5U3RyaW5nKCkpCitQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250
ZXh0KQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBtX3Bhc3RlYm9h
cmROYW1lKGVtcHR5U3RyaW5nKCkpCiAgICAgLCBtX2NoYW5nZUNvdW50KDApCiB7CiB9CiAKLVBh
c3RlYm9hcmQ6OlBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHByb21pc2VkRmlsZVBhdGhzKQotICAgIDogbV9wYXN0ZWJvYXJkTmFt
ZShwYXN0ZWJvYXJkTmFtZSkKK1Bhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9taXNlZEZpbGVQYXRocykKKyAgICA6IG1fY29u
dGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9wYXN0ZWJvYXJkTmFtZShwYXN0ZWJvYXJk
TmFtZSkKICAgICAsIG1fY2hhbmdlQ291bnQocGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKSkKICAgICAsIG1fcHJv
bWlzZWRGaWxlUGF0aHMocHJvbWlzZWRGaWxlUGF0aHMpCiB7CiAgICAgQVNTRVJUKHBhc3RlYm9h
cmROYW1lKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVi
b2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29u
dGV4dD4mJiBjb250ZXh0KQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJkKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCBOU0dl
bmVyYWxQYm9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQog
CkBAIC0xMTAsMTYgKzExMiwxNiBAQCBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3Rl
Ym9hcmQoKQogICAgIHJldHVybiBOU1Bhc3RlYm9hcmROYW1lRHJhZzsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKK3N0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVi
b2FyZD4oV1RGTW92ZShjb250ZXh0KSwgTlNEcmFnUGJvYXJkKTsKICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
K3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGUoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRy
YWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5jcmVhdGVQYXN0ZWJvYXJkQ29udGV4
dCgpLCBkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdE
YXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAK
aW5kZXggNjFlYTRjNDdmYTM1MjI1ODhmODNhNjg2ZDg1Yzc3YzE0MjkwOWMyNC4uOWUyODc4M2U2
ZTFhYzEzNTk3MGIwNmQ0MjBmNWVjNjRhNmI5OWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC00MCwxMyArNDAsMTMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLAotICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzKQorRHJhZ0RhdGE6OkRyYWdE
YXRhKGNvbnN0IERyYWdEYXRhTWFwJiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4g
ZmxhZ3MsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAgICAgOiBtX2NsaWVudFBv
c2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3Np
dGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBwbGljYXRpb25G
bGFncyhmbGFncykKKyAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fZHJhZ0RhdGFNYXAo
ZGF0YSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAppbmRleCAyMWI5N2Y1OGIwZWUzOWU0NDcyMWU2ZjI3ZDA3ZTYyOTEyZWIwNGQ3Li5jYzgw
MDNmNWUxNTMyMDVhYzA3NWFkMDY5NTQyMTU5NTAxOTlkZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05Myw5ICs5Myw5IEBAIHN0YXRp
YyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25lclduZFByb2MoSFdORCBoV25kLCBVSU5U
IG1lc3NhZ2UsIFdQQVJBTSB3CiAgICAgcmV0dXJuIGxyZXN1bHQ7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQorc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZShzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICBh
dXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0
ZWJvYXJkID0gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpKTsKICAgICBD
T01QdHI8SURhdGFPYmplY3Q+IGNsaXBib2FyZERhdGE7CiAgICAgaWYgKCFTVUNDRUVERUQoT2xl
R2V0Q2xpcGJvYXJkKCZjbGlwYm9hcmREYXRhKSkpCiAgICAgICAgIGNsaXBib2FyZERhdGEgPSAw
OwpAQCAtMTA0LDIwICsxMDQsMjAgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRy
YWdBbmREcm9wKCkKK3N0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29u
dGV4dCkKIHsKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBkYXRhT2JqZWN0OwogICAgIFdDRGF0
YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3QpOwotICAgIHJldHVybiBtYWtlVW5p
cXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksIGRhdGFPYmplY3QuZ2V0KCkpOwogfQogCiAv
LyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKICAgICBpZiAoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpCi0gICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEuY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKSwgZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogICAgIC8vIEZJWE1FOiBTaG91bGQgYWRk
IGEgY29uc3Qgb3ZlcmxvYWQgb2YgZHJhZ0RhdGFNYXAgc28gd2UgZG9uJ3QgbmVlZCBhIGNvbnN0
X2Nhc3QgaGVyZS4KLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0
PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLmNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCksIGNvbnN0
X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7CiB9CiAjZW5kaWYKIApA
QCAtMTM5LDI5ICsxMzksMzMgQEAgdm9pZCBQYXN0ZWJvYXJkOjpmaW5pc2hDcmVhdGluZ1Bhc3Rl
Ym9hcmQoKQogICAgIEN1c3RvbURhdGFDbGlwYm9hcmRGb3JtYXQgPSA6OlJlZ2lzdGVyQ2xpcGJv
YXJkRm9ybWF0KEwiV2ViS2l0IEN1c3RvbSBEYXRhIEZvcm1hdCIpOwogfQogCi1QYXN0ZWJvYXJk
OjpQYXN0ZWJvYXJkKCkKLSAgICA6IG1fZGF0YU9iamVjdCgwKQorUGFzdGVib2FyZDo6UGFzdGVi
b2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKKyAgICA6
IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9kYXRhT2JqZWN0KDApCiAgICAg
LCBtX3dyaXRhYmxlRGF0YU9iamVjdCgwKQogewogICAgIGZpbmlzaENyZWF0aW5nUGFzdGVib2Fy
ZCgpOwogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0
KQotICAgIDogbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJk
KHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBJRGF0YU9iamVj
dCogZGF0YU9iamVjdCkKKyAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwg
bV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9iamVjdCgwKQog
ewogICAgIGZpbmlzaENyZWF0aW5nUGFzdGVib2FyZCgpOwogfQogCi1QYXN0ZWJvYXJkOjpQYXN0
ZWJvYXJkKFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCkKLSAgICA6IG1fZGF0YU9iamVjdChkYXRh
T2JqZWN0KQorUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZENvbnRleHQ+JiYgY29udGV4dCwgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0KQorICAgIDogbV9j
b250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkK
ICAgICAsIG1fd3JpdGFibGVEYXRhT2JqZWN0KGRhdGFPYmplY3QpCiB7CiAgICAgZmluaXNoQ3Jl
YXRpbmdQYXN0ZWJvYXJkKCk7CiB9CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoY29uc3QgRHJh
Z0RhdGFNYXAmIGRhdGFNYXApCi0gICAgOiBtX2RhdGFPYmplY3QoMCkKK1Bhc3RlYm9hcmQ6OlBh
c3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQsIGNv
bnN0IERyYWdEYXRhTWFwJiBkYXRhTWFwKQorICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4
dCkpCisgICAgLCBtX2RhdGFPYmplY3QoMCkKICAgICAsIG1fd3JpdGFibGVEYXRhT2JqZWN0KDAp
CiAgICAgLCBtX2RyYWdEYXRhTWFwKGRhdGFNYXApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBiYjdjODRiZjgxNDc1Y2NjOTE5ZjA3
ODMwMDRkOTI5NzE4MDBmZTVlLi42MTFmNDYyNGRiYjg5NjFhOWFhZDE3M2U1NmU3NTVhYWY0Mzkw
MTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTE0MDksNiArMTQwOSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgZW5j
b2RlciA8PCBkcmFnRGF0YS5maWxlTmFtZXMoKTsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgZHJh
Z0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpOworICAgIGVuY29kZXIgPDwgZHJhZ0Rh
dGEucGFnZUlEKCk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCkBAIC0xNDQzLDcgKzE0NDQsMTEg
QEAgYm9vbCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2spKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkcmFnRGF0YSA9
IERyYWdEYXRhKHBhc3RlYm9hcmROYW1lLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24s
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFncywgZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFzayk7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGFzdGVib2FyZE5hbWUsIGNsaWVudFBvc2l0aW9u
LCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlv
bkZsYWdzLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLCBwYWdlSUQpOwogICAgIGRyYWdEYXRh
LnNldEZpbGVOYW1lcyhmaWxlTmFtZXMpOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDkwZWI0ZGJkZGMwZmE3
ODMzZTI4YThmM2YxMjZkY2Y5MDc4MzFlOTEuLjhkZDQzMjU0YzUyZWFiZTY0ZGZjOTJjMTE5Yjc5
ZjM4NjRlM2FiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC00MDE5LDcgKzQwMTksNyBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6
OmRyYWdnaW5nRW50ZXJlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAgIGF1dG8gZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFttX3ZpZXcg
X3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7
CiAgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFn
Z2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKLSAgICBXZWJDb3JlOjpEcmFn
RGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9u
TWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBk
cmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKKyAgICBXZWJDb3JlOjpE
cmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0
aW9uTWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgp
LCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLCBtX3BhZ2UtPndlYlBh
Z2VJRCgpKTsKIAogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAg
ICAgbV9wYWdlLT5kcmFnRW50ZXJlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFz
dGVib2FyZC5uYW1lKTsKQEAgLTQwNTcsNyArNDA1Nyw3IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJW
aWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZv
KQogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFn
Z2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2so
W21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2lu
Z0luZm9dKTsKICAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25N
YXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwotICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdP
cGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVh
c2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOworICAgIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRy
YWdPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2ssIG1fcGFn
ZS0+d2ViUGFnZUlEKCkpOwogICAgIG1fcGFnZS0+ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEsIGRyYWdn
aW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAKICAgICBOU0ludGVnZXIgbnVtYmVy
T2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1fcGFnZS0+Y3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9C
ZUFjY2VwdGVkKCk7CkBAIC00MDgxLDcgKzQwODEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFn
Z2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xv
YmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBb
bV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1f
dmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJh
Z0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVy
YXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBs
aWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5m
byksIGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBtX3BhZ2UtPndlYlBhZ2VJRCgpKTsKICAg
ICBtX3BhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3Rl
Ym9hcmQubmFtZSk7CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsK
ICAgICBkcmFnZ2luZ0luZm8ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1faW5pdGlhbE51
bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7CkBAIC00MDk3LDcgKzQwOTcsNyBAQCBib29sIFdlYlZp
ZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5n
SW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9p
bnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0
YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQs
IGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0
YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBj
b3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwg
ZHJhZ2dpbmdJbmZvKSwgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCksIG1fcGFnZS0+d2ViUGFn
ZUlEKCkpOwogCiAgICAgTlNBcnJheSAqdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0
ZWJvYXJkLnR5cGVzOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOGQxNDc3YzliNmU0ZjM4YmM3NDk5MWJlYTJm
MmJmY2QyMjA5MDkxMi4uYzg5Zjk1ZmZiZDUzN2I2MDkzZWQxNTcxODE4MjZjMWJkN2NlOTFkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC03Nzc3LDcgKzc3NzcsMTYgQEAgLSAoV2ViQ29yZTo6RHJhZ0Rh
dGEpZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJh
Z0Rlc3QKICAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gV2ViQ29yZTo6YW55RHJhZ09wZXJh
dGlvbigpOwogICAgIGlmICghc2Vzc2lvbi5hbGxvd3NNb3ZlT3BlcmF0aW9uKQogICAgICAgICBk
cmFnT3BlcmF0aW9uTWFzay5yZW1vdmUoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6TW92ZSk7Ci0g
ICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgeyB9LCBX
ZWJLaXQ6OmNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRyYWdEZXN0aW5hdGlvbkFjdGlv
bikgfTsKKworICAgIHJldHVybiB7CisgICAgICAgIHNlc3Npb24sCisgICAgICAgIFdlYkNvcmU6
OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLAorICAgICAgICBXZWJDb3JlOjpyb3VuZGVkSW50UG9p
bnQoZ2xvYmFsKSwKKyAgICAgICAgZHJhZ09wZXJhdGlvbk1hc2ssCisgICAgICAgIHsgfSwKKyAg
ICAgICAgV2ViS2l0Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRp
b25BY3Rpb24pLAorICAgICAgICBfcGFnZS0+d2ViUGFnZUlEKCkKKyAgICB9OwogfQogCiAtICh2
b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNs
aWVudEd0ay5jcHAKaW5kZXggOWY5ODY1OTUyMTcxZjMzN2IxNzNjZjU1MWZiOTQ5ZThmMjg5N2M0
ZC4uMWNjZWRkOWM1ODE2OTE1YjFlZGFiMzg3ZTY3ZmMwNjZhZWQ1ZGU0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGll
bnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRXZlbnROYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VQYXN0ZWJv
YXJkQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
SXRlcmF0b3IuaD4KQEAgLTE0NSw3ICsxNDYsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBk
YXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBwYXN0ZWJvYXJkQ29udGVudC5j
YW5TbWFydENvcHlPckRlbGV0ZSA9IGZhbHNlOwogICAgIHBhc3RlYm9hcmRDb250ZW50LnRleHQg
PSBwbGFpblRleHQoKnJhbmdlKTsKICAgICBwYXN0ZWJvYXJkQ29udGVudC5tYXJrdXAgPSBzZXJp
YWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSk7
Ci0gICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCktPndyaXRlKHBhc3Rl
Ym9hcmRDb250ZW50KTsKKyAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24o
UGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUoZnJhbWUtPnBhZ2VJRCgpKSktPndyaXRlKHBh
c3RlYm9hcmRDb250ZW50KTsKIH0KIAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZFNob3dV
bmljb2RlTWVudSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggOGIxNGI2MmMw
MTMzMTRjZDM1YmRiMzgzZjAxYzllYmJkM2RiYTQ3OS4uNjAyM2NlNzhmODQwYmRjZDM5YjY2Mzdh
ODRiYTRmODQzMDhiMWQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNDYs
NiArNDYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJJbWFnZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdUcnVuY2F0b3IuaD4KQEAgLTE4OCw4ICsxODksOCBA
QCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQogewot
ICAgIGlmIChhdXRvIGZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAg
IGZyYW1lLT5lZGl0b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcCgpLCBlbGVtZW50LCB1cmwsIGxhYmVsKTsKKyAgICBpZiAoYXV0byBm
cmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpKQorICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yRHJhZ0FuZERyb3AoUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUoZnJhbWUtPnBhZ2VJ
RCgpKSksIGVsZW1lbnQsIHVybCwgbGFiZWwpOwogfQogCiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNmI4
MzMwM2ZlNWUxYWNlYzNjZTViMDMyNTliN2IwY2NmNDM3ZTQ5Yy4uYzllM2Y2YjM1NTYwYzkwOTY4
ZDBlOTViMTI1Y2QzMTEyOTI5ODc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQxNDQsNyArNDE0NCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29u
c3QgSW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBEcmFnRGF0YSBkcmFnRGF0YSgm
c2VsZWN0aW9uRGF0YSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2ssIGZsYWdzKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0
aW9uRGF0YSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2ssIGZsYWdzLCBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgbV9pZGVudGlm
aWVyKTsKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rp
b246OkVudGVyZWQ6IHsKICAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4ZDQ1
MTU2N2EzZTY0Y2VkYWY2ZjVhNDU2N2E4ZmFjN2RiODVjYmQwLi42NDY5YTZhZWFjYjUyYjkwYjQ4
N2ZkM2U4OGU3ZDBiNGI2ZDU0OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTE0LDYgKzExNCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL05vZGVSZW5kZXJTdHlsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VQ
YXN0ZWJvYXJkQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
bGF0Zm9ybU1vdXNlRXZlbnQuaD4KQEAgLTI5ODYsNyArMjk4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgICAgICAgICAg
ICAgIHRpdGxlID0gbGlua0VsZW1lbnQtPnRleHRDb250ZW50KCk7CiAgICAgICAgICAgICAgICAg
dGl0bGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModGl0bGUpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZWRpdG9y
KCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKCksIGVsZW1lbnQsIHVybCwgdGl0bGUpOworICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5v
ZGUtPmRvY3VtZW50KCkuZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGVs
ZW1lbnQuZG9jdW1lbnQoKS5wYWdlSUQoKSkpLCBlbGVtZW50LCB1cmwsIHRpdGxlKTsKICAgICAg
ICAgfSBlbHNlIGlmIChlbGVtZW50LmlzTGluaygpKQogICAgICAgICAgICAgbV9pbnRlcmFjdGlv
bk5vZGUtPmRvY3VtZW50KCkuZWRpdG9yKCkuY29weVVSTChlbGVtZW50LmRvY3VtZW50KCkuY29t
cGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGVsZW1lbnQuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBlbGVtZW50
LnRleHRDb250ZW50KCkpOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5tbQppbmRleCBmMjFlOTQzYmU0ZTY2MjRkZWVkYzNiZGJjMmRjMzRjNTc3M2Y0YTIxLi41NTY3
NDk5MDRmZDUzNmIyNTE0ODMwNjc5ZGI4ZjY2Yzg4MmJkNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KQEAg
LTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZFdyaXRlci5oPgogCkBAIC0yNjgsOCArMjY5
LDggQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpiZWdpbkRyYWcoRHJhZ0l0ZW0sIEZyYW1lJiwgY29u
c3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYKIAogdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikK
IHsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSkKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIGVsZW1lbnQsIHVybCwgbGFiZWwpOworICAgIGlmIChh
dXRvIGZyYW1lID0gbWFrZVJlZlB0cihlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSkpCisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JEcmFnQW5kRHJvcChQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShmcmFtZS0+
cGFnZUlEKCkpKSwgZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVu
dDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCg==
</data>
<flag name="review"
          id="439355"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>