<?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>184793</bug_id>
          
          <creation_ts>2018-04-19 13:52:11 -0700</creation_ts>
          <short_desc>Make back forward cache work with process swapping</short_desc>
          <delta_ts>2018-04-23 17:17:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1416047</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 13:52:11 -0700</bug_when>
    <thetext>Make back forward cache work with process swapping

This introduces reattaching to a previous process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416048</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 13:52:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/38676604&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416058</commentid>
    <comment_count>2</comment_count>
      <attachid>338356</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 14:18:43 -0700</bug_when>
    <thetext>Created attachment 338356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416059</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-19 14:20:41 -0700</bug_when>
    <thetext>Attachment 338356 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:790:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:797:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 2 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416066</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 14:27:35 -0700</bug_when>
    <thetext>GTK bot isn&apos;t building because its VM exhausted - Not due to the patch.

Will move forward as if there wasn&apos;t GTK build coverage for this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416068</commentid>
    <comment_count>5</comment_count>
      <attachid>338359</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 14:45:12 -0700</bug_when>
    <thetext>Created attachment 338359
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416069</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-19 14:46:28 -0700</bug_when>
    <thetext>Attachment 338359 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:790:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:797:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 2 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416126</commentid>
    <comment_count>7</comment_count>
      <attachid>338359</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-19 16:57:02 -0700</bug_when>
    <thetext>Comment on attachment 338359
patch

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

r=me

&gt; Source/WebKit/UIProcess/WebBackForwardList.h:77
&gt; +    Vector&lt;BackForwardListItemState&gt; filteredItems(Function&lt;bool(WebBackForwardListItem&amp;)&gt;&amp;&amp;) const;

filteredItems is not very consistent with itemStates above. I would suggest filteredItemStates for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416166</commentid>
    <comment_count>8</comment_count>
      <attachid>338391</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 20:31:56 -0700</bug_when>
    <thetext>Created attachment 338391
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416167</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-19 20:34:13 -0700</bug_when>
    <thetext>Attachment 338391 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:790:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:797:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 2 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416171</commentid>
    <comment_count>10</comment_count>
      <attachid>338391</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-19 21:55:38 -0700</bug_when>
    <thetext>Comment on attachment 338391
Patch for landing

Clearing flags on attachment: 338391

Committed r230834: &lt;https://trac.webkit.org/changeset/230834&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338356</attachid>
            <date>2018-04-19 14:18:43 -0700</date>
            <delta_ts>2018-04-19 14:45:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>73526</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxOWJjMjQ4Zjg0Mi4uNjVlYzhlMTFkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOC0wNC0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBiYWNrIGZvcndhcmQgY2FjaGUgd29yayB3aXRoIHByb2Nlc3Mgc3dh
cHBpbmcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODY3NjYwND4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3OTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aERv
Y3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWxvYWRXaXRo
T3ZlcnJpZGVFbmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW0pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorCiAyMDE4LTA0LTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3aGVuIFdL
X0FMVEVSTkFURV9GUkFNRVdPUktTX0RJUiBpcyBzZXQgdG8gbm9uLWVtcHR5IHZhbHVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA4Nzk5ZGE2ZTAwZS4uOGEwNzE1MjJm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQxNiw3ICsxNDE2
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikK
ICAgICAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9jdW1lbnRMb2FkZXItPm92
ZXJyaWRlRW5jb2RpbmcoKSk7CiAKLSAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5w
dHIoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRl
ci5wdHIoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5h
dmlnYXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBuZXdEb2N1bWVu
dExvYWRlcikKQEAgLTE0NTUsMTAgKzE0NTUsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChE
b2N1bWVudExvYWRlciogbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHR5cGUgPSBGcmFtZUxv
YWRUeXBlOjpSZWxvYWQ7CiAgICAgfQogCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihuZXdE
b2N1bWVudExvYWRlciwgdHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMs
IFtdIHsgfSk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihuZXdEb2N1bWVudExvYWRlciwg
dHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5hdmlnYXRpb25Qb2xp
Y3lDaGVjazo6UmVxdWlyZSwgW10geyB9KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdp
dGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHR5
cGUsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVy
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdHlwZSwgRm9ybVN0YXRlKiBm
b3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwsIE5hdmlnYXRpb25Qb2xpY3lDaGVjaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFJldGFpbiBiZWNhdXNlIGRpc3BhdGNo
QmVmb3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBpdC4KICAg
ICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNjQzLDcgKzE2NDMsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVu
Y29kaW5nKQogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIAot
ICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWQsIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBbXSB7IH0pOworICAg
IGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxv
YWQsIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOYXZpZ2F0aW9uUG9saWN5
Q2hlY2s6OlJlcXVpcmUsIFtdIHsgfSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChP
cHRpb25TZXQ8UmVsb2FkT3B0aW9uPiBvcHRpb25zKQpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiAg
ICAgICAgIHJldHVybiBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7CiAgICAgfTsKICAgICAKLSAgICBs
b2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZnJhbWVMb2FkVHlwZUZvclJlbG9h
ZE9wdGlvbnMob3B0aW9ucyksIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBb
XSB7IH0pOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBmcmFtZUxv
YWRUeXBlRm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMOjpZZXMsIE5hdmlnYXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgW10geyB9KTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Q
b2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kpCkBAIC0xODU3LDkgKzE4NTcsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIGlmIChtX2xvYWRp
bmdGcm9tQ2FjaGVkUGFnZSAmJiBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAg
IGNhY2hlZFBhZ2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UoKmhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSwgbV9mcmFtZS5wYWdlKCkpOwogCi0gICAgTE9HKFBhZ2VDYWNoZSwgIldl
YkNvcmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHBy
ZXZpb3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVzJyIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5h
bWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3Jl
TG9hZGluZyAlczogQWJvdXQgdG8gY29tbWl0IHByb3Zpc2lvbmFsIGxvYWQgZnJvbSBwcmV2aW91
cyBVUkwgJyVzJyB0byBuZXcgVVJMICclcycgd2l0aCBjYWNoZWQgcGFnZSAlcCIsIG1fZnJhbWUu
dHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICBtX2Zy
YW1lLmRvY3VtZW50KCkgPyBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIiwKLSAgICAgICAgcGRsID8gcGRs
LT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDog
IjxubyBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iKTsKKyAgICAgICAgcGRsID8gcGRsLT51
cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxu
byBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iLCBjYWNoZWRQYWdlLmdldCgpKTsKIAogICAg
IHdpbGxUcmFuc2l0aW9uVG9Db21taXR0ZWQoKTsKIApAQCAtMzQ1OSwxMiArMzQ1OSwxNCBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBp
dGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogCiAgICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9
IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duOwogCisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4g
Y3VycmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3lHdWFyZChtX2N1cnJlbnRMb2Fk
U2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5LCBuYXZpZ2F0aW9uUG9saWN5Q2hlY2sgIT0gTmF2
aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOworCiAgICAgaWYgKENhY2hlZFBhZ2UqIGNhY2hl
ZFBhZ2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLmdldChpdGVtLCBtX2ZyYW1lLnBhZ2UoKSkp
IHsKICAgICAgICAgYXV0byBkb2N1bWVudExvYWRlciA9IGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9h
ZGVyKCk7CiAgICAgICAgIG1fY2xpZW50LnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKCpkb2N1
bWVudExvYWRlcik7CiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9u
KHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSwgaW5pdGlh
dGVkQnlNYWluRnJhbWUsIGxvYWRUeXBlLCBmYWxzZSB9KTsKICAgICAgICAgZG9jdW1lbnRMb2Fk
ZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7Ci0gICAgICAgIGxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIsIGxvYWRUeXBlLCAwLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgW10geyB9KTsKKyAgICAgICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihkb2N1bWVudExvYWRlciwgbG9hZFR5cGUsIDAsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBuYXZpZ2F0aW9uUG9saWN5Q2hlY2ssIFtdIHsgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTM1NTAsOCArMzU1Miw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5
cGUgbG9hCiAgICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdEZv
ck9yaWdpbmFsVVJMLCBpbml0aWF0ZWRCeU1haW5GcmFtZSwgbG9hZFR5cGUsIGlzRm9ybVN1Ym1p
c3Npb24sIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH07CiAgICAgfQogCi0g
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY3VycmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xp
Y3lHdWFyZChtX2N1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5LCBuYXZpZ2F0
aW9uUG9saWN5Q2hlY2sgIT0gTmF2aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOwotCiAgICAg
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5v
LCBsb2FkVHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIFtdIHsgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZDAwNzM1NDIyNGEuLjUz
ZmFhNDkzZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzYzLDcgKzM2
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qm
JiwgRXZlbnQqKTsKIAotICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExv
YWRlciosIEZyYW1lTG9hZFR5cGUsIEZvcm1TdGF0ZSosIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2FsbHMgY29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CisgICAgdm9pZCBsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiwgRnJhbWVMb2FkVHlwZSwgRm9ybVN0YXRlKiwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2ssIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7IC8vIENhbGxzIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeQogICAg
IHZvaWQgbG9hZChEb2N1bWVudExvYWRlciopOyAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9h
ZGVyCiAKICAgICB2b2lkIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgTG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5
cGUsIEZvcm1TdGF0ZSosIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExvYWRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA3MDRkYTM2Zjk1Ny4uYjkzMDE4NDkxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIzIEBA
CisyMDE4LTA0LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBNYWtlIGJhY2sgZm9yd2FyZCBjYWNoZSB3b3JrIHdpdGggcHJvY2VzcyBzd2FwcGluZy4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4Njc2NjA0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDc5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIHByZXZpb3VzbHkgc2F2ZWQgb2xkIHByb2Nlc3NlcyBpbiAi
U3VzcGVuZGVkUGFnZVByb3h5IiBvYmplY3RzLgorICAgICAgICBOb3cgd2UgcmV1c2UgdGhlbSB3
aGVuIGdvaW5nIGJhY2sgb3IgZm9yd2FyZC4KKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcu
aDoKKworICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnN1c3BlbmRlZFBhZ2UgY29uc3QpOgorCisgICAg
ICAgIFRlYWNoIE5hdmlnYXRpb24gb2JqZWN0cyB0aGVpciBzb3VyY2UgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbXM6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6TmF2aWdhdGlvbik6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb246OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbi5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjp0YXJnZXRJdGVtIGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2
aWdhdGlvbjo6ZnJvbUl0ZW0gY29uc3QpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpiYWNr
Rm9yd2FyZExpc3RJdGVtKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6U3VzcGVuZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlN1c3Bl
bmRlZFBhZ2VQcm94eTo6b3JpZ2luIGNvbnN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6
OldlYkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dDo6fldlYkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdDo6cGFnZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
YWRkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUFsbEl0ZW1zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6ZmlsdGVyZWRJdGVtcyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbVN0YXRlcyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6bG9nZ2luZ1N0cmluZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25TdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0
ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmF2
aWdhdGlvblN0YXRlOjpjcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXliZUNyZWF0ZVN1
c3BlbmRlZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9X
ZWJQcm9jZXNzV2l0aEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRmlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29ubmVjdGlv
bldpbGxPcGVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphdHRhY2hUb1Byb2Nl
c3NGb3JOYXZpZ2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NMaWZldGltZVRyYWNrZXI6OndlYlBhZ2VF
bnRlcmluZ1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzTGlmZXRpbWVU
cmFja2VyOjpjb25uZWN0aW9uV2lsbE9wZW4pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0Zvck5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0
ZXJTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
dW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmZyYW1lQ3JlYXRlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjph
dHRhY2hEcmF3aW5nQXJlYSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fY3JlZGVudGlhbHNNZXNzZW5nZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6Cisg
ICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3
aW5nQXJlYSk6IEZvcmNlIGEgcmVhdHRhY2htZW50IG9mIHRoZSBkcmF3aW5nCisgICAgICAgICAg
YXJlYSBmcm9tIGEgcmVzdW1lZCBXZWJQcm9jZXNzIHRvIHRoZSBVSVByb2Nlc3MgKHRvIG1ha2Ug
dGhlIHBhZ2UgY2FjaGUgd29yaykKKwogMjAxOC0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBXaW5kb3dQcm94eUNvbnRyb2xsZXIgdG8gV2lu
ZG93UHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggNDU1NjZhYzY2NTYuLjdhNjY4
ZmE4N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNDAsNiArNDAsNyBAQCBleHRl
cm4gIkMiIHsKICNlbmRpZgogCiAjZGVmaW5lIFdFQktJVDJfTE9HX0NIQU5ORUxTKE0pIFwKKyAg
ICBNKEJhY2tGb3J3YXJkKSBcCiAgICAgTShDYWNoZVN0b3JhZ2UpIFwKICAgICBNKENvbnRleHRN
ZW51KSBcCiAgICAgTShEcmFnQW5kRHJvcCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBhNzM4YzdkYTMzYi4uMzJlN2M3ODBmNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgog
CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTExMSw5ICsxMTIsMTcgQEAgYm9v
bCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNhbWVEb2N1bWVudChjb25zdCBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtJgogICAgIHJldHVybiBkb2N1bWVudFRyZWVzQXJlRXF1YWwobWFp
bkZyYW1lU3RhdGUsIG90aGVyTWFpbkZyYW1lU3RhdGUpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQor
dm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBh
Z2VQcm94eSogcGFnZSkKIHsKLSAgICBtX3N1c3BlbmRlZFBhZ2UgPSAmcGFnZTsKKyAgICBBU1NF
UlQoIW1fc3VzcGVuZGVkUGFnZSB8fCBwYWdlID09IG51bGxwdHIpOworICAgIG1fc3VzcGVuZGVk
UGFnZSA9IHBhZ2U7CiB9CiAKKyNpZiAhTE9HX0RJU0FCTEVECitjb25zdCBjaGFyKiBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOjpsb2dnaW5nU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gZGVidWdTdHJp
bmcoIkJhY2svZm9yd2FyZCBpdGVtIElEICIsIGl0ZW1JRCgpLmxvZ1N0cmluZygpLCAiLCBvcmln
aW5hbCBVUkwgIiwgb3JpZ2luYWxVUkwoKSwgIiwgY3VycmVudCBVUkwgIiwgdXJsKCksIG1fc3Vz
cGVuZGVkUGFnZSA/ICIoaGFzIGEgc3VzcGVuZGVkIHBhZ2UpIiA6ICIiKTsKK30KKyNlbmRpZiAv
LyAhTE9HX0RJU0FCTEVECisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDNjMWNjMjk5YjFiLi5iYTc0
NmJlZTk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaApAQCAtNjgsNyArNjgsMTIgQEAgcHVibGljOgogICAgIFZpZXdTbmFwc2hvdCogc25hcHNo
b3QoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0ZS5zbmFwc2hvdC5nZXQoKTsgfQogICAgIHZv
aWQgc2V0U25hcHNob3QoUmVmUHRyPFZpZXdTbmFwc2hvdD4mJiBzbmFwc2hvdCkgeyBtX2l0ZW1T
dGF0ZS5zbmFwc2hvdCA9IFdURk1vdmUoc25hcHNob3QpOyB9CiAjZW5kaWYKLSAgICB2b2lkIHNl
dFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5Jik7CisgICAgdm9pZCBzZXRTdXNwZW5k
ZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSopOworICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3Vz
cGVuZGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VzcGVuZGVkUGFnZTsgfQorCisjaWYgIUxP
R19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKTsKKyNlbmRpZgogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKaW5kZXggYjk1NzUzYzY3NTAuLjUzZGRiYjZiZmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvblN0YXRlLmgiCisjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0
aWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTM5LDE5ICs0MCwyMSBAQCBOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRp
b25TdGF0ZSYgc3RhdGUpCiB7CiB9CiAKLU5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdh
dGlvblN0YXRlJiBzdGF0ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK05h
dmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0
ZW0pCiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQog
ICAgICwgbV9vcmlnaW5hbFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKICAgICAsIG1fY3VycmVu
dFJlcXVlc3QobV9vcmlnaW5hbFJlcXVlc3QpCisgICAgLCBtX2Zyb21JdGVtKGZyb21JdGVtKQog
ewogICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobV9vcmlnaW5hbFJlcXVlc3QudXJsKCkpOwog
fQogCi1OYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUsIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRGcmFt
ZUxvYWRUeXBlKQorTmF2aWdhdGlvbjo6TmF2aWdhdGlvbihXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0
YXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiB0YXJnZXRJdGVtLCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiBmcm9tSXRlbSwgRnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUp
CiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQotICAg
ICwgbV9vcmlnaW5hbFJlcXVlc3QoaXRlbS51cmwoKSkKKyAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0
KHRhcmdldEl0ZW0udXJsKCkpCiAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KG1fb3JpZ2luYWxSZXF1
ZXN0KQotICAgICwgbV9iYWNrRm9yd2FyZExpc3RJdGVtKCZpdGVtKQorICAgICwgbV90YXJnZXRJ
dGVtKCZ0YXJnZXRJdGVtKQorICAgICwgbV9mcm9tSXRlbShmcm9tSXRlbSkKICAgICAsIG1fYmFj
a0ZvcndhcmRGcmFtZUxvYWRUeXBlKGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkKIHsKIH0KQEAg
LTczLDkgKzc2LDkgQEAgdm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTChjb25z
dCBVUkwmIHVybCkKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKLVdURjo6U3RyaW5nIE5hdmlnYXRp
b246OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAorY29uc3QgY2hhciogTmF2aWdhdGlvbjo6bG9nZ2lu
Z1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vc3QgcmVjZW50IFVS
TDogIiwgbV9jdXJyZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBCYWNrL2ZvcndhcmQgbGlz
dCBpdGVtIFVSTDogJyIsIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA/IG1fYmFja0ZvcndhcmRMaXN0
SXRlbS0+dXJsKCkgOiBTdHJpbmcgeyB9LCBTdHJpbmc6OmZvcm1hdCgiJyAoJXApIiwgbV9iYWNr
Rm9yd2FyZExpc3RJdGVtLmdldCgpKSk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCJNb3N0IHJl
Y2VudCBVUkw6ICIsIG1fY3VycmVudFJlcXVlc3QudXJsKCkuc3RyaW5nKCksICIgQmFjay9mb3J3
YXJkIGxpc3QgaXRlbSBVUkw6ICciLCBtX3RhcmdldEl0ZW0gPyBtX3RhcmdldEl0ZW0tPnVybCgp
IDogU3RyaW5nIHsgfSwgU3RyaW5nOjpmb3JtYXQoIicgKCVwKSIsIG1fdGFyZ2V0SXRlbS5nZXQo
KSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbi5oCmluZGV4IDk0N2ZiM2NmZGU2Li45NjMyZTJiOTk1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBAIC00OSwxNCArNDksMTQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXZpZ2F0aW9uKHN0YXRlKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxOYXZpZ2F0aW9uPiBjcmVhdGUoV2ViS2l0OjpXZWJOYXZpZ2F0
aW9uU3RhdGUmIHN0YXRlLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFdl
YkNvcmU6OkZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKQorICAgIHN0YXRp
YyBSZWY8TmF2aWdhdGlvbj4gY3JlYXRlKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0
ZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiB0YXJnZXRJdGVtLCBXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJh
Y2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE5hdmlnYXRpb24oc3RhdGUsIGl0ZW0sIGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXZpZ2F0aW9uKHN0YXRlLCB0YXJnZXRJdGVt
LCBmcm9tSXRlbSwgYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxOYXZpZ2F0aW9uPiBjcmVhdGUoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0
YXRlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorICAgIHN0YXRpYyBSZWY8
TmF2aWdhdGlvbj4gY3JlYXRlKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiBmcm9tSXRlbSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5h
dmlnYXRpb24oc3RhdGUsIFdURk1vdmUocmVxdWVzdCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmF2aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShyZXF1ZXN0KSwgZnJvbUl0ZW0pKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5OYXZpZ2F0aW9uKCk7CkBAIC03MSw3ICs3MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdChib29sIGlzUmVkaXJl
Y3QpIHsgbV9pc1JlZGlyZWN0ID0gaXNSZWRpcmVjdDsgfQogICAgIGJvb2wgY3VycmVudFJlcXVl
c3RJc1JlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlZGlyZWN0OyB9CiAKLSAgICBXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGJhY2tGb3J3YXJkTGlzdEl0ZW0oKSB7IHJldHVy
biBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCk7IH0KKyAgICBXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEl0ZW0uZ2V0
KCk7IH0KKyAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAogICAgIHZvaWQgYXBwZW5kUmVkaXJl
Y3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CkBAIC05MCwxMyArOTEsMTMgQEAgcHVibGlj
OgogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+
JiBvcGVuZXIoKSBjb25zdCB7IHJldHVybiBtX29wZW5lcjsgfQogCiAjaWYgIUxPR19ESVNBQkxF
RAotICAgIFdURjo6U3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKKyAgICBjb25zdCBjaGFy
KiBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJik7Ci0gICAgTmF2aWdhdGlv
bihXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KTsKLSAgICBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSk7CisgICAgTmF2
aWdhdGlvbihXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKTsKKyAgICBO
YXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViS2l0OjpXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiB0YXJnZXRJdGVtLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGZyb21JdGVtLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlKTsKIAogICAgIHVpbnQ2NF90IG1fbmF2
aWdhdGlvbklEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVz
dDsKQEAgLTEwNyw3ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRGb3JjZURv
d25sb2FkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNSZWRpcmVjdCB7IGZhbHNlIH07CiAKLSAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBtX2JhY2tGb3J3YXJkTGlz
dEl0ZW07CisgICAgUmVmUHRyPFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV90YXJn
ZXRJdGVtOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IG1fZnJv
bUl0ZW07CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUxvYWRUeXBlPiBtX2JhY2tG
b3J3YXJkRnJhbWVMb2FkVHlwZTsKICAgICBib29sIG1faXNDcm9zc09yaWdpbldpbmRvd09wZW5O
YXZpZ2F0aW9uIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjx1aW50NjRf
dCwgdWludDY0X3Q+PiBtX29wZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA2ZTc4ZTIyZWQyNi4uYTA5YTIwYTI4NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
QEAgLTQ3Niw2ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCB0cnlBcHBMaW5rKFJlZjxBUEk6Ok5hdmln
YXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgU3RyaQogCiB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlv
bj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYm
IGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCiB7CisgICAgQVNTRVJUKHdlYlBhZ2VQ
cm94eS5tYWluRnJhbWUoKSk7CiAgICAgU3RyaW5nIG1haW5GcmFtZVVSTFN0cmluZyA9IHdlYlBh
Z2VQcm94eS5tYWluRnJhbWUoKS0+dXJsKCk7CiAgICAgYm9vbCBzdWJmcmFtZU5hdmlnYXRpb24g
PSBuYXZpZ2F0aW9uQWN0aW9uLT50YXJnZXRGcmFtZSgpICYmICFuYXZpZ2F0aW9uQWN0aW9uLT50
YXJnZXRGcmFtZSgpLT5pc01haW5GcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCA0NDYwZjQ0N2UxMS4uNmUwNjUzZmZlMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtMzEsOSArMzEsMTMgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMu
aD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAj
aWYgIUxPR19ESVNBQkxFRApAQCAtNTUsNiArNTksNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJ
UEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQo
KQogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JGcmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKICAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkU2F2ZVRvUGFnZUNhY2hlIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoIkRpZFN0YXJ0UHJvZ3Jlc3MiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZCgiRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOwpAQCAtNjIsNiArNjcsNyBA
QCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1l
c1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UiKTsKICAgICAgICAgbWVzc2Fn
ZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVyVHJlZVNpemUiKTsKICAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4dCIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJTZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzIik7CiAgICAgfSk7CiAKICAgICBy
ZXR1cm4gbWVzc2FnZU5hbWVzOwpAQCAtNzIsMjMgKzc4LDMyIEBAIFN1c3BlbmRlZFBhZ2VQcm94
eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fcHJvY2VzcygmcHJvY2VzcykKICAg
ICAsIG1fYmFja0ZvcndhcmRMaXN0SXRlbShpdGVtKQorICAgICwgbV9vcmlnaW4oU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKHsgUGFyc2VkVVJMU3RyaW5nLCBpdGVtLnVybCgpIH0pKQogewot
ICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c2V0U3VzcGVuZGVkUGFnZSgqdGhpcyk7CisgICAg
bV9iYWNrRm9yd2FyZExpc3RJdGVtLT5zZXRTdXNwZW5kZWRQYWdlKHRoaXMpOworICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eSgqdGhpcyk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVl
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKIH0KIAogU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVk
UGFnZVByb3h5KCkKIHsKLSAgICBpZiAobV9wcm9jZXNzKQorICAgIGlmIChtX3Byb2Nlc3MpIHsK
ICAgICAgICAgbV9wcm9jZXNzLT5zdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKCp0aGlzKTsKKyAg
ICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJv
eHkoKnRoaXMpOworICAgIH0KKworICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c2V0U3VzcGVu
ZGVkUGFnZShudWxscHRyKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OndlYlByb2Nl
c3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChwcm9jZXNzLCAmcHJvY2VzcyA9PSBtX3Byb2Nlc3MpOworCisgICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLnVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHkoKnRoaXMpOwogICAgIG1fcHJv
Y2VzcyA9IG51bGxwdHI7CiAKICAgICBtX3BhZ2Uuc3VzcGVuZGVkUGFnZVByb2Nlc3NDbG9zZWQo
KnRoaXMpOworICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c2V0U3VzcGVuZGVkUGFnZShudWxs
cHRyKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZEZpbmlzaExvYWQoKQpAQCAt
MTEwLDcgKzEyNSw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlmIChtZXNzYWdlTmFtZXNUb0lnbm9yZVdo
aWxlU3VzcGVuZGVkKCkuY29udGFpbnMoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkKKyAgICBpZiAo
IW1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKS5jb250YWlucyhkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpKQogICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU3VzcGVuZGVkUGFn
ZVByb3h5IHJlY2VpdmVkIHVuZXhwZWN0ZWQgV2ViUGFnZVByb3h5IG1lc3NhZ2UgJyVzJyIsIGRl
Y29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CiAjZW5kaWYKIH0KQEAgLTEx
OCw3ICsxMzMsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZAogI2lmICFMT0dfRElTQUJMRUQK
IGNvbnN0IGNoYXIqIFN1c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoIiwgU3RyaW5nOjpmb3JtYXQoIiVwIiwgdGhpcyks
ICJwYWdlIElEICIsIFN0cmluZzo6bnVtYmVyKG1fcGFnZS5wYWdlSUQoKSksICIsIG1fZmluaXNo
ZWRTdXNwZW5kaW5nICIsIFN0cmluZzo6bnVtYmVyKG1fZmluaXNoZWRTdXNwZW5kaW5nKSwgIiki
KTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigiLCBTdHJpbmc6OmZvcm1hdCgiJXAiLCB0aGlz
KSwgIiBwYWdlIElEICIsIFN0cmluZzo6bnVtYmVyKG1fcGFnZS5wYWdlSUQoKSksICIsIG1fZmlu
aXNoZWRTdXNwZW5kaW5nICIsIFN0cmluZzo6bnVtYmVyKG1fZmluaXNoZWRTdXNwZW5kaW5nKSwg
IikiKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5oCmluZGV4IGNkOWNiYzA3NWM0Li45OWQ5YjBjNjVlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ4LDYgKzQ5LDcgQEAg
cHVibGljOgogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsg
fQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vz
czsgfQogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0oKSBjb25zdCB7IHJldHVybiBt
X2JhY2tGb3J3YXJkTGlzdEl0ZW07IH0KKyAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAKICAgICBib29sIGZp
bmlzaGVkU3VzcGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZmluaXNoZWRTdXNwZW5kaW5nOyB9
CiAKQEAgLTY1LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsK
ICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2VzczsKICAgICBSZWY8V2ViQmFja0ZvcndhcmRM
aXN0SXRlbT4gbV9iYWNrRm9yd2FyZExpc3RJdGVtOworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBtX29yaWdpbjsKIAogICAgIGJvb2wgbV9maW5pc2hlZFN1c3BlbmRpbmcgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwCmluZGV4IGYwYzM5NDFmYWQ3Li5jODNlZTYwY2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0yNywxMCArMjcsMTMgQEAKICNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgorI2luY2x1
ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ0LDEwICs0NywxMyBAQCBXZWJCYWNr
Rm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAg
LCBtX2N1cnJlbnRJbmRleCgwKQogICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNpdHkpCiB7
CisgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQ3JlYXRlZCBXZWJCYWNrRm9y
d2FyZExpc3QgJXAiLCB0aGlzKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0Zv
cndhcmRMaXN0KCkKIHsKKyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBEZXN0
cm95aW5nIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCIsIHRoaXMpOworCiAgICAgLy8gQSBXZWJCYWNr
Rm9yd2FyZExpc3Qgc2hvdWxkIG5ldmVyIGJlIGRlc3Ryb3llZCB1bmxlc3MgaXQncyBhc3NvY2lh
dGVkIHBhZ2UgaGFzIGJlZW4gY2xvc2VkIG9yIGlzIGludmFsaWQuCiAgICAgQVNTRVJUKCghbV9w
YWdlICYmICFtX2hhc0N1cnJlbnRJbmRleCkgfHwgIW1fcGFnZS0+aXNWYWxpZCgpKTsKIH0KQEAg
LTY3LDYgKzczLDggQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0
OjppdGVtRm9ySUQoY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnQKIAogdm9pZCBXZWJCYWNrRm9y
d2FyZExpc3Q6OnBhZ2VDbG9zZWQoKQogeworICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0Zv
cndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCBoYWQgaXRzIHBhZ2UgY2xvc2VkIHdpdGggY3Vy
cmVudCBzaXplICV6dSIsIHRoaXMsIG1fZW50cmllcy5zaXplKCkpOworCiAgICAgLy8gV2Ugc2hv
dWxkIGhhdmUgYWx3YXlzIHN0YXJ0ZWQgb3V0IHdpdGggYW4gbV9wYWdlIGFuZCB3ZSBzaG91bGQg
bmV2ZXIgY2xvc2UgdGhlIHBhZ2UgdHdpY2UuCiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKQEAgLTE1
Niw2ICsxNjQsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4mJiBuZXdJdGVtKQogICAgICAgICAgICAgbV9lbnRyaWVzLmluc2Vy
dChtX2N1cnJlbnRJbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CiAgICAgfQogCisgICAgTE9HKEJh
Y2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgV2ViQmFja0ZvcndhcmRMaXN0ICVwIGFkZGVkIGFu
IGl0ZW0uIEN1cnJlbnQgc2l6ZSAlenUsIGN1cnJlbnQgaW5kZXggJXp1LCB0aHJldyBhd2F5ICV6
dSBpdGVtcyIsIHRoaXMsIG1fZW50cmllcy5zaXplKCksIG1fY3VycmVudEluZGV4LCByZW1vdmVk
SXRlbXMuc2l6ZSgpKTsKICAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChuZXdJ
dGVtUHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVtcykpOwogfQogCkBAIC0xNzUsOCArMTg0LDEwIEBA
IHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiBpdGVtKQogICAgIH0KIAogICAgIC8vIElmIHRoZSB0YXJnZXQgaXRlbSB3YXNuJ3QgZXZlbiBp
biB0aGUgbGlzdCwgdGhlcmUncyBub3RoaW5nIGVsc2UgdG8gZG8uCi0gICAgaWYgKHRhcmdldElu
ZGV4ID09IG5vdEZvdW5kKQorICAgIGlmICh0YXJnZXRJbmRleCA9PSBub3RGb3VuZCkgeworICAg
ICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNrRm9yd2FyZExpc3Qg
JXAgY291bGQgbm90IGdvIHRvIGl0ZW0gJXMgKCVzKSBiZWNhdXNlIGl0IHdhcyBub3QgZm91bmQi
LCB0aGlzLCBpdGVtLml0ZW1JRCgpLmxvZ1N0cmluZygpLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKHRhcmdldEluZGV4IDwgbV9j
dXJyZW50SW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBtX2VudHJpZXMuc2l6ZSgp
IC0gdGFyZ2V0SW5kZXggLSAxOwpAQCAtMjA5LDYgKzIyMCw5IEBAIHZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0Ojpnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogICAgIH0KIAog
ICAgIG1fY3VycmVudEluZGV4ID0gdGFyZ2V0SW5kZXg7CisKKyAgICBMT0coQmFja0ZvcndhcmQs
ICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNrRm9yd2FyZExpc3QgJXAgZ29pbmcgdG8gaXRlbSAlcywg
aXMgbm93IGF0IGluZGV4ICV6dSIsIHRoaXMsIGl0ZW0uaXRlbUlEKCkubG9nU3RyaW5nKCksIHRh
cmdldEluZGV4KTsKKwogICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxw
dHIsIFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiB9CiAKQEAgLTMyMiw2ICszMzYsOCBAQCB2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlQWxsSXRlbXMoKQogewogICAgIEFTU0VSVCghbV9o
YXNDdXJyZW50SW5kZXggfHwgbV9jdXJyZW50SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKTsKIAor
ICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAl
cCByZW1vdmVBbGxJdGVtcyAoaGFzICV6dSBvZiB0aGVtKSIsIHRoaXMsIG1fZW50cmllcy5zaXpl
KCkpOworCiAgICAgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3ZlZEl0
ZW1zOwogCiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykgewpAQCAtMzM4LDYgKzM1
NCw4IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiB7CiAgICAgQVNTRVJUKCFt
X2hhc0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwog
CisgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgV2ViQmFja0ZvcndhcmRMaXN0
ICVwIGNsZWFyIChoYXMgJXp1IG9mIHRoZW0pIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CisK
ICAgICBzaXplX3Qgc2l6ZSA9IG1fZW50cmllcy5zaXplKCk7CiAgICAgaWYgKCFtX3BhZ2UgfHwg
c2l6ZSA8PSAxKQogICAgICAgICByZXR1cm47CkBAIC00MjUsMTkgKzQ0MywzMCBAQCB2b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBi
YWNrRm9yd2FyZExpc3RTdAogICAgIG1faGFzQ3VycmVudEluZGV4ID0gISFiYWNrRm9yd2FyZExp
c3RTdGF0ZS5jdXJyZW50SW5kZXg7CiAgICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9yd2FyZExp
c3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWVfb3IoMCk7CiAgICAgbV9lbnRyaWVzID0gV1RGTW92
ZShpdGVtcyk7CisKKyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNr
Rm9yd2FyZExpc3QgJXAgcmVzdG9yZWQgZnJvbSBzdGF0ZSAoaGFzICV6dSBlbnRyaWVzKSIsIHRo
aXMsIG1fZW50cmllcy5zaXplKCkpOwogfQogCi1WZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlPiBXZWJCYWNrRm9yd2FyZExpc3Q6Oml0ZW1TdGF0ZXMoKSBjb25zdAorVmVjdG9yPEJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZT4gV2ViQmFja0ZvcndhcmRMaXN0OjpmaWx0ZXJlZEl0ZW1zKEZ1
bmN0aW9uPGJvb2woV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYmIGZ1bmN0b3IpIGNvbnN0CiB7
CiAgICAgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gaXRlbVN0YXRlczsKICAgICBp
dGVtU3RhdGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyaWVzLnNpemUoKSk7CiAKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9lbnRyaWVzKQotICAgICAgICBpdGVtU3RhdGVz
LnVuY2hlY2tlZEFwcGVuZChlbnRyeS0+aXRlbVN0YXRlKCkpOworICAgIGZvciAoY29uc3QgYXV0
byYgZW50cnkgOiBtX2VudHJpZXMpIHsKKyAgICAgICAgaWYgKGZ1bmN0b3IoZW50cnkpKQorICAg
ICAgICAgICAgaXRlbVN0YXRlcy51bmNoZWNrZWRBcHBlbmQoZW50cnktPml0ZW1TdGF0ZSgpKTsK
KyAgICB9CiAKICAgICByZXR1cm4gaXRlbVN0YXRlczsKIH0KIAorVmVjdG9yPEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZT4gV2ViQmFja0ZvcndhcmRMaXN0OjppdGVtU3RhdGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmlsdGVyZWRJdGVtcyhbXShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3Q6OmRpZFJlbW92ZUl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgYmFja0ZvcndhcmRMaXN0
SXRlbSkKIHsKICAgICBtX3BhZ2UtPmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oYmFja0ZvcndhcmRM
aXN0SXRlbS5pdGVtSUQoKSk7CkBAIC00NDcsNCArNDc2LDI1IEBAIHZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0OjpkaWRSZW1vdmVJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGJhY2tGb3J3YXJk
TGlzdEl0CiAjZW5kaWYKIH0KIAorCisjaWYgIUxPR19ESVNBQkxFRAorY29uc3QgY2hhciogV2Vi
QmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIldlYkJhY2tGb3J3YXJk
TGlzdCAlcCAtICV6dSBlbnRyaWVzLCBoYXMgY3VycmVudCBpbmRleCAlcyAoJXp1KSIsIHRoaXMs
IG1fZW50cmllcy5zaXplKCksIG1faGFzQ3VycmVudEluZGV4ID8gIllFUyIgOiAiTk8iLCBtX2hh
c0N1cnJlbnRJbmRleCA/IG1fY3VycmVudEluZGV4IDogMCkpOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIlxuIik7CisgICAgICAgIGlmIChtX2hhc0N1cnJlbnRJbmRleCAmJiBtX2N1cnJlbnRJbmRl
eCA9PSBpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAqICIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIC0gIik7CisKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQobV9lbnRyaWVzW2ldLT5sb2dnaW5nU3RyaW5nKCkpOworICAgIH0KKworICAgIHJldHVy
biBkZWJ1Z1N0cmluZygiXG4iLCBidWlsZGVyLnRvU3RyaW5nKCkpOworfQorI2VuZGlmIC8vICFM
T0dfRElTQUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IDI4ZmNlYTMxZDJkLi4zOTllMjhmMzIy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAg
LTc0LDYgKzc0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3RvcmVGcm9tU3RhdGUoQmFja0Zv
cndhcmRMaXN0U3RhdGUpOwogCiAgICAgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4g
aXRlbVN0YXRlcygpIGNvbnN0OworICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+
IGZpbHRlcmVkSXRlbXMoRnVuY3Rpb248Ym9vbChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYp
IGNvbnN0OworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ2dpbmdTdHJp
bmcoKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlz
dChXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0
aW9uU3RhdGUuY3BwCmluZGV4IDMxYTcwN2IyZTY4Li45ODAyNGE0MzAwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwCkBAIC00MiwxOCArNDIs
MTggQEAgV2ViTmF2aWdhdGlvblN0YXRlOjp+V2ViTmF2aWdhdGlvblN0YXRlKCkKIHsKIH0KIAot
UmVmPEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVMb2FkUmVxdWVz
dE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK1JlZjxBUEk6Ok5hdmlnYXRp
b24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVt
KQogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IEFQSTo6TmF2aWdhdGlvbjo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBBUEk6Ok5hdmlnYXRp
b246OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgY3VycmVudEl0ZW0pOwogCiAgICAg
bV9uYXZpZ2F0aW9ucy5zZXQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24u
cHRyKCkpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLVJlZjxBUEk6Ok5hdmlnYXRp
b24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKK1Jl
ZjxBUEk6Ok5hdmlnYXRpb24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlQmFja0ZvcndhcmRO
YXZpZ2F0aW9uKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7
Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gQVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUoKnRoaXMsIGl0
ZW0sIGZyYW1lTG9hZFR5cGUpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IEFQSTo6TmF2aWdhdGlv
bjo6Y3JlYXRlKCp0aGlzLCB0YXJnZXRJdGVtLCBjdXJyZW50SXRlbSwgZnJhbWVMb2FkVHlwZSk7
CiAKICAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2
aWdhdGlvbi5wdHIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlv
blN0YXRlLmgKaW5kZXggMGUxMmYzZjgwMTEuLjEzNjZlM2NjOGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaApAQCAtNDgsOCArNDgsOCBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViTmF2aWdhdGlvblN0YXRlKCk7CiAgICAgfldlYk5hdmlnYXRp
b25TdGF0ZSgpOwogCi0gICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gY3JlYXRlQmFja0ZvcndhcmRO
YXZpZ2F0aW9uKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBl
KTsKLSAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNy
ZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiB0YXJnZXRJ
dGVtLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBjdXJyZW50SXRlbSwgV2ViQ29yZTo6RnJhbWVM
b2FkVHlwZSk7CisgICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gY3JlYXRlTG9hZFJlcXVlc3ROYXZp
Z2F0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiBjdXJyZW50SXRlbSk7CiAgICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gY3JlYXRlUmVsb2FkTmF2
aWdhdGlvbigpOwogICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZUxvYWREYXRhTmF2aWdh
dGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4
MmIwYTZhYTIzMS4uNGIxNTI5OGJlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNjQ0LDI1ICs2NDQsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVN5bmNocm9ub3VzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygpCiB7CiAgICAgYXV0byBw
cm9jZXNzID0gbWFrZVJlZihtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJv
Y2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdChtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkp
KTsKLSAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpLCBmYWxzZSk7Cisg
ICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSwgbnVsbHB0ciwgUmVhdHRh
Y2hGb3JCYWNrRm9yd2FyZDo6Tm8pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0YWNoVG9Q
cm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCi17Ci0g
ICAgLy8gRklYTUU6IElmIHRoaXMgV2ViUGFnZVByb3h5IGlzIHRoZSBvbmx5IG9uZSBob3N0ZWQg
aW4gaXRzIFdlYlByb2Nlc3MsIGRvZXMgdGhpcyBtYWtlIGl0IGdvIGF3YXk/Ci0gICAgLy8gV2Ug
bmVlZCB0byBiZSBwcmVwYXJlZCB0byByZXVzZSBpdCBsYXRlci4KLSAgICBwcm9jZXNzRGlkVGVy
bWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXApOwotCi0gICAg
Ly8gRklYTUU6IHRoaXMgaXMgdG8gZml4IHRoZSBBU1NFUlQoaXNWYWxpZCgpKSBpbnNpZGUgcmVh
dHRhY2hUb1dlYlByb2Nlc3MsIHNvbWUgb3RoZXIgd2F5IHRvIGZpeCB0aGlzIGlzIG5lZWRlZC4K
LSAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhXVEZNb3Zl
KHByb2Nlc3MpLCB0cnVlKTsKLX0KLQotU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJQYWdlUHJveHk6
Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCitTdXNw
ZW5kZWRQYWdlUHJveHkqIFdlYlBhZ2VQcm94eTo6bWF5YmVDcmVhdGVTdXNwZW5kZWRQYWdlKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uKQogewog
ICAgIEFTU0VSVCghbV9zdXNwZW5kZWRQYWdlIHx8IG1fc3VzcGVuZGVkUGFnZS0+cHJvY2Vzcygp
ICE9ICZwcm9jZXNzKTsKIAotICAgIGF1dG8qIGN1cnJlbnRJdGVtID0gbV9iYWNrRm9yd2FyZExp
c3QtPmN1cnJlbnRJdGVtKCk7CisgICAgYXV0byogY3VycmVudEl0ZW0gPSBuYXZpZ2F0aW9uLmZy
b21JdGVtKCk7CiAgICAgaWYgKCFjdXJyZW50SXRlbSkgewogICAgICAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIHVuYWJsZSB0byBjcmVhdGUgc3VzcGVu
ZGVkIHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIC0gTm8gY3VycmVudCBiYWNrL2ZvcndhcmQgaXRl
bSIsIHBhZ2VJRCgpLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTY4MSwyMCArNjcwLDM2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNw
ZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCiAgICAgbV9z
dXNwZW5kZWRQYWdlID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNo
VG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgYm9vbCBzdXNwZW5k
SW5PbGRQcm9jZXNzKQordm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9u
LCBSZWF0dGFjaEZvckJhY2tGb3J3YXJkIHJlYXR0YWNoRm9yQmFja0ZvcndhcmQpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWlzVmFsaWQoKSk7CiAKICAgICBtX2lz
VmFsaWQgPSB0cnVlOwogCi0gICAgaWYgKCFzdXNwZW5kSW5PbGRQcm9jZXNzKSB7CisgICAgLy8g
SWYgdGhlIHByb2Nlc3Mgd2UncmUgYXR0YWNoaW5nIHRvIGlzIGtlcHQgYWxpdmUgc29sZWx5IGJ5
IG91ciBjdXJyZW50IHN1c3BlbmRlZCBwYWdlLAorICAgIC8vIHdlIG5lZWQgdG8gbWFpbnRhaW4g
dGhhdCBieSB0ZW1wb3JhcmlseSBrZWVwaW5nIHRoZSBzdXNwZW5kZWQgcGFnZSBhbGl2ZS4KKyAg
ICBSZWZQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBjdXJyZW50U3VzcGVuZGVkUGFnZTsKKyAgICBp
ZiAoIW5hdmlnYXRpb24pIHsKICAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlz
LCBtX3BhZ2VJRCk7CiAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwot
ICAgIH0gZWxzZQotICAgICAgICBtX3Byb2Nlc3MtPnN1c3BlbmRXZWJQYWdlUHJveHkoKnRoaXMp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGN1cnJlbnRTdXNwZW5kZWRQYWdlID0gbV9zdXNwZW5k
ZWRQYWdlOworICAgICAgICBtX3Byb2Nlc3MtPnN1c3BlbmRXZWJQYWdlUHJveHkoKnRoaXMsICpu
YXZpZ2F0aW9uKTsKKyAgICB9CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwor
ICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVu
bmluZykKKyAgICAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLndlYlBhZ2VFbnRlcmlu
Z1dlYlByb2Nlc3MoKTsKKworICAgIGlmIChyZWF0dGFjaEZvckJhY2tGb3J3YXJkID09IFJlYXR0
YWNoRm9yQmFja0ZvcndhcmQ6OlllcykgeworICAgICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsK
KyAgICAgICAgQVNTRVJUKG1fbWFpbkZyYW1lSUQpOworICAgICAgICBtX21haW5GcmFtZSA9IFdl
YkZyYW1lUHJveHk6OmNyZWF0ZSh0aGlzLCAqbV9tYWluRnJhbWVJRCk7CisgICAgICAgIG1fcHJv
Y2Vzcy0+ZnJhbWVDcmVhdGVkKCptX21haW5GcmFtZUlELCAqbV9tYWluRnJhbWUpOworICAgIH0K
KworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBSZWF0dGFjaGlu
ZyBXZWJQYWdlUHJveHkgJXAgdG8gV2ViUHJvY2Vzc1Byb3h5ICVwIHdpdGggcGlkICVpXG4iLCB0
aGlzLCBtX3Byb2Nlc3MucHRyKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAK
ICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpICE9IENoaWxkUHJvY2Vzc1Byb3h5OjpTdGF0
ZTo6VGVybWluYXRlZCk7CiAgICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBDaGlsZFByb2Nl
c3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpCkBAIC03NjEsNyArNzY2LDcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzc1dpdGhJdGVtKFdl
YkJhY2tGb3J3YXIKICAgICBpZiAoJml0ZW0gIT0gbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJ
dGVtKCkpCiAgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbShpdGVtKTsKIAotICAg
IGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5h
dmlnYXRpb24oaXRlbSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkKTsKKyAgICBh
dXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZp
Z2F0aW9uKGl0ZW0sIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLCBGcmFtZUxvYWRU
eXBlOjpJbmRleGVkQmFja0ZvcndhcmQpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCBpdGVtLml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIE5hdmln
YXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwpAQCAtOTEzLDcgKzkxOCw3IEBAIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxv
YWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRp
b24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0
ZW0oKSk7CiAgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLmdldCgpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwg
TmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlKTsKICAgICByZXR1cm4gV1RGTW92ZShuYXZp
Z2F0aW9uKTsKIH0KQEAgLTk2Niw3ICs5NzEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBuYXZpZ2F0aW9u
ID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJj
ZVJlcXVlc3QoZmlsZVVSTCkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0
YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0KGZpbGVVUkwp
LCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTEyMjcsNyArMTIzMiw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBp
dGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgTE9HKExvYWRpbmcsICJX
ZWJQYWdlUHJveHkgJXAgZ29Ub0JhY2tGb3J3YXJkSXRlbSB0byBiYWNrIGl0ZW0gVVJMICVzIiwg
dGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIldlYlBh
Z2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRl
bS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gcmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShpdGVtKTsKQEAgLTEyMzgsNyArMTI0
Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBuYXZpZ2F0aW9uOwogICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCktPml0ZW1Jc0luU2FtZURvY3VtZW50KGl0ZW0pKQotICAgICAgICBuYXZpZ2F0aW9uID0gbV9u
YXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVtLCBmcmFtZUxv
YWRUeXBlKTsKKyAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVC
YWNrRm9yd2FyZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCksIGZyYW1lTG9hZFR5cGUpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0
aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIE5hdmlnYXRpb25Qb2xp
Y3lDaGVjazo6UmVxdWlyZSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwpAQCAtMjM3OSw3ICsyMzg0LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQ
cm94eSYgZnIKICAgICAgICAgICAgIGF1dG8gcHJvcG9zZWRQcm9jZXNzID0gcHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBhY3Rp
b24pOwogCiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0cigpICE9ICZwcm9jZXNz
KCkpIHsKLSAgICAgICAgICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU3dpdGNoaW5nIGZy
b20gcHJvY2VzcyAlaSB0byBuZXcgcHJvY2VzcyBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAn
JXMnIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5h
dmlnYXRpb24tPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAg
ICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU3dpdGNoaW5nIGZyb20gcHJvY2VzcyAlaSB0byBuZXcg
cHJvY2VzcyBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxvZ2dpbmdTdHJp
bmcoKSk7CiAKICAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5h
dmlnYXRpb24pLCBwcm9wb3NlZFByb2Nlc3MgPSBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJv
Y2VzcyhuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcykpOwpAQCAtMjM5
OCw3ICsyNDAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSYgZnIKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKIHsKLSAgICBMT0coTG9hZGlu
ZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBw
cm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmln
YXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24u
bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IHByZXZpb3VzUHJvY2VzcyA9IG1fcHJvY2Vzcy5jb3B5UmVmKCk7CiAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmF2aWdhdGVkRnJhbWVJZGVudGlmaWVySW5QcmV2
aW91c1Byb2Nlc3M7CkBAIC0yNDA2LDE2ICsyNDExLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBSCiAgICAgICAgIG5hdmlnYXRlZEZyYW1lSWRlbnRpZmllckluUHJldmlvdXNQcm9jZXNzID0g
bV9tYWluRnJhbWUtPmZyYW1lSUQoKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MucHRyKCkgIT0g
cHJvY2Vzcy5wdHIoKSk7Ci0gICAgYXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihXVEZNb3Zl
KHByb2Nlc3MpKTsKIAotICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi5iYWNrRm9yd2Fy
ZExpc3RJdGVtKCkpIHsKLSAgICAgICAgaWYgKGl0ZW0gIT0gbV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCkpCi0gICAgICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Z29Ub0l0ZW0oKml0
ZW0pOworICAgIHByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpO
YXZpZ2F0aW9uU3dhcCk7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyB0byBmaXggdGhlIEFTU0VS
VChpc1ZhbGlkKCkpIGluc2lkZSByZWF0dGFjaFRvV2ViUHJvY2Vzcywgc29tZSBvdGhlciB3YXkg
dG8gZml4IHRoaXMgaXMgbmVlZGVkLgorICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIHJlYXR0
YWNoVG9XZWJQcm9jZXNzKFdURk1vdmUocHJvY2VzcyksICZuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9u
LnRhcmdldEl0ZW0oKSA/IFJlYXR0YWNoRm9yQmFja0ZvcndhcmQ6OlllcyA6IFJlYXR0YWNoRm9y
QmFja0ZvcndhcmQ6Ok5vKTsKKworICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi50YXJn
ZXRJdGVtKCkpIHsKKyAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVt
LT51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBBU1NFUlQobmF2aWdhdGlvbi5iYWNr
Rm9yd2FyZEZyYW1lTG9hZFR5cGUoKSk7Ci0gICAgICAgIEFTU0VSVChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUoKm5hdmlnYXRpb24uYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkpKTsKKyAgICAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOworICAgICAg
ICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGl0
ZW0tPnVybCgpKTsKIAorICAgICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlz
dC0+ZmlsdGVyZWRJdGVtcyhbdGhpcywgdGFyZ2V0SXRlbSA9IGl0ZW1dKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mIGl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaXRlbS5zdXNw
ZW5kZWRQYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFnZS0+cHJvY2VzcygpID09IG1f
cHJvY2Vzcy5wdHIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07CisgICAgICAg
IH0pOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJh
Y2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0YXRlcykpLCBtX3BhZ2VJRCk7
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3
YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVtLT5pdGVtSUQoKSwgKm5hdmln
YXRpb24uYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIE5hdmlnYXRpb25Qb2xpY3lDaGVjazo6
QnlwYXNzKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGlt
ZXIoKS5zdGFydCgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMjQ1LDkgKzMyNjMs
MTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBmcmFt
ZUlEKQogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5jYW5DcmVhdGVGcmFtZShmcmFtZUlE
KSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSh0aGlzLCBmcmFt
ZUlEKTsKKyAgICBtX21haW5GcmFtZUlEID0gZnJhbWVJRDsKIAogICAgIC8vIEFkZCB0aGUgZnJh
bWUgdG8gdGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQo
ZnJhbWVJRCwgbV9tYWluRnJhbWUuZ2V0KCkpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVk
KGZyYW1lSUQsICptX21haW5GcmFtZSk7CiAKICAgICBpZiAobV9tYWluRnJhbWVDcmVhdGlvbkhh
bmRsZXIpIHsKICAgICAgICAgbV9tYWluRnJhbWVDcmVhdGlvbkhhbmRsZXIoKTsKQEAgLTMyNjUs
NyArMzI4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRf
dCBmcmFtZUlEKQogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBzdWJGcmFtZSA9IFdlYkZyYW1l
UHJveHk6OmNyZWF0ZSh0aGlzLCBmcmFtZUlEKTsKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8g
dGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJ
RCwgc3ViRnJhbWUuZ2V0KCkpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQs
ICpzdWJGcmFtZSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVXaW5kb3codWlu
dDY0X3QgZnJhbWVJRCwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIHdpbmRvd0lkZW50aWZpZXIp
CkBAIC0zMzU0LDcgKzMzNzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmln
YXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkg
JSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVy
bCAlcyIsIG1fcGFnZUlELCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQs
IG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0zNDU5LDYg
KzM0NzgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgVwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIExPRyhMb2FkaW5nLCAiKExv
YWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdl
SUQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgp
LmRhdGEoKSk7CisKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGll
bnQpOwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpOwpAQCAtMzUxMyw2ICszNTM0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9h
ZERlcGVuZGVudENhbGxiYWNrcygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50
MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlv
bmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CisgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5
ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2
NCwgbV9wYWdlSUQsIG1fbmF2aWdhdGlvbklEKTsKKyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFj
ay9Gb3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3QgaXMgbm93OiVz
IiwgbV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7CisKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCiAgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwpAQCAtMzg5MCw3ICszOTE0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXIKICAgICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0
LnVybCgpKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChvcmlnaW5hbFJlcXVlc3QudXJsKCkpOwog
ICAgIAotICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQg
PyBtYWtlUmVmKG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpIDog
bV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCkpOworICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBu
YXZpZ2F0aW9uSUQgPyBtYWtlUmVmKG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmln
YXRpb25JRCkpIDogbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlv
bihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpKTsKIAogICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpOwogICAgIG5hdmlnYXRpb24tPnNldFdhc1VzZXJJbml0aWF0ZWQoISFuYXZpZ2F0
aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CkBAIC00MjIyLDkgKzQy
NDYsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViSGl0
VGVzdFJlc3VsdERhdGEmJiBoaXRUZXN0UmVzdWx0RAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29u
bmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKLSAgICBBU1NF
UlQoJmNvbm5lY3Rpb24gPT0gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpOworICAgIEFTU0VSVF9V
TlVTRUQoY29ubmVjdGlvbiwgJmNvbm5lY3Rpb24gPT0gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkp
OwogCi0gICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNvbm5lY3Rpb25XaWxsT3Blbihj
b25uZWN0aW9uKTsKKyAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIud2ViUGFnZUVudGVy
aW5nV2ViUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2ViUHJvY2Vzc1dpbGxT
aHV0RG93bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGEzZjE0
NmIwYmE3Li4zOGYxYTZmYTY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTEyODksNyArMTI4OSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlByZWZlcmVuY2VzU3Rv
cmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCi0gICAgU3VzcGVuZGVkUGFnZVByb3h5KiBt
YXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgU3VzcGVuZGVk
UGFnZVByb3h5KiBtYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uJik7CiAgICAgdm9pZCBzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNw
ZW5kZWRQYWdlUHJveHkmKTsKIAogcHJpdmF0ZToKQEAgLTE0NDMsOCArMTQ0MywxMiBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0Q2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzKGJv
b2wgY2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzKSB7IG1fY2FuU2hvcnRDaXJj
dWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzID0gY2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVs
RXZlbnRzOyB9CiAKICAgICB2b2lkIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBh
dHRhY2hUb1Byb2Nlc3NGb3JOYXZpZ2F0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOwotICAg
IHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgYm9vbCBz
dXNwZW5kSW5PbGRQcm9jZXNzKTsKKworICAgIGVudW0gY2xhc3MgUmVhdHRhY2hGb3JCYWNrRm9y
d2FyZCB7CisgICAgICAgIFllcywKKyAgICAgICAgTm8KKyAgICB9OworICAgIHZvaWQgcmVhdHRh
Y2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9uKiwg
UmVhdHRhY2hGb3JCYWNrRm9yd2FyZCk7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBy
ZWF0dGFjaFRvV2ViUHJvY2Vzc0ZvclJlbG9hZCgpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYp
OwpAQCAtMTc3OSw2ICsxNzgzLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFp
bkZyYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fbWFpbkZyYW1lSUQ7CiAgICAg
RnVuY3Rpb248dm9pZCgpPiBtX21haW5GcmFtZUNyZWF0aW9uSGFuZGxlcjsKICAgICBGdW5jdGlv
bjx2b2lkKGNvbnN0IFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXImKT4gbV9tYWluRnJh
bWVXaW5kb3dDcmVhdGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAKaW5kZXggN2YyNTk5YTc3YWYuLmQx
ZDcwMTY2MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
TGlmZXRpbWVUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzTGlmZXRpbWVUcmFja2VyLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NM
aWZldGltZVRyYWNrZXI6OmFkZE9ic2VydmVyKFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyJiBv
YnNlcnZlcgogICAgICAgICBvYnNlcnZlci5hZGRXZWJQYWdlKG1fd2ViUGFnZVByb3h5KTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyOjpjb25uZWN0aW9uV2lsbE9wZW4oSVBD
OjpDb25uZWN0aW9uJikKK3ZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlcjo6d2ViUGFnZUVu
dGVyaW5nV2ViUHJvY2VzcygpCiB7CiAgICAgQVNTRVJUKHByb2Nlc3NJc1J1bm5pbmcoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRy
YWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNr
ZXIuaAppbmRleCBkYzg1Nzc3YzI0Zi4uZmRjNGRlZjI4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRPYnNlcnZlcihXZWJQcm9jZXNzTGlmZXRpbWVP
YnNlcnZlciYpOwogCi0gICAgdm9pZCBjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9u
Jik7CisgICAgdm9pZCB3ZWJQYWdlRW50ZXJpbmdXZWJQcm9jZXNzKCk7CiAgICAgdm9pZCB3ZWJQ
YWdlTGVhdmluZ1dlYlByb2Nlc3MoKTsKIAogICAgIHZvaWQgcGFnZVdhc0ludmFsaWRhdGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYzAxMTk4
YzNmNzguLjgwZjk2NzdmMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNlbmRpZgogI2luY2x1ZGUgIkxvZ0luaXRpYWxpemF0aW9u
LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE5OTksNiArMjAwMCwxNCBAQCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiBwYWdlLCBjbwogICAgIGlmIChuYXZpZ2F0aW9uLm9wZW5lcigpKQogICAgICAg
ICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CiAKKyAgICBpZiAoYXV0byogYmFja0ZvcndhcmRMaXN0
SXRlbSA9IG5hdmlnYXRpb24udGFyZ2V0SXRlbSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBzdXNw
ZW5kZWRQYWdlID0gYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpKSB7CisgICAg
ICAgICAgICBBU1NFUlQoc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpKTsKKyAgICAgICAgICAgIGFj
dGlvbiA9IFBvbGljeUFjdGlvbjo6U3VzcGVuZDsKKyAgICAgICAgICAgIHJldHVybiAqc3VzcGVu
ZGVkUGFnZS0+cHJvY2VzcygpOworICAgICAgICB9CisgICAgfQorCiAgICAgYXV0byB0YXJnZXRV
UkwgPSBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB1cmwgPSBV
UkwgeyBQYXJzZWRVUkxTdHJpbmcsIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07CiAgICAg
aWYgKCF1cmwuaXNWYWxpZCgpIHx8IHVybC5pc0VtcHR5KCkgfHwgdXJsLmlzQmxhbmtVUkwoKSB8
fCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCB0YXJnZXRVUkwpKQpAQCAtMjAwOCw0
ICsyMDE3LDMwIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvCiAgICAgcmV0dXJuIGNyZWF0ZU5l
d1dlYlByb2Nlc3MocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOwogfQogCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJveHkmIHBh
Z2UpCit7CisgICAgYXV0byYgdmVjdG9yID0gbV9zdXNwZW5kZWRQYWdlcy5lbnN1cmUocGFnZS5v
cmlnaW4oKSwgW10geworICAgICAgICByZXR1cm4gVmVjdG9yPFN1c3BlbmRlZFBhZ2VQcm94eSo+
IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICB2ZWN0b3IuYXBwZW5kKCZwYWdl
KTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAodmVjdG9yLnNpemUoKSA+IDUpCisgICAg
ICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTZWN1cml0eSBvcmlnaW4gJXMgbm93IGhhcyAlenUg
c3VzcGVuZGVkIHBhZ2VzICh0aGlzIHNlZW1zIHVuZXhwZWN0ZWQpIiwgcGFnZS5vcmlnaW4oKS5k
ZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZlY3Rvci5zaXplKCkpOworI2VuZGlmCit9CisK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHkoU3VzcGVu
ZGVkUGFnZVByb3h5JiBwYWdlKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3N1c3BlbmRlZFBh
Z2VzLmZpbmQocGFnZS5vcmlnaW4oKSk7CisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fc3VzcGVu
ZGVkUGFnZXMuZW5kKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpdGVyYXRvci0+dmFsdWUucmVt
b3ZlRmlyc3QoJnBhZ2UpOworICAgIEFTU0VSVChyZXN1bHQpOworCisgICAgaWYgKGl0ZXJhdG9y
LT52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlKGl0ZXJh
dG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBmODI0Zjg1MzYzZC4uNTJkNzZjOGYxYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDQ3LDYgKzQ0Nyw4IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gcHJvY2Vzc0Zvck5hdmln
YXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uJik7CisgICAgdm9pZCByZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShTdXNwZW5k
ZWRQYWdlUHJveHkmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHkoU3Vz
cGVuZGVkUGFnZVByb3h5Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxp
emUoKTsKQEAgLTY4Miw2ICs2ODQsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbj4gbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKICNlbmRp
ZgogI2VuZGlmCisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgVmVj
dG9yPFN1c3BlbmRlZFBhZ2VQcm94eSo+PiBtX3N1c3BlbmRlZFBhZ2VzOwogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDQ5M2U4OGQyMzliLi4wNzUwNTE2ZmQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zOTYsOSArMzk2LDkgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVp
bnQ2NF90IHBhZ2VJRCkKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c3VzcGVuZFdlYlBhZ2VQcm94eShXZWJQYWdl
UHJveHkmIHdlYlBhZ2UpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3VzcGVuZFdlYlBhZ2VQcm94
eShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbikKIHsK
LSAgICBpZiAoYXV0byogc3VzcGVuZGVkUGFnZSA9IHdlYlBhZ2UubWF5YmVDcmVhdGVTdXNwZW5k
ZWRQYWdlKCp0aGlzKSkgeworICAgIGlmIChhdXRvKiBzdXNwZW5kZWRQYWdlID0gd2ViUGFnZS5t
YXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoKnRoaXMsIG5hdmlnYXRpb24pKSB7CiAgICAgICAgIExP
RyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQcm9jZXNzUHJveHkgcGlkICVpIGFkZGVkIHN1c3BlbmRl
ZCBwYWdlICVzIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0
cmluZygpKTsKICAgICAgICAgbV9zdXNwZW5kZWRQYWdlTWFwLnNldCh3ZWJQYWdlLnBhZ2VJRCgp
LCBzdXNwZW5kZWRQYWdlKTsKICAgICB9CkBAIC01NDMsOCArNTQzLDE0IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUmIGl0ZW1TdGF0ZSkKIHsKLSAgICBpZiAoYXV0byogaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06Oml0ZW1Gb3JJRChpdGVtU3RhdGUuaWRlbnRpZmllcikpCi0gICAgICAgIGl0ZW0tPnNl
dFBhZ2VTdGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKKyAgICBpZiAoYXV0byogaXRlbSA9IFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChpdGVtU3RhdGUuaWRlbnRpZmllcikpIHsK
KyAgICAgICAgLy8gVGhpcyB1cGRhdGUgY291bGQgYmUgY29taW5nIGZyb20gYSB3ZWIgcHJvY2Vz
cyB0aGF0IGlzIG5vdCB0aGUgYWN0aXZlIHByb2Nlc3MgZm9yCisgICAgICAgIC8vIHRoZSBiYWNr
L2ZvcndhcmQgaXRlbXMgcGFnZS4KKyAgICAgICAgLy8gZS5nLiBUaGUgb2xkIHdlYiBwcm9jZXNz
IGlzIG5hdmlnYXRpbmcgdG8gYWJvdXQ6YmxhbmsgZm9yIHN1c3BlbnNpb24uCisgICAgICAgIC8v
IFdlIGlnbm9yZSB0aGVzZSB1cGRhdGVzLgorICAgICAgICBpZiAobV9wYWdlTWFwLmNvbnRhaW5z
KGl0ZW0tPnBhZ2VJRCgpKSkKKyAgICAgICAgICAgIGl0ZW0tPnNldFBhZ2VTdGF0ZShpdGVtU3Rh
dGUucGFnZVN0YXRlKTsKKyAgICB9CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKQEAgLTc2MCwxMCArNzY2LDkgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNhbkNyZWF0ZUZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkZyYW1lUHJveHlNYXA6
OmlzVmFsaWRLZXkoZnJhbWVJRCkgJiYgIW1fZnJhbWVNYXAuY29udGFpbnMoZnJhbWVJRCk7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpmcmFtZUNyZWF0ZWQodWludDY0X3QgZnJhbWVJRCwg
V2ViRnJhbWVQcm94eSogZnJhbWVQcm94eSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpmcmFtZUNy
ZWF0ZWQodWludDY0X3QgZnJhbWVJRCwgV2ViRnJhbWVQcm94eSYgZnJhbWVQcm94eSkKIHsKLSAg
ICBBU1NFUlQoY2FuQ3JlYXRlRnJhbWUoZnJhbWVJRCkpOwotICAgIG1fZnJhbWVNYXAuc2V0KGZy
YW1lSUQsIGZyYW1lUHJveHkpOworICAgIG1fZnJhbWVNYXAuc2V0KGZyYW1lSUQsICZmcmFtZVBy
b3h5KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lGcmFtZSh1aW50NjRf
dCBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRl
eCBlZDEwZjkzZGRiYS4uNjQ1Yzk4MTFmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgQVBJIHsKK2NsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbjsKIH0KIApAQCAtMTMwLDcgKzEzMSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkZyYW1l
UHJveHkqIHdlYkZyYW1lKHVpbnQ2NF90KSBjb25zdDsKICAgICBib29sIGNhbkNyZWF0ZUZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQpIGNvbnN0OwotICAgIHZvaWQgZnJhbWVDcmVhdGVkKHVpbnQ2NF90
LCBXZWJGcmFtZVByb3h5Kik7CisgICAgdm9pZCBmcmFtZUNyZWF0ZWQodWludDY0X3QsIFdlYkZy
YW1lUHJveHkmKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZXNGcm9tUGFnZShXZWJQYWdlUHJv
eHkqKTsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUuCiAgICAgc2l6ZV90IGZyYW1lQ291bnRJblBh
Z2UoV2ViUGFnZVByb3h5KikgY29uc3Q7IC8vIEluY2x1ZGluZyBtYWluIGZyYW1lLgogCkBAIC0y
MDQsNyArMjA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2Fk
KCkgeyBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOyB9CiAgICAgYm9v
bCBoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXND
b21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzOyB9CiAKLSAgICB2b2lkIHN1c3BlbmRXZWJQYWdl
UHJveHkoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCBzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBh
Z2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiYpOwogICAgIHZvaWQgc3VzcGVuZGVkUGFnZVdhc0Rl
c3Ryb3llZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKIAogI2lmIEVOQUJMRShFWFRSQV9aT09NX01P
REUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApp
bmRleCBkYjFjMDFjOGUzMC4uMTZlYjQ0MDIxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTUxLDYgKzE1MSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpc3BsYXlXYXNSZWZyZXNoZWQoKTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2
b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkgeyB9OworCiBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0Fy
ZWEoRHJhd2luZ0FyZWFUeXBlLCBXZWJQYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApp
bmRleCBlOGEzY2I3ZTUxNS4uYzg2ODhhYWE4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eS5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNl
c3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZUNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTU0LDExICs1NSwxMCBAQCBzdGF0aWMg
SURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1NYXAoKQogICAgIHJldHVybiBtYXA7
CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNz
KGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVt
PiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0
ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRl
RXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKIHsKICAgICAvLyBUaGlzIGl0ZW0v
aXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91ciBtYXAuCi0gICAgQVNT
RVJUKCFpZFRvSGlzdG9yeUl0ZW1NYXAoKS5jb250YWlucyhpdGVtSUQpKTsKLQorICAgIEFTU0VS
VF9VTlVTRUQob3ZlcndyaXRlRXhpc3RpbmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0g
T3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRh
aW5zKGl0ZW1JRCkpOwogICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0u
cHRyKCkpOwogfQogCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiAgICAgYXV0byByZXN1bHQgPSBp
ZFRvSGlzdG9yeUl0ZW1NYXAoKS5hZGQoaXRlbS0+aWRlbnRpZmllcigpLCBpdGVtLnB0cigpKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCisgICAgTE9H
KEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgV2ViUHJvY2VzcyBwaWQgJWkgc2V0dGluZyBp
dGVtICVwIGZvciBpZCAlcyB3aXRoIHVybCAlcyIsIGdldHBpZCgpLCBpdGVtLnB0cigpLCBpdGVt
LT5pZGVudGlmaWVyKCkubG9nU3RyaW5nKCksIGl0ZW0tPnVybFN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZEFkZEl0ZW0odG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUoaXRlbS5nZXQoKSkpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zvcndh
cmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmgKaW5kZXggY2FkNzBlODYwMjkuLmM2ZmU0Mzc4YzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmgKQEAgLTQ0LDggKzQ0LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlSXRlbShjb25zdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAKLSAgICB2b2lkIGFkZEl0ZW1Gcm9tVUlQ
cm9jZXNzKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBSZWY8V2Vi
Q29yZTo6SGlzdG9yeUl0ZW0+JiYsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgCisgICAgZW51bSBj
bGFzcyBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0geworICAgICAgICBZZXMsCisgICAgICAgIE5vCisg
ICAgfTsKKyAgICB2b2lkIGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OkJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXImLCBSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYsIHVpbnQ2
NF90IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKKwogICAgIHZvaWQgY2xlYXIoKTsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggMjMzYTJlZTZhMzkuLmRhNGMxZjQ3NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIFdlYlBhZ2U6
OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICBtX3VzZXJBZ2VudCA9IHBhcmFtZXRlcnMudXNlckFnZW50OwogICAgIAog
ICAgIGlmICghcGFyYW1ldGVycy5pdGVtU3RhdGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdG9y
ZVNlc3Npb25JbnRlcm5hbChwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMsIFdhc1Jlc3RvcmVkQnlBUElS
ZXF1ZXN0OjpObyk7CisgICAgICAgIHJlc3RvcmVTZXNzaW9uSW50ZXJuYWwocGFyYW1ldGVycy5p
dGVtU3RhdGVzLCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdDo6Tm8sIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0ZW06Ok5vKTsKIAogICAgIGlmIChwYXJhbWV0ZXJz
LnNlc3Npb25JRC5pc1ZhbGlkKCkpCiAgICAgICAgIHNldFNlc3Npb25JRChwYXJhbWV0ZXJzLnNl
c3Npb25JRCk7CkBAIC02NDEsNiArNjQxLDkgQEAgdm9pZCBXZWJQYWdlOjplbmFibGVFbnVtZXJh
dGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKCkKIAogdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxpemVX
ZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogeworICAgIEFT
U0VSVChtX2RyYXdpbmdBcmVhKTsKKyAgICBtX2RyYXdpbmdBcmVhLT5hdHRhY2hEcmF3aW5nQXJl
YSgpOworCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5U3Rh
dGUpCiAgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBm
YWxzZSwgVmVjdG9yPENhbGxiYWNrSUQ+KCkpOwogICAgIGlmIChtX2xheWVySG9zdGluZ01vZGUg
IT0gcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKQpAQCAtMTM5OSw3ICsxNDAyLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgQmFja0ZvcndhcmRJdGVtSWQKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcywgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBu
YXZpZ2F0aW5nIHRvIGJhY2svZm9yd2FyZCBVUkwgJXMiLCBtX3BhZ2VJRCwgaXRlbS0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJJbiBXZWJQcm9jZXNz
IHBpZCAlaSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJhY2svZm9yd2Fy
ZCBVUkwgJXMiLCBnZXRwaWQoKSwgbV9wYWdlSUQsIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwogICAgIG1f
cGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAgLTI0ODMsMTggKzI0ODYsMjMg
QEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWUKICAgICBleGVjdXRlRWRpdGluZ0NvbW1hbmQoY29t
bWFuZE5hbWUsIGFyZ3VtZW50KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbklu
dGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiBpdGVtU3RhdGVz
LCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCByZXN0b3JlZEJ5QVBJUmVxdWVzdCkKK3ZvaWQgV2Vi
UGFnZTo6cmVzdG9yZVNlc3Npb25JbnRlcm5hbChjb25zdCBWZWN0b3I8QmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlPiYgaXRlbVN0YXRlcywgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgcmVzdG9yZWRC
eUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0
ZW0gb3ZlcndyaXRlKQogewogICAgIGZvciAoY29uc3QgYXV0byYgaXRlbVN0YXRlIDogaXRlbVN0
YXRlcykgewogICAgICAgICBhdXRvIGhpc3RvcnlJdGVtID0gdG9IaXN0b3J5SXRlbShpdGVtU3Rh
dGUpOwogICAgICAgICBoaXN0b3J5SXRlbS0+c2V0V2FzUmVzdG9yZWRGcm9tU2Vzc2lvbihyZXN0
b3JlZEJ5QVBJUmVxdWVzdCA9PSBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdDo6WWVzKTsKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViQmFja0ZvcndhcmRMaXN0UHJveHkqPihjb3JlUGFnZSgpLT5iYWNr
Rm9yd2FyZCgpLmNsaWVudCgpKS0+YWRkSXRlbUZyb21VSVByb2Nlc3MoaXRlbVN0YXRlLmlkZW50
aWZpZXIsIFdURk1vdmUoaGlzdG9yeUl0ZW0pLCBtX3BhZ2VJRCk7CisgICAgICAgIHN0YXRpY19j
YXN0PFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Kj4oY29yZVBhZ2UoKS0+YmFja0ZvcndhcmQoKS5j
bGllbnQoKSktPmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGl0ZW1TdGF0ZS5pZGVudGlmaWVyLCBXVEZN
b3ZlKGhpc3RvcnlJdGVtKSwgbV9wYWdlSUQsIG92ZXJ3cml0ZSk7CiAgICAgfQogfQogCiB2b2lk
IFdlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGU+JiBpdGVtU3RhdGVzKQogewotICAgIHJlc3RvcmVTZXNzaW9uSW50ZXJuYWwoaXRlbVN0
YXRlcywgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3Q6Olllcyk7CisgICAgcmVzdG9yZVNlc3Npb25J
bnRlcm5hbChpdGVtU3RhdGVzLCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdDo6WWVzLCBXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6T3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpObyk7Cit9CisKK3ZvaWQg
V2ViUGFnZTo6dXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goY29uc3QgVmVjdG9yPFdl
YktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYgaXRlbVN0YXRlcykKK3sKKyAgICByZXN0
b3JlU2Vzc2lvbkludGVybmFsKGl0ZW1TdGF0ZXMsIFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0OjpO
bywgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Ok92ZXJ3cml0ZUV4aXN0aW5nSXRlbTo6WWVzKTsK
IH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzNjNjBmMjcxZTUuLjdhYmVhYWFkZDI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5o
IgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+
CkBAIC0xMTg1LDkgKzExODYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRVUkxJbkZyYW1l
KFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIGVudW0gY2xhc3MgV2Fz
UmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07Ci0gICAgdm9pZCByZXN0b3JlU2Vzc2lv
bkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiwgV2FzUmVz
dG9yZWRCeUFQSVJlcXVlc3QpOworICAgIHZvaWQgcmVzdG9yZVNlc3Npb25JbnRlcm5hbChjb25z
dCBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYsIFdhc1Jlc3RvcmVkQnlBUElSZXF1
ZXN0LCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6T3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKICAg
ICB2b2lkIHJlc3RvcmVTZXNzaW9uKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGU+Jik7CiAgICAgdm9pZCBkaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgV2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOworICAgIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRM
aXN0Rm9yUmVhdHRhY2goY29uc3QgVmVjdG9yPFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlPiYpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdm9pZCBzZXRBbGxv
d3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmI5MDIxZmE3MTQuLmY5YTYx
Y2Q4OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE0OCw2ICsxNDgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdG9wTG9hZGluZ0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQp
CiAgICAgCiAgICAgUmVzdG9yZVNlc3Npb24oVmVjdG9yPFdlYktpdDo6QmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlPiBpdGVtU3RhdGVzKQorICAgIFVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0
YWNoKFZlY3RvcjxXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gaXRlbVN0YXRlcykK
IAogICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA2YWVmYTBjZmY1MC4uNGZmOTk0MzAxNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0xMDMsNiArMTAzLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCkg
b3ZlcnJpZGU7CiAKKyAgICB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkgb3ZlcnJpZGU7CisKICAg
ICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBv
aW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQg
YXBwbHlUcmFuc2llbnRab29tVG9QYWdlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4
IDczYmEzMjRiMGZkLi5mMjExZWZkY2MwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbQpAQCAtOTQsOSArOTQsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwog
ICAgIHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKICAgICBzZXRDb2xvclNwYWNlKHBhcmFt
ZXRlcnMuY29sb3JTcGFjZSk7CiAKLSAgICBMYXllclRyZWVDb250ZXh0IGxheWVyVHJlZUNvbnRl
eHQ7Ci0gICAgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX2xheWVySG9zdGluZ0NvbnRl
eHQtPmNvbnRleHRJRCgpOwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJl
YVByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRl
eHQpKTsKKyAgICBhdHRhY2hEcmF3aW5nQXJlYSgpOwogfQogCiBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6flRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKCkKQEAgLTEwNCw2ICsx
MDIsMTQgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6On5UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYSgpCiAgICAgbV9sYXllckZsdXNoU2NoZWR1bGVyLmludmFsaWRhdGUoKTsK
IH0KIAorCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3aW5n
QXJlYSgpCit7CisgICAgTGF5ZXJUcmVlQ29udGV4dCBsYXllclRyZWVDb250ZXh0OworICAgIGxh
eWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9sYXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0
SUQoKTsKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7Cit9CisK
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheSgpCiB7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YTVmNzBkNzNjMTUuLmI5ODNmNmMwMjYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMDQtMTkgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgYmFjayBmb3J3YXJkIGNh
Y2hlIHdvcmsgd2l0aCBwcm9jZXNzIHN3YXBwaW5nLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Mzg2NzY2MDQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0
NzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
OgorCiAyMDE4LTA0LTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dW0VXU10gQnVpbGQgYm90IHNob3VsZCBjbGVhbiB1c2VyIHRl
bXAgZGlyZWN0b3J5IGVhY2ggdGltZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmlu
ZGV4IGIxZjFhNzk1Yjg2Li43ZDg2NGZlNmFjMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uLm1tCkBAIC0zNDksMTcgKzM0OSwxMyBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrKQogCiAg
ICAgRVhQRUNUX0VRKFtyZWNlaXZlZE1lc3NhZ2VzIGNvdW50XSwgMnUpOwogICAgIEVYUEVDVF9U
UlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0cmluZzpAIlBhZ2VTaG93
IGNhbGxlZC4gUGVyc2lzdGVkOiBmYWxzZSwgYW5kIHdpbmRvdy5oaXN0b3J5LnN0YXRlIGlzOiBu
dWxsIl0pOworICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdIGlzRXF1
YWxUb1N0cmluZzpAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiB0cnVlLCBhbmQgd2luZG93
Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCJdKTsKIAotICAgIC8vIEZJWE1FOiBXZSdk
IGxpa2UgdG8gZ2V0IHRoZSBwYWdlIHJlc3RvcmluZyBmcm9tIHRoZSBwYWdlIGNhY2hlIGxpa2Ug
YmVmb3JlIHByb2Nlc3Mgc3dhcHBpbmcsIHdoaWNoIHdpbGwgbWFrZSBQZXJzaXN0ZWQgYmUgInRy
dWUiCi0gICAgLy8gRm9yIG5vdyBpdCdzIGV4cGVjdGVkIHRvIGJlIGZhbHNlIgotICAgIEVYUEVD
VF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdIGlzRXF1YWxUb1N0cmluZzpAIlBhZ2VT
aG93IGNhbGxlZC4gUGVyc2lzdGVkOiBmYWxzZSwgYW5kIHdpbmRvdy5oaXN0b3J5LnN0YXRlIGlz
OiBvbmxvYWRDYWxsZWQiXSk7CisgICAgRVhQRUNUX0VRKDJ1LCBzZWVuUElEcy5zaXplKCkpOwog
CiAgICAgRVhQRUNUX0ZBTFNFKHBpZDEgPT0gcGlkMik7CiAgICAgRVhQRUNUX0ZBTFNFKHBpZDIg
PT0gcGlkMyk7Ci0KLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIGxpa2UgdG8gZ2V0IHByb2Nl
c3MgY2FjaGluZyBoYXBwZW5pbmcgc3VjaCB0aGF0IHBpZDEgYW5kIHBpZDMgYXJlIGVxdWFsLgot
ICAgIC8vIEJ1dCBmb3Igbm93IHRoZXkgc2hvdWxkIG5vdCBiZS4KLSAgICBFWFBFQ1RfRkFMU0Uo
cGlkMSA9PSBwaWQzKTsKKyAgICBFWFBFQ1RfVFJVRShwaWQxID09IHBpZDMpOwogfQogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtNzkxLDQgKzc4Nyw4NCBAQCBURVNUKFByb2Nlc3NTd2FwLCBPbmVQ
cmV2aW91c1Byb2Nlc3NSZW1haW5zKQogICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93
ZWJQcm9jZXNzQ291bnRdKTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIqIHBhZ2VDYWNoZTFCeXRl
cyA9IFIiUFNPTlJFU09VUkNFKAorPHNjcmlwdD4KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdw
YWdlc2hvdycsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkKKyAg
ICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucHNvbi5wb3N0TWVzc2FnZSgiV2Fz
IHBlcnNpc3RlZCIpOworfSk7Cis8L3NjcmlwdD4KKylQU09OUkVTT1VSQ0UiOworCitURVNUKFBy
b2Nlc3NTd2FwLCBQYWdlQ2FjaGUxKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29s
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0
aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIg
PSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFtoYW5kbGVyIGFkZE1h
cHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjE6Ly9ob3N0L21haW4uaHRtbCIgdG9EYXRhOnBhZ2VD
YWNoZTFCeXRlc107CisgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29u
MjovL2hvc3QvbWFpbi5odG1sIiB0b0RhdGE6cGFnZUNhY2hlMUJ5dGVzXTsKKyAgICBbd2ViVmll
d0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNj
aGVtZTpAIlBTT04xIl07CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQU09OMiJdOworCisgICAgYXV0byBt
ZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQU09OTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBbW3dlYlZpZXdDb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInBzb24iXTsK
KworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5h
dmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNv
bjE6Ly9ob3N0L21haW4uaHRtbCJdXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVl
c3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgYXV0byBwaWRBZnRlckxvYWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVu
dGlmaWVyXTsKKworICAgIEVYUEVDVF9FUSgxdSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291
bnRdKTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAicHNvbjI6Ly9ob3N0L21haW4uaHRtbCJdXTsKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRBZnRlckxvYWQyID0gW3dl
YlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nl
c3NQb29sIF93ZWJQcm9jZXNzQ291bnRdKTsKKyAgICBFWFBFQ1RfTkUocGlkQWZ0ZXJMb2FkMSwg
cGlkQWZ0ZXJMb2FkMik7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSBm
YWxzZTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBm
YWxzZTsKKworICAgIGF1dG8gcGlkQWZ0ZXJMb2FkMyA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl07CisKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0Nv
dW50XSk7CisgICAgRVhQRUNUX0VRKHBpZEFmdGVyTG9hZDEsIHBpZEFmdGVyTG9hZDMpOworICAg
IEVYUEVDVF9FUSgxdSwgW3JlY2VpdmVkTWVzc2FnZXMgY291bnRdKTsKKyAgICBFWFBFQ1RfVFJV
RShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJXYXMgcGVyc2lz
dGVkIiBdKTsKKyAgICBFWFBFQ1RfRVEoMnUsIHNlZW5QSURzLnNpemUoKSk7CisKKyAgICBbd2Vi
VmlldyBnb0ZvcndhcmRdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRN
ZXNzYWdlKTsKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gcGlkQWZ0
ZXJMb2FkNCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICBFWFBFQ1Rf
RVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50XSk7CisgICAgRVhQRUNUX0VRKHBp
ZEFmdGVyTG9hZDIsIHBpZEFmdGVyTG9hZDQpOworICAgIEVYUEVDVF9FUSgydSwgW3JlY2VpdmVk
TWVzc2FnZXMgY291bnRdKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQo
KVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJXYXMgcGVyc2lzdGVkIiBdKTsKKyAgICBFWFBFQ1RfRVEo
MnUsIHNlZW5QSURzLnNpemUoKSk7Cit9CisKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338359</attachid>
            <date>2018-04-19 14:45:12 -0700</date>
            <delta_ts>2018-04-19 16:57:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>73541</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxOWJjMjQ4Zjg0Mi4uNjVlYzhlMTFkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOC0wNC0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBiYWNrIGZvcndhcmQgY2FjaGUgd29yayB3aXRoIHByb2Nlc3Mgc3dh
cHBpbmcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODY3NjYwND4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3OTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aERv
Y3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWxvYWRXaXRo
T3ZlcnJpZGVFbmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW0pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorCiAyMDE4LTA0LTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3aGVuIFdL
X0FMVEVSTkFURV9GUkFNRVdPUktTX0RJUiBpcyBzZXQgdG8gbm9uLWVtcHR5IHZhbHVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA4Nzk5ZGE2ZTAwZS4uOGEwNzE1MjJm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQxNiw3ICsxNDE2
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikK
ICAgICAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9jdW1lbnRMb2FkZXItPm92
ZXJyaWRlRW5jb2RpbmcoKSk7CiAKLSAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5w
dHIoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRl
ci5wdHIoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5h
dmlnYXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBuZXdEb2N1bWVu
dExvYWRlcikKQEAgLTE0NTUsMTAgKzE0NTUsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChE
b2N1bWVudExvYWRlciogbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHR5cGUgPSBGcmFtZUxv
YWRUeXBlOjpSZWxvYWQ7CiAgICAgfQogCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihuZXdE
b2N1bWVudExvYWRlciwgdHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMs
IFtdIHsgfSk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihuZXdEb2N1bWVudExvYWRlciwg
dHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5hdmlnYXRpb25Qb2xp
Y3lDaGVjazo6UmVxdWlyZSwgW10geyB9KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdp
dGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHR5
cGUsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVy
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdHlwZSwgRm9ybVN0YXRlKiBm
b3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwsIE5hdmlnYXRpb25Qb2xpY3lDaGVjaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFJldGFpbiBiZWNhdXNlIGRpc3BhdGNo
QmVmb3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBpdC4KICAg
ICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNjQzLDcgKzE2NDMsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVu
Y29kaW5nKQogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIAot
ICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWQsIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBbXSB7IH0pOworICAg
IGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxv
YWQsIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOYXZpZ2F0aW9uUG9saWN5
Q2hlY2s6OlJlcXVpcmUsIFtdIHsgfSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChP
cHRpb25TZXQ8UmVsb2FkT3B0aW9uPiBvcHRpb25zKQpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiAg
ICAgICAgIHJldHVybiBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7CiAgICAgfTsKICAgICAKLSAgICBs
b2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZnJhbWVMb2FkVHlwZUZvclJlbG9h
ZE9wdGlvbnMob3B0aW9ucyksIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBb
XSB7IH0pOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBmcmFtZUxv
YWRUeXBlRm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMOjpZZXMsIE5hdmlnYXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgW10geyB9KTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Q
b2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kpCkBAIC0xODU3LDkgKzE4NTcsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIGlmIChtX2xvYWRp
bmdGcm9tQ2FjaGVkUGFnZSAmJiBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAg
IGNhY2hlZFBhZ2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UoKmhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKSwgbV9mcmFtZS5wYWdlKCkpOwogCi0gICAgTE9HKFBhZ2VDYWNoZSwgIldl
YkNvcmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHBy
ZXZpb3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVzJyIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5h
bWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3Jl
TG9hZGluZyAlczogQWJvdXQgdG8gY29tbWl0IHByb3Zpc2lvbmFsIGxvYWQgZnJvbSBwcmV2aW91
cyBVUkwgJyVzJyB0byBuZXcgVVJMICclcycgd2l0aCBjYWNoZWQgcGFnZSAlcCIsIG1fZnJhbWUu
dHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICBtX2Zy
YW1lLmRvY3VtZW50KCkgPyBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIiwKLSAgICAgICAgcGRsID8gcGRs
LT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDog
IjxubyBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iKTsKKyAgICAgICAgcGRsID8gcGRsLT51
cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxu
byBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iLCBjYWNoZWRQYWdlLmdldCgpKTsKIAogICAg
IHdpbGxUcmFuc2l0aW9uVG9Db21taXR0ZWQoKTsKIApAQCAtMzQ1OSwxMiArMzQ1OSwxNCBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBp
dGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogCiAgICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9
IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duOwogCisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4g
Y3VycmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3lHdWFyZChtX2N1cnJlbnRMb2Fk
U2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5LCBuYXZpZ2F0aW9uUG9saWN5Q2hlY2sgIT0gTmF2
aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOworCiAgICAgaWYgKENhY2hlZFBhZ2UqIGNhY2hl
ZFBhZ2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLmdldChpdGVtLCBtX2ZyYW1lLnBhZ2UoKSkp
IHsKICAgICAgICAgYXV0byBkb2N1bWVudExvYWRlciA9IGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9h
ZGVyKCk7CiAgICAgICAgIG1fY2xpZW50LnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKCpkb2N1
bWVudExvYWRlcik7CiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9u
KHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSwgaW5pdGlh
dGVkQnlNYWluRnJhbWUsIGxvYWRUeXBlLCBmYWxzZSB9KTsKICAgICAgICAgZG9jdW1lbnRMb2Fk
ZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7Ci0gICAgICAgIGxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIsIGxvYWRUeXBlLCAwLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgW10geyB9KTsKKyAgICAgICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihkb2N1bWVudExvYWRlciwgbG9hZFR5cGUsIDAsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBuYXZpZ2F0aW9uUG9saWN5Q2hlY2ssIFtdIHsgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTM1NTAsOCArMzU1Miw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5
cGUgbG9hCiAgICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdEZv
ck9yaWdpbmFsVVJMLCBpbml0aWF0ZWRCeU1haW5GcmFtZSwgbG9hZFR5cGUsIGlzRm9ybVN1Ym1p
c3Npb24sIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH07CiAgICAgfQogCi0g
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY3VycmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xp
Y3lHdWFyZChtX2N1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5LCBuYXZpZ2F0
aW9uUG9saWN5Q2hlY2sgIT0gTmF2aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOwotCiAgICAg
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5v
LCBsb2FkVHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIFtdIHsgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZDAwNzM1NDIyNGEuLjUz
ZmFhNDkzZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzYzLDcgKzM2
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qm
JiwgRXZlbnQqKTsKIAotICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExv
YWRlciosIEZyYW1lTG9hZFR5cGUsIEZvcm1TdGF0ZSosIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2FsbHMgY29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CisgICAgdm9pZCBsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiwgRnJhbWVMb2FkVHlwZSwgRm9ybVN0YXRlKiwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2ssIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7IC8vIENhbGxzIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeQogICAg
IHZvaWQgbG9hZChEb2N1bWVudExvYWRlciopOyAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9h
ZGVyCiAKICAgICB2b2lkIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgTG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5
cGUsIEZvcm1TdGF0ZSosIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExvYWRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA3MDRkYTM2Zjk1Ny4uYjkzMDE4NDkxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIzIEBA
CisyMDE4LTA0LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBNYWtlIGJhY2sgZm9yd2FyZCBjYWNoZSB3b3JrIHdpdGggcHJvY2VzcyBzd2FwcGluZy4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4Njc2NjA0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDc5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIHByZXZpb3VzbHkgc2F2ZWQgb2xkIHByb2Nlc3NlcyBpbiAi
U3VzcGVuZGVkUGFnZVByb3h5IiBvYmplY3RzLgorICAgICAgICBOb3cgd2UgcmV1c2UgdGhlbSB3
aGVuIGdvaW5nIGJhY2sgb3IgZm9yd2FyZC4KKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcu
aDoKKworICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnN1c3BlbmRlZFBhZ2UgY29uc3QpOgorCisgICAg
ICAgIFRlYWNoIE5hdmlnYXRpb24gb2JqZWN0cyB0aGVpciBzb3VyY2UgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbXM6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6TmF2aWdhdGlvbik6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb246OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbi5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjp0YXJnZXRJdGVtIGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2
aWdhdGlvbjo6ZnJvbUl0ZW0gY29uc3QpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpiYWNr
Rm9yd2FyZExpc3RJdGVtKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6U3VzcGVuZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlN1c3Bl
bmRlZFBhZ2VQcm94eTo6b3JpZ2luIGNvbnN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6
OldlYkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dDo6fldlYkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdDo6cGFnZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
YWRkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUFsbEl0ZW1zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6ZmlsdGVyZWRJdGVtcyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbVN0YXRlcyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6bG9nZ2luZ1N0cmluZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25TdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0
ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmF2
aWdhdGlvblN0YXRlOjpjcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXliZUNyZWF0ZVN1
c3BlbmRlZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9X
ZWJQcm9jZXNzV2l0aEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRmlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29ubmVjdGlv
bldpbGxPcGVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphdHRhY2hUb1Byb2Nl
c3NGb3JOYXZpZ2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NMaWZldGltZVRyYWNrZXI6OndlYlBhZ2VF
bnRlcmluZ1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzTGlmZXRpbWVU
cmFja2VyOjpjb25uZWN0aW9uV2lsbE9wZW4pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0Zvck5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0
ZXJTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
dW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmZyYW1lQ3JlYXRlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjph
dHRhY2hEcmF3aW5nQXJlYSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fY3JlZGVudGlhbHNNZXNzZW5nZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6Cisg
ICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphdHRhY2hEcmF3
aW5nQXJlYSk6IEZvcmNlIGEgcmVhdHRhY2htZW50IG9mIHRoZSBkcmF3aW5nCisgICAgICAgICAg
YXJlYSBmcm9tIGEgcmVzdW1lZCBXZWJQcm9jZXNzIHRvIHRoZSBVSVByb2Nlc3MgKHRvIG1ha2Ug
dGhlIHBhZ2UgY2FjaGUgd29yaykKKwogMjAxOC0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBXaW5kb3dQcm94eUNvbnRyb2xsZXIgdG8gV2lu
ZG93UHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggNDU1NjZhYzY2NTYuLjdhNjY4
ZmE4N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNDAsNiArNDAsNyBAQCBleHRl
cm4gIkMiIHsKICNlbmRpZgogCiAjZGVmaW5lIFdFQktJVDJfTE9HX0NIQU5ORUxTKE0pIFwKKyAg
ICBNKEJhY2tGb3J3YXJkKSBcCiAgICAgTShDYWNoZVN0b3JhZ2UpIFwKICAgICBNKENvbnRleHRN
ZW51KSBcCiAgICAgTShEcmFnQW5kRHJvcCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBhNzM4YzdkYTMzYi4uMzJlN2M3ODBmNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgog
CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTExMSw5ICsxMTIsMTcgQEAgYm9v
bCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNhbWVEb2N1bWVudChjb25zdCBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtJgogICAgIHJldHVybiBkb2N1bWVudFRyZWVzQXJlRXF1YWwobWFp
bkZyYW1lU3RhdGUsIG90aGVyTWFpbkZyYW1lU3RhdGUpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQor
dm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBh
Z2VQcm94eSogcGFnZSkKIHsKLSAgICBtX3N1c3BlbmRlZFBhZ2UgPSAmcGFnZTsKKyAgICBBU1NF
UlQoIW1fc3VzcGVuZGVkUGFnZSB8fCBwYWdlID09IG51bGxwdHIpOworICAgIG1fc3VzcGVuZGVk
UGFnZSA9IHBhZ2U7CiB9CiAKKyNpZiAhTE9HX0RJU0FCTEVECitjb25zdCBjaGFyKiBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOjpsb2dnaW5nU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gZGVidWdTdHJp
bmcoIkJhY2svZm9yd2FyZCBpdGVtIElEICIsIGl0ZW1JRCgpLmxvZ1N0cmluZygpLCAiLCBvcmln
aW5hbCBVUkwgIiwgb3JpZ2luYWxVUkwoKSwgIiwgY3VycmVudCBVUkwgIiwgdXJsKCksIG1fc3Vz
cGVuZGVkUGFnZSA/ICIoaGFzIGEgc3VzcGVuZGVkIHBhZ2UpIiA6ICIiKTsKK30KKyNlbmRpZiAv
LyAhTE9HX0RJU0FCTEVECisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDNjMWNjMjk5YjFiLi5iYTc0
NmJlZTk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaApAQCAtNjgsNyArNjgsMTIgQEAgcHVibGljOgogICAgIFZpZXdTbmFwc2hvdCogc25hcHNo
b3QoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0ZS5zbmFwc2hvdC5nZXQoKTsgfQogICAgIHZv
aWQgc2V0U25hcHNob3QoUmVmUHRyPFZpZXdTbmFwc2hvdD4mJiBzbmFwc2hvdCkgeyBtX2l0ZW1T
dGF0ZS5zbmFwc2hvdCA9IFdURk1vdmUoc25hcHNob3QpOyB9CiAjZW5kaWYKLSAgICB2b2lkIHNl
dFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5Jik7CisgICAgdm9pZCBzZXRTdXNwZW5k
ZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSopOworICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3Vz
cGVuZGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VzcGVuZGVkUGFnZTsgfQorCisjaWYgIUxP
R19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKTsKKyNlbmRpZgogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKaW5kZXggYjk1NzUzYzY3NTAuLjUzZGRiYjZiZmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvblN0YXRlLmgiCisjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0
aWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTM5LDE5ICs0MCwyMSBAQCBOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRp
b25TdGF0ZSYgc3RhdGUpCiB7CiB9CiAKLU5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdh
dGlvblN0YXRlJiBzdGF0ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK05h
dmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0
ZW0pCiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQog
ICAgICwgbV9vcmlnaW5hbFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKICAgICAsIG1fY3VycmVu
dFJlcXVlc3QobV9vcmlnaW5hbFJlcXVlc3QpCisgICAgLCBtX2Zyb21JdGVtKGZyb21JdGVtKQog
ewogICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobV9vcmlnaW5hbFJlcXVlc3QudXJsKCkpOwog
fQogCi1OYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUsIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRGcmFt
ZUxvYWRUeXBlKQorTmF2aWdhdGlvbjo6TmF2aWdhdGlvbihXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0
YXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiB0YXJnZXRJdGVtLCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiBmcm9tSXRlbSwgRnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUp
CiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQotICAg
ICwgbV9vcmlnaW5hbFJlcXVlc3QoaXRlbS51cmwoKSkKKyAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0
KHRhcmdldEl0ZW0udXJsKCkpCiAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KG1fb3JpZ2luYWxSZXF1
ZXN0KQotICAgICwgbV9iYWNrRm9yd2FyZExpc3RJdGVtKCZpdGVtKQorICAgICwgbV90YXJnZXRJ
dGVtKCZ0YXJnZXRJdGVtKQorICAgICwgbV9mcm9tSXRlbShmcm9tSXRlbSkKICAgICAsIG1fYmFj
a0ZvcndhcmRGcmFtZUxvYWRUeXBlKGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkKIHsKIH0KQEAg
LTczLDkgKzc2LDkgQEAgdm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTChjb25z
dCBVUkwmIHVybCkKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKLVdURjo6U3RyaW5nIE5hdmlnYXRp
b246OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAorY29uc3QgY2hhciogTmF2aWdhdGlvbjo6bG9nZ2lu
Z1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vc3QgcmVjZW50IFVS
TDogIiwgbV9jdXJyZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBCYWNrL2ZvcndhcmQgbGlz
dCBpdGVtIFVSTDogJyIsIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA/IG1fYmFja0ZvcndhcmRMaXN0
SXRlbS0+dXJsKCkgOiBTdHJpbmcgeyB9LCBTdHJpbmc6OmZvcm1hdCgiJyAoJXApIiwgbV9iYWNr
Rm9yd2FyZExpc3RJdGVtLmdldCgpKSk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCJNb3N0IHJl
Y2VudCBVUkw6ICIsIG1fY3VycmVudFJlcXVlc3QudXJsKCkuc3RyaW5nKCksICIgQmFjay9mb3J3
YXJkIGxpc3QgaXRlbSBVUkw6ICciLCBtX3RhcmdldEl0ZW0gPyBtX3RhcmdldEl0ZW0tPnVybCgp
IDogU3RyaW5nIHsgfSwgU3RyaW5nOjpmb3JtYXQoIicgKCVwKSIsIG1fdGFyZ2V0SXRlbS5nZXQo
KSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbi5oCmluZGV4IDk0N2ZiM2NmZGU2Li45NjMyZTJiOTk1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBAIC00OSwxNCArNDksMTQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXZpZ2F0aW9uKHN0YXRlKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxOYXZpZ2F0aW9uPiBjcmVhdGUoV2ViS2l0OjpXZWJOYXZpZ2F0
aW9uU3RhdGUmIHN0YXRlLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFdl
YkNvcmU6OkZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKQorICAgIHN0YXRp
YyBSZWY8TmF2aWdhdGlvbj4gY3JlYXRlKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0
ZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiB0YXJnZXRJdGVtLCBXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJh
Y2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE5hdmlnYXRpb24oc3RhdGUsIGl0ZW0sIGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXZpZ2F0aW9uKHN0YXRlLCB0YXJnZXRJdGVt
LCBmcm9tSXRlbSwgYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxOYXZpZ2F0aW9uPiBjcmVhdGUoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0
YXRlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorICAgIHN0YXRpYyBSZWY8
TmF2aWdhdGlvbj4gY3JlYXRlKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiBmcm9tSXRlbSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5h
dmlnYXRpb24oc3RhdGUsIFdURk1vdmUocmVxdWVzdCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmF2aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShyZXF1ZXN0KSwgZnJvbUl0ZW0pKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5OYXZpZ2F0aW9uKCk7CkBAIC03MSw3ICs3MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdChib29sIGlzUmVkaXJl
Y3QpIHsgbV9pc1JlZGlyZWN0ID0gaXNSZWRpcmVjdDsgfQogICAgIGJvb2wgY3VycmVudFJlcXVl
c3RJc1JlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlZGlyZWN0OyB9CiAKLSAgICBXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGJhY2tGb3J3YXJkTGlzdEl0ZW0oKSB7IHJldHVy
biBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCk7IH0KKyAgICBXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEl0ZW0uZ2V0
KCk7IH0KKyAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAogICAgIHZvaWQgYXBwZW5kUmVkaXJl
Y3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CkBAIC05MCwxMyArOTEsMTMgQEAgcHVibGlj
OgogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+
JiBvcGVuZXIoKSBjb25zdCB7IHJldHVybiBtX29wZW5lcjsgfQogCiAjaWYgIUxPR19ESVNBQkxF
RAotICAgIFdURjo6U3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKKyAgICBjb25zdCBjaGFy
KiBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJik7Ci0gICAgTmF2aWdhdGlv
bihXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KTsKLSAgICBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSk7CisgICAgTmF2
aWdhdGlvbihXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKTsKKyAgICBO
YXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViS2l0OjpXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiB0YXJnZXRJdGVtLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGZyb21JdGVtLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlKTsKIAogICAgIHVpbnQ2NF90IG1fbmF2
aWdhdGlvbklEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVz
dDsKQEAgLTEwNyw3ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRGb3JjZURv
d25sb2FkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNSZWRpcmVjdCB7IGZhbHNlIH07CiAKLSAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBtX2JhY2tGb3J3YXJkTGlz
dEl0ZW07CisgICAgUmVmUHRyPFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV90YXJn
ZXRJdGVtOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IG1fZnJv
bUl0ZW07CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUxvYWRUeXBlPiBtX2JhY2tG
b3J3YXJkRnJhbWVMb2FkVHlwZTsKICAgICBib29sIG1faXNDcm9zc09yaWdpbldpbmRvd09wZW5O
YXZpZ2F0aW9uIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjx1aW50NjRf
dCwgdWludDY0X3Q+PiBtX29wZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA2ZTc4ZTIyZWQyNi4uYTA5YTIwYTI4NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
QEAgLTQ3Niw2ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCB0cnlBcHBMaW5rKFJlZjxBUEk6Ok5hdmln
YXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgU3RyaQogCiB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlv
bj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYm
IGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCiB7CisgICAgQVNTRVJUKHdlYlBhZ2VQ
cm94eS5tYWluRnJhbWUoKSk7CiAgICAgU3RyaW5nIG1haW5GcmFtZVVSTFN0cmluZyA9IHdlYlBh
Z2VQcm94eS5tYWluRnJhbWUoKS0+dXJsKCk7CiAgICAgYm9vbCBzdWJmcmFtZU5hdmlnYXRpb24g
PSBuYXZpZ2F0aW9uQWN0aW9uLT50YXJnZXRGcmFtZSgpICYmICFuYXZpZ2F0aW9uQWN0aW9uLT50
YXJnZXRGcmFtZSgpLT5pc01haW5GcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCA0NDYwZjQ0N2UxMS4uNmUwNjUzZmZlMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtMzEsOSArMzEsMTMgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMu
aD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAj
aWYgIUxPR19ESVNBQkxFRApAQCAtNTUsNiArNTksNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJ
UEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQo
KQogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JGcmFtZSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKICAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkU2F2ZVRvUGFnZUNhY2hlIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoIkRpZFN0YXJ0UHJvZ3Jlc3MiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZCgiRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOwpAQCAtNjIsNiArNjcsNyBA
QCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1l
c1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UiKTsKICAgICAgICAgbWVzc2Fn
ZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVyVHJlZVNpemUiKTsKICAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4dCIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJTZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzIik7CiAgICAgfSk7CiAKICAgICBy
ZXR1cm4gbWVzc2FnZU5hbWVzOwpAQCAtNzIsMjMgKzc4LDMyIEBAIFN1c3BlbmRlZFBhZ2VQcm94
eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fcHJvY2VzcygmcHJvY2VzcykKICAg
ICAsIG1fYmFja0ZvcndhcmRMaXN0SXRlbShpdGVtKQorICAgICwgbV9vcmlnaW4oU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKHsgUGFyc2VkVVJMU3RyaW5nLCBpdGVtLnVybCgpIH0pKQogewot
ICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c2V0U3VzcGVuZGVkUGFnZSgqdGhpcyk7CisgICAg
bV9iYWNrRm9yd2FyZExpc3RJdGVtLT5zZXRTdXNwZW5kZWRQYWdlKHRoaXMpOworICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eSgqdGhpcyk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVl
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKIH0KIAogU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVk
UGFnZVByb3h5KCkKIHsKLSAgICBpZiAobV9wcm9jZXNzKQorICAgIGlmIChtX3Byb2Nlc3MpIHsK
ICAgICAgICAgbV9wcm9jZXNzLT5zdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKCp0aGlzKTsKKyAg
ICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJv
eHkoKnRoaXMpOworICAgIH0KKworICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c2V0U3VzcGVu
ZGVkUGFnZShudWxscHRyKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OndlYlByb2Nl
c3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChwcm9jZXNzLCAmcHJvY2VzcyA9PSBtX3Byb2Nlc3MpOworCisgICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLnVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHkoKnRoaXMpOwogICAgIG1fcHJv
Y2VzcyA9IG51bGxwdHI7CiAKICAgICBtX3BhZ2Uuc3VzcGVuZGVkUGFnZVByb2Nlc3NDbG9zZWQo
KnRoaXMpOworICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+c2V0U3VzcGVuZGVkUGFnZShudWxs
cHRyKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZEZpbmlzaExvYWQoKQpAQCAt
MTEwLDcgKzEyNSw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlmIChtZXNzYWdlTmFtZXNUb0lnbm9yZVdo
aWxlU3VzcGVuZGVkKCkuY29udGFpbnMoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkKKyAgICBpZiAo
IW1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKS5jb250YWlucyhkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpKQogICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU3VzcGVuZGVkUGFn
ZVByb3h5IHJlY2VpdmVkIHVuZXhwZWN0ZWQgV2ViUGFnZVByb3h5IG1lc3NhZ2UgJyVzJyIsIGRl
Y29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CiAjZW5kaWYKIH0KQEAgLTEx
OCw3ICsxMzMsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZAogI2lmICFMT0dfRElTQUJMRUQK
IGNvbnN0IGNoYXIqIFN1c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoIiwgU3RyaW5nOjpmb3JtYXQoIiVwIiwgdGhpcyks
ICJwYWdlIElEICIsIFN0cmluZzo6bnVtYmVyKG1fcGFnZS5wYWdlSUQoKSksICIsIG1fZmluaXNo
ZWRTdXNwZW5kaW5nICIsIFN0cmluZzo6bnVtYmVyKG1fZmluaXNoZWRTdXNwZW5kaW5nKSwgIiki
KTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigiLCBTdHJpbmc6OmZvcm1hdCgiJXAiLCB0aGlz
KSwgIiBwYWdlIElEICIsIFN0cmluZzo6bnVtYmVyKG1fcGFnZS5wYWdlSUQoKSksICIsIG1fZmlu
aXNoZWRTdXNwZW5kaW5nICIsIFN0cmluZzo6bnVtYmVyKG1fZmluaXNoZWRTdXNwZW5kaW5nKSwg
IikiKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5oCmluZGV4IGNkOWNiYzA3NWM0Li45OWQ5YjBjNjVlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ4LDYgKzQ5LDcgQEAg
cHVibGljOgogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsg
fQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vz
czsgfQogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0oKSBjb25zdCB7IHJldHVybiBt
X2JhY2tGb3J3YXJkTGlzdEl0ZW07IH0KKyAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAKICAgICBib29sIGZp
bmlzaGVkU3VzcGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZmluaXNoZWRTdXNwZW5kaW5nOyB9
CiAKQEAgLTY1LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsK
ICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2VzczsKICAgICBSZWY8V2ViQmFja0ZvcndhcmRM
aXN0SXRlbT4gbV9iYWNrRm9yd2FyZExpc3RJdGVtOworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBtX29yaWdpbjsKIAogICAgIGJvb2wgbV9maW5pc2hlZFN1c3BlbmRpbmcgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwCmluZGV4IGYwYzM5NDFmYWQ3Li5jODNlZTYwY2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0yNywxMCArMjcsMTMgQEAKICNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgorI2luY2x1
ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ0LDEwICs0NywxMyBAQCBXZWJCYWNr
Rm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAg
LCBtX2N1cnJlbnRJbmRleCgwKQogICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNpdHkpCiB7
CisgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQ3JlYXRlZCBXZWJCYWNrRm9y
d2FyZExpc3QgJXAiLCB0aGlzKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0Zv
cndhcmRMaXN0KCkKIHsKKyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBEZXN0
cm95aW5nIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCIsIHRoaXMpOworCiAgICAgLy8gQSBXZWJCYWNr
Rm9yd2FyZExpc3Qgc2hvdWxkIG5ldmVyIGJlIGRlc3Ryb3llZCB1bmxlc3MgaXQncyBhc3NvY2lh
dGVkIHBhZ2UgaGFzIGJlZW4gY2xvc2VkIG9yIGlzIGludmFsaWQuCiAgICAgQVNTRVJUKCghbV9w
YWdlICYmICFtX2hhc0N1cnJlbnRJbmRleCkgfHwgIW1fcGFnZS0+aXNWYWxpZCgpKTsKIH0KQEAg
LTY3LDYgKzczLDggQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0
OjppdGVtRm9ySUQoY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnQKIAogdm9pZCBXZWJCYWNrRm9y
d2FyZExpc3Q6OnBhZ2VDbG9zZWQoKQogeworICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0Zv
cndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCBoYWQgaXRzIHBhZ2UgY2xvc2VkIHdpdGggY3Vy
cmVudCBzaXplICV6dSIsIHRoaXMsIG1fZW50cmllcy5zaXplKCkpOworCiAgICAgLy8gV2Ugc2hv
dWxkIGhhdmUgYWx3YXlzIHN0YXJ0ZWQgb3V0IHdpdGggYW4gbV9wYWdlIGFuZCB3ZSBzaG91bGQg
bmV2ZXIgY2xvc2UgdGhlIHBhZ2UgdHdpY2UuCiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKQEAgLTE1
Niw2ICsxNjQsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4mJiBuZXdJdGVtKQogICAgICAgICAgICAgbV9lbnRyaWVzLmluc2Vy
dChtX2N1cnJlbnRJbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CiAgICAgfQogCisgICAgTE9HKEJh
Y2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgV2ViQmFja0ZvcndhcmRMaXN0ICVwIGFkZGVkIGFu
IGl0ZW0uIEN1cnJlbnQgc2l6ZSAlenUsIGN1cnJlbnQgaW5kZXggJXp1LCB0aHJldyBhd2F5ICV6
dSBpdGVtcyIsIHRoaXMsIG1fZW50cmllcy5zaXplKCksIG1fY3VycmVudEluZGV4LCByZW1vdmVk
SXRlbXMuc2l6ZSgpKTsKICAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChuZXdJ
dGVtUHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVtcykpOwogfQogCkBAIC0xNzUsOCArMTg0LDEwIEBA
IHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiBpdGVtKQogICAgIH0KIAogICAgIC8vIElmIHRoZSB0YXJnZXQgaXRlbSB3YXNuJ3QgZXZlbiBp
biB0aGUgbGlzdCwgdGhlcmUncyBub3RoaW5nIGVsc2UgdG8gZG8uCi0gICAgaWYgKHRhcmdldElu
ZGV4ID09IG5vdEZvdW5kKQorICAgIGlmICh0YXJnZXRJbmRleCA9PSBub3RGb3VuZCkgeworICAg
ICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNrRm9yd2FyZExpc3Qg
JXAgY291bGQgbm90IGdvIHRvIGl0ZW0gJXMgKCVzKSBiZWNhdXNlIGl0IHdhcyBub3QgZm91bmQi
LCB0aGlzLCBpdGVtLml0ZW1JRCgpLmxvZ1N0cmluZygpLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKHRhcmdldEluZGV4IDwgbV9j
dXJyZW50SW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBtX2VudHJpZXMuc2l6ZSgp
IC0gdGFyZ2V0SW5kZXggLSAxOwpAQCAtMjA5LDYgKzIyMCw5IEBAIHZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0Ojpnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogICAgIH0KIAog
ICAgIG1fY3VycmVudEluZGV4ID0gdGFyZ2V0SW5kZXg7CisKKyAgICBMT0coQmFja0ZvcndhcmQs
ICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNrRm9yd2FyZExpc3QgJXAgZ29pbmcgdG8gaXRlbSAlcywg
aXMgbm93IGF0IGluZGV4ICV6dSIsIHRoaXMsIGl0ZW0uaXRlbUlEKCkubG9nU3RyaW5nKCksIHRh
cmdldEluZGV4KTsKKwogICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxw
dHIsIFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiB9CiAKQEAgLTMyMiw2ICszMzYsOCBAQCB2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlQWxsSXRlbXMoKQogewogICAgIEFTU0VSVCghbV9o
YXNDdXJyZW50SW5kZXggfHwgbV9jdXJyZW50SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKTsKIAor
ICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAl
cCByZW1vdmVBbGxJdGVtcyAoaGFzICV6dSBvZiB0aGVtKSIsIHRoaXMsIG1fZW50cmllcy5zaXpl
KCkpOworCiAgICAgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3ZlZEl0
ZW1zOwogCiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykgewpAQCAtMzM4LDYgKzM1
NCw4IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiB7CiAgICAgQVNTRVJUKCFt
X2hhc0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwog
CisgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgV2ViQmFja0ZvcndhcmRMaXN0
ICVwIGNsZWFyIChoYXMgJXp1IG9mIHRoZW0pIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CisK
ICAgICBzaXplX3Qgc2l6ZSA9IG1fZW50cmllcy5zaXplKCk7CiAgICAgaWYgKCFtX3BhZ2UgfHwg
c2l6ZSA8PSAxKQogICAgICAgICByZXR1cm47CkBAIC00MjUsMTkgKzQ0MywzMCBAQCB2b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBi
YWNrRm9yd2FyZExpc3RTdAogICAgIG1faGFzQ3VycmVudEluZGV4ID0gISFiYWNrRm9yd2FyZExp
c3RTdGF0ZS5jdXJyZW50SW5kZXg7CiAgICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9yd2FyZExp
c3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWVfb3IoMCk7CiAgICAgbV9lbnRyaWVzID0gV1RGTW92
ZShpdGVtcyk7CisKKyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNr
Rm9yd2FyZExpc3QgJXAgcmVzdG9yZWQgZnJvbSBzdGF0ZSAoaGFzICV6dSBlbnRyaWVzKSIsIHRo
aXMsIG1fZW50cmllcy5zaXplKCkpOwogfQogCi1WZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlPiBXZWJCYWNrRm9yd2FyZExpc3Q6Oml0ZW1TdGF0ZXMoKSBjb25zdAorVmVjdG9yPEJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZT4gV2ViQmFja0ZvcndhcmRMaXN0OjpmaWx0ZXJlZEl0ZW1zKEZ1
bmN0aW9uPGJvb2woV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYmIGZ1bmN0b3IpIGNvbnN0CiB7
CiAgICAgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gaXRlbVN0YXRlczsKICAgICBp
dGVtU3RhdGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyaWVzLnNpemUoKSk7CiAKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9lbnRyaWVzKQotICAgICAgICBpdGVtU3RhdGVz
LnVuY2hlY2tlZEFwcGVuZChlbnRyeS0+aXRlbVN0YXRlKCkpOworICAgIGZvciAoY29uc3QgYXV0
byYgZW50cnkgOiBtX2VudHJpZXMpIHsKKyAgICAgICAgaWYgKGZ1bmN0b3IoZW50cnkpKQorICAg
ICAgICAgICAgaXRlbVN0YXRlcy51bmNoZWNrZWRBcHBlbmQoZW50cnktPml0ZW1TdGF0ZSgpKTsK
KyAgICB9CiAKICAgICByZXR1cm4gaXRlbVN0YXRlczsKIH0KIAorVmVjdG9yPEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZT4gV2ViQmFja0ZvcndhcmRMaXN0OjppdGVtU3RhdGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmlsdGVyZWRJdGVtcyhbXShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3Q6OmRpZFJlbW92ZUl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgYmFja0ZvcndhcmRMaXN0
SXRlbSkKIHsKICAgICBtX3BhZ2UtPmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oYmFja0ZvcndhcmRM
aXN0SXRlbS5pdGVtSUQoKSk7CkBAIC00NDcsNCArNDc2LDI1IEBAIHZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0OjpkaWRSZW1vdmVJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGJhY2tGb3J3YXJk
TGlzdEl0CiAjZW5kaWYKIH0KIAorCisjaWYgIUxPR19ESVNBQkxFRAorY29uc3QgY2hhciogV2Vi
QmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIldlYkJhY2tGb3J3YXJk
TGlzdCAlcCAtICV6dSBlbnRyaWVzLCBoYXMgY3VycmVudCBpbmRleCAlcyAoJXp1KSIsIHRoaXMs
IG1fZW50cmllcy5zaXplKCksIG1faGFzQ3VycmVudEluZGV4ID8gIllFUyIgOiAiTk8iLCBtX2hh
c0N1cnJlbnRJbmRleCA/IG1fY3VycmVudEluZGV4IDogMCkpOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIlxuIik7CisgICAgICAgIGlmIChtX2hhc0N1cnJlbnRJbmRleCAmJiBtX2N1cnJlbnRJbmRl
eCA9PSBpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAqICIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIC0gIik7CisKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQobV9lbnRyaWVzW2ldLT5sb2dnaW5nU3RyaW5nKCkpOworICAgIH0KKworICAgIHJldHVy
biBkZWJ1Z1N0cmluZygiXG4iLCBidWlsZGVyLnRvU3RyaW5nKCkpOworfQorI2VuZGlmIC8vICFM
T0dfRElTQUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IDI4ZmNlYTMxZDJkLi4zOTllMjhmMzIy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAg
LTc0LDYgKzc0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3RvcmVGcm9tU3RhdGUoQmFja0Zv
cndhcmRMaXN0U3RhdGUpOwogCiAgICAgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4g
aXRlbVN0YXRlcygpIGNvbnN0OworICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+
IGZpbHRlcmVkSXRlbXMoRnVuY3Rpb248Ym9vbChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYp
IGNvbnN0OworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ2dpbmdTdHJp
bmcoKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlz
dChXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0
aW9uU3RhdGUuY3BwCmluZGV4IDMxYTcwN2IyZTY4Li45ODAyNGE0MzAwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwCkBAIC00MiwxOCArNDIs
MTggQEAgV2ViTmF2aWdhdGlvblN0YXRlOjp+V2ViTmF2aWdhdGlvblN0YXRlKCkKIHsKIH0KIAot
UmVmPEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVMb2FkUmVxdWVz
dE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK1JlZjxBUEk6Ok5hdmlnYXRp
b24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVt
KQogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IEFQSTo6TmF2aWdhdGlvbjo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBBUEk6Ok5hdmlnYXRp
b246OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgY3VycmVudEl0ZW0pOwogCiAgICAg
bV9uYXZpZ2F0aW9ucy5zZXQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24u
cHRyKCkpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLVJlZjxBUEk6Ok5hdmlnYXRp
b24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKK1Jl
ZjxBUEk6Ok5hdmlnYXRpb24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlQmFja0ZvcndhcmRO
YXZpZ2F0aW9uKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7
Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gQVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUoKnRoaXMsIGl0
ZW0sIGZyYW1lTG9hZFR5cGUpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IEFQSTo6TmF2aWdhdGlv
bjo6Y3JlYXRlKCp0aGlzLCB0YXJnZXRJdGVtLCBjdXJyZW50SXRlbSwgZnJhbWVMb2FkVHlwZSk7
CiAKICAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2
aWdhdGlvbi5wdHIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlv
blN0YXRlLmgKaW5kZXggMGUxMmYzZjgwMTEuLjEzNjZlM2NjOGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaApAQCAtNDgsOCArNDgsOCBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViTmF2aWdhdGlvblN0YXRlKCk7CiAgICAgfldlYk5hdmlnYXRp
b25TdGF0ZSgpOwogCi0gICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gY3JlYXRlQmFja0ZvcndhcmRO
YXZpZ2F0aW9uKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBl
KTsKLSAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNy
ZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiB0YXJnZXRJ
dGVtLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBjdXJyZW50SXRlbSwgV2ViQ29yZTo6RnJhbWVM
b2FkVHlwZSk7CisgICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gY3JlYXRlTG9hZFJlcXVlc3ROYXZp
Z2F0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiBjdXJyZW50SXRlbSk7CiAgICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gY3JlYXRlUmVsb2FkTmF2
aWdhdGlvbigpOwogICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZUxvYWREYXRhTmF2aWdh
dGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4
MmIwYTZhYTIzMS4uNGIxNTI5OGJlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNjQ0LDI1ICs2NDQsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVN5bmNocm9ub3VzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygpCiB7CiAgICAgYXV0byBw
cm9jZXNzID0gbWFrZVJlZihtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJv
Y2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdChtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkp
KTsKLSAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpLCBmYWxzZSk7Cisg
ICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSwgbnVsbHB0ciwgUmVhdHRh
Y2hGb3JCYWNrRm9yd2FyZDo6Tm8pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0YWNoVG9Q
cm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCi17Ci0g
ICAgLy8gRklYTUU6IElmIHRoaXMgV2ViUGFnZVByb3h5IGlzIHRoZSBvbmx5IG9uZSBob3N0ZWQg
aW4gaXRzIFdlYlByb2Nlc3MsIGRvZXMgdGhpcyBtYWtlIGl0IGdvIGF3YXk/Ci0gICAgLy8gV2Ug
bmVlZCB0byBiZSBwcmVwYXJlZCB0byByZXVzZSBpdCBsYXRlci4KLSAgICBwcm9jZXNzRGlkVGVy
bWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXApOwotCi0gICAg
Ly8gRklYTUU6IHRoaXMgaXMgdG8gZml4IHRoZSBBU1NFUlQoaXNWYWxpZCgpKSBpbnNpZGUgcmVh
dHRhY2hUb1dlYlByb2Nlc3MsIHNvbWUgb3RoZXIgd2F5IHRvIGZpeCB0aGlzIGlzIG5lZWRlZC4K
LSAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhXVEZNb3Zl
KHByb2Nlc3MpLCB0cnVlKTsKLX0KLQotU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJQYWdlUHJveHk6
Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCitTdXNw
ZW5kZWRQYWdlUHJveHkqIFdlYlBhZ2VQcm94eTo6bWF5YmVDcmVhdGVTdXNwZW5kZWRQYWdlKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uKQogewog
ICAgIEFTU0VSVCghbV9zdXNwZW5kZWRQYWdlIHx8IG1fc3VzcGVuZGVkUGFnZS0+cHJvY2Vzcygp
ICE9ICZwcm9jZXNzKTsKIAotICAgIGF1dG8qIGN1cnJlbnRJdGVtID0gbV9iYWNrRm9yd2FyZExp
c3QtPmN1cnJlbnRJdGVtKCk7CisgICAgYXV0byogY3VycmVudEl0ZW0gPSBuYXZpZ2F0aW9uLmZy
b21JdGVtKCk7CiAgICAgaWYgKCFjdXJyZW50SXRlbSkgewogICAgICAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIHVuYWJsZSB0byBjcmVhdGUgc3VzcGVu
ZGVkIHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIC0gTm8gY3VycmVudCBiYWNrL2ZvcndhcmQgaXRl
bSIsIHBhZ2VJRCgpLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTY4MSwyMCArNjcwLDM2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNw
ZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCiAgICAgbV9z
dXNwZW5kZWRQYWdlID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNo
VG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgYm9vbCBzdXNwZW5k
SW5PbGRQcm9jZXNzKQordm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9u
LCBSZWF0dGFjaEZvckJhY2tGb3J3YXJkIHJlYXR0YWNoRm9yQmFja0ZvcndhcmQpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWlzVmFsaWQoKSk7CiAKICAgICBtX2lz
VmFsaWQgPSB0cnVlOwogCi0gICAgaWYgKCFzdXNwZW5kSW5PbGRQcm9jZXNzKSB7CisgICAgLy8g
SWYgdGhlIHByb2Nlc3Mgd2UncmUgYXR0YWNoaW5nIHRvIGlzIGtlcHQgYWxpdmUgc29sZWx5IGJ5
IG91ciBjdXJyZW50IHN1c3BlbmRlZCBwYWdlLAorICAgIC8vIHdlIG5lZWQgdG8gbWFpbnRhaW4g
dGhhdCBieSB0ZW1wb3JhcmlseSBrZWVwaW5nIHRoZSBzdXNwZW5kZWQgcGFnZSBhbGl2ZS4KKyAg
ICBSZWZQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBjdXJyZW50U3VzcGVuZGVkUGFnZTsKKyAgICBp
ZiAoIW5hdmlnYXRpb24pIHsKICAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlz
LCBtX3BhZ2VJRCk7CiAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwot
ICAgIH0gZWxzZQotICAgICAgICBtX3Byb2Nlc3MtPnN1c3BlbmRXZWJQYWdlUHJveHkoKnRoaXMp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGN1cnJlbnRTdXNwZW5kZWRQYWdlID0gbV9zdXNwZW5k
ZWRQYWdlOworICAgICAgICBtX3Byb2Nlc3MtPnN1c3BlbmRXZWJQYWdlUHJveHkoKnRoaXMsICpu
YXZpZ2F0aW9uKTsKKyAgICB9CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwor
ICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVu
bmluZykKKyAgICAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLndlYlBhZ2VFbnRlcmlu
Z1dlYlByb2Nlc3MoKTsKKworICAgIGlmIChyZWF0dGFjaEZvckJhY2tGb3J3YXJkID09IFJlYXR0
YWNoRm9yQmFja0ZvcndhcmQ6OlllcykgeworICAgICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsK
KyAgICAgICAgQVNTRVJUKG1fbWFpbkZyYW1lSUQpOworICAgICAgICBtX21haW5GcmFtZSA9IFdl
YkZyYW1lUHJveHk6OmNyZWF0ZSh0aGlzLCAqbV9tYWluRnJhbWVJRCk7CisgICAgICAgIG1fcHJv
Y2Vzcy0+ZnJhbWVDcmVhdGVkKCptX21haW5GcmFtZUlELCAqbV9tYWluRnJhbWUpOworICAgIH0K
KworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBSZWF0dGFjaGlu
ZyBXZWJQYWdlUHJveHkgJXAgdG8gV2ViUHJvY2Vzc1Byb3h5ICVwIHdpdGggcGlkICVpXG4iLCB0
aGlzLCBtX3Byb2Nlc3MucHRyKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAK
ICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpICE9IENoaWxkUHJvY2Vzc1Byb3h5OjpTdGF0
ZTo6VGVybWluYXRlZCk7CiAgICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBDaGlsZFByb2Nl
c3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpCkBAIC03NjEsNyArNzY2LDcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzc1dpdGhJdGVtKFdl
YkJhY2tGb3J3YXIKICAgICBpZiAoJml0ZW0gIT0gbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJ
dGVtKCkpCiAgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbShpdGVtKTsKIAotICAg
IGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5h
dmlnYXRpb24oaXRlbSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkKTsKKyAgICBh
dXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZp
Z2F0aW9uKGl0ZW0sIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLCBGcmFtZUxvYWRU
eXBlOjpJbmRleGVkQmFja0ZvcndhcmQpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCBpdGVtLml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIE5hdmln
YXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwpAQCAtOTEzLDcgKzkxOCw3IEBAIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxv
YWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRp
b24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0
ZW0oKSk7CiAgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLmdldCgpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwg
TmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlKTsKICAgICByZXR1cm4gV1RGTW92ZShuYXZp
Z2F0aW9uKTsKIH0KQEAgLTk2Niw3ICs5NzEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBuYXZpZ2F0aW9u
ID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJj
ZVJlcXVlc3QoZmlsZVVSTCkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0
YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0KGZpbGVVUkwp
LCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTEyMjcsNyArMTIzMiw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBp
dGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgTE9HKExvYWRpbmcsICJX
ZWJQYWdlUHJveHkgJXAgZ29Ub0JhY2tGb3J3YXJkSXRlbSB0byBiYWNrIGl0ZW0gVVJMICVzIiwg
dGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIldlYlBh
Z2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRl
bS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gcmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShpdGVtKTsKQEAgLTEyMzgsNyArMTI0
Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBuYXZpZ2F0aW9uOwogICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCktPml0ZW1Jc0luU2FtZURvY3VtZW50KGl0ZW0pKQotICAgICAgICBuYXZpZ2F0aW9uID0gbV9u
YXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVtLCBmcmFtZUxv
YWRUeXBlKTsKKyAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVC
YWNrRm9yd2FyZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCksIGZyYW1lTG9hZFR5cGUpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0
aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIE5hdmlnYXRpb25Qb2xp
Y3lDaGVjazo6UmVxdWlyZSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwpAQCAtMjM3OSw3ICsyMzg0LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQ
cm94eSYgZnIKICAgICAgICAgICAgIGF1dG8gcHJvcG9zZWRQcm9jZXNzID0gcHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBhY3Rp
b24pOwogCiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0cigpICE9ICZwcm9jZXNz
KCkpIHsKLSAgICAgICAgICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU3dpdGNoaW5nIGZy
b20gcHJvY2VzcyAlaSB0byBuZXcgcHJvY2VzcyBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAn
JXMnIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5h
dmlnYXRpb24tPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAg
ICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU3dpdGNoaW5nIGZyb20gcHJvY2VzcyAlaSB0byBuZXcg
cHJvY2VzcyBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxvZ2dpbmdTdHJp
bmcoKSk7CiAKICAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5h
dmlnYXRpb24pLCBwcm9wb3NlZFByb2Nlc3MgPSBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJv
Y2VzcyhuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcykpOwpAQCAtMjM5
OCw3ICsyNDAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSYgZnIKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKIHsKLSAgICBMT0coTG9hZGlu
ZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBw
cm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmln
YXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24u
bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IHByZXZpb3VzUHJvY2VzcyA9IG1fcHJvY2Vzcy5jb3B5UmVmKCk7CiAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmF2aWdhdGVkRnJhbWVJZGVudGlmaWVySW5QcmV2
aW91c1Byb2Nlc3M7CkBAIC0yNDA2LDE2ICsyNDExLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBSCiAgICAgICAgIG5hdmlnYXRlZEZyYW1lSWRlbnRpZmllckluUHJldmlvdXNQcm9jZXNzID0g
bV9tYWluRnJhbWUtPmZyYW1lSUQoKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MucHRyKCkgIT0g
cHJvY2Vzcy5wdHIoKSk7Ci0gICAgYXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihXVEZNb3Zl
KHByb2Nlc3MpKTsKIAotICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi5iYWNrRm9yd2Fy
ZExpc3RJdGVtKCkpIHsKLSAgICAgICAgaWYgKGl0ZW0gIT0gbV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCkpCi0gICAgICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Z29Ub0l0ZW0oKml0
ZW0pOworICAgIHByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpO
YXZpZ2F0aW9uU3dhcCk7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyB0byBmaXggdGhlIEFTU0VS
VChpc1ZhbGlkKCkpIGluc2lkZSByZWF0dGFjaFRvV2ViUHJvY2Vzcywgc29tZSBvdGhlciB3YXkg
dG8gZml4IHRoaXMgaXMgbmVlZGVkLgorICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIHJlYXR0
YWNoVG9XZWJQcm9jZXNzKFdURk1vdmUocHJvY2VzcyksICZuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9u
LnRhcmdldEl0ZW0oKSA/IFJlYXR0YWNoRm9yQmFja0ZvcndhcmQ6OlllcyA6IFJlYXR0YWNoRm9y
QmFja0ZvcndhcmQ6Ok5vKTsKKworICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi50YXJn
ZXRJdGVtKCkpIHsKKyAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVt
LT51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBBU1NFUlQobmF2aWdhdGlvbi5iYWNr
Rm9yd2FyZEZyYW1lTG9hZFR5cGUoKSk7Ci0gICAgICAgIEFTU0VSVChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUoKm5hdmlnYXRpb24uYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkpKTsKKyAgICAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOworICAgICAg
ICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGl0
ZW0tPnVybCgpKTsKIAorICAgICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlz
dC0+ZmlsdGVyZWRJdGVtcyhbdGhpcywgdGFyZ2V0SXRlbSA9IGl0ZW1dKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mIGl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaXRlbS5zdXNw
ZW5kZWRQYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFnZS0+cHJvY2VzcygpID09IG1f
cHJvY2Vzcy5wdHIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07CisgICAgICAg
IH0pOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJh
Y2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0YXRlcykpLCBtX3BhZ2VJRCk7
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3
YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVtLT5pdGVtSUQoKSwgKm5hdmln
YXRpb24uYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIE5hdmlnYXRpb25Qb2xpY3lDaGVjazo6
QnlwYXNzKSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGlt
ZXIoKS5zdGFydCgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMjQ1LDkgKzMyNjMs
MTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBmcmFt
ZUlEKQogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5jYW5DcmVhdGVGcmFtZShmcmFtZUlE
KSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSh0aGlzLCBmcmFt
ZUlEKTsKKyAgICBtX21haW5GcmFtZUlEID0gZnJhbWVJRDsKIAogICAgIC8vIEFkZCB0aGUgZnJh
bWUgdG8gdGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQo
ZnJhbWVJRCwgbV9tYWluRnJhbWUuZ2V0KCkpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVk
KGZyYW1lSUQsICptX21haW5GcmFtZSk7CiAKICAgICBpZiAobV9tYWluRnJhbWVDcmVhdGlvbkhh
bmRsZXIpIHsKICAgICAgICAgbV9tYWluRnJhbWVDcmVhdGlvbkhhbmRsZXIoKTsKQEAgLTMyNjUs
NyArMzI4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRf
dCBmcmFtZUlEKQogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBzdWJGcmFtZSA9IFdlYkZyYW1l
UHJveHk6OmNyZWF0ZSh0aGlzLCBmcmFtZUlEKTsKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8g
dGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJ
RCwgc3ViRnJhbWUuZ2V0KCkpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQs
ICpzdWJGcmFtZSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVXaW5kb3codWlu
dDY0X3QgZnJhbWVJRCwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIHdpbmRvd0lkZW50aWZpZXIp
CkBAIC0zMzU0LDcgKzMzNzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmln
YXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkg
JSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVy
bCAlcyIsIG1fcGFnZUlELCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQs
IG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0zNDU5LDYg
KzM0NzgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgVwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIExPRyhMb2FkaW5nLCAiKExv
YWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdl
SUQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgp
LmRhdGEoKSk7CisKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGll
bnQpOwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpOwpAQCAtMzUxMyw2ICszNTM0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9h
ZERlcGVuZGVudENhbGxiYWNrcygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50
MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlv
bmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CisgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5
ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2
NCwgbV9wYWdlSUQsIG1fbmF2aWdhdGlvbklEKTsKKyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFj
ay9Gb3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3QgaXMgbm93OiVz
IiwgbV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7CisKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCiAgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwpAQCAtMzg5MCw3ICszOTE0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXIKICAgICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0
LnVybCgpKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChvcmlnaW5hbFJlcXVlc3QudXJsKCkpOwog
ICAgIAotICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQg
PyBtYWtlUmVmKG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpIDog
bV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCkpOworICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBu
YXZpZ2F0aW9uSUQgPyBtYWtlUmVmKG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmln
YXRpb25JRCkpIDogbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlv
bihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpKTsKIAogICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpOwogICAgIG5hdmlnYXRpb24tPnNldFdhc1VzZXJJbml0aWF0ZWQoISFuYXZpZ2F0
aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CkBAIC00MjIyLDkgKzQy
NDYsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViSGl0
VGVzdFJlc3VsdERhdGEmJiBoaXRUZXN0UmVzdWx0RAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29u
bmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKLSAgICBBU1NF
UlQoJmNvbm5lY3Rpb24gPT0gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpOworICAgIEFTU0VSVF9V
TlVTRUQoY29ubmVjdGlvbiwgJmNvbm5lY3Rpb24gPT0gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkp
OwogCi0gICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNvbm5lY3Rpb25XaWxsT3Blbihj
b25uZWN0aW9uKTsKKyAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIud2ViUGFnZUVudGVy
aW5nV2ViUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2ViUHJvY2Vzc1dpbGxT
aHV0RG93bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGEzZjE0
NmIwYmE3Li4zOGYxYTZmYTY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTEyODksNyArMTI4OSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlByZWZlcmVuY2VzU3Rv
cmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCi0gICAgU3VzcGVuZGVkUGFnZVByb3h5KiBt
YXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgU3VzcGVuZGVk
UGFnZVByb3h5KiBtYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uJik7CiAgICAgdm9pZCBzdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZChTdXNw
ZW5kZWRQYWdlUHJveHkmKTsKIAogcHJpdmF0ZToKQEAgLTE0NDMsOCArMTQ0MywxMiBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0Q2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzKGJv
b2wgY2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzKSB7IG1fY2FuU2hvcnRDaXJj
dWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzID0gY2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVs
RXZlbnRzOyB9CiAKICAgICB2b2lkIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBh
dHRhY2hUb1Byb2Nlc3NGb3JOYXZpZ2F0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOwotICAg
IHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgYm9vbCBz
dXNwZW5kSW5PbGRQcm9jZXNzKTsKKworICAgIGVudW0gY2xhc3MgUmVhdHRhY2hGb3JCYWNrRm9y
d2FyZCB7CisgICAgICAgIFllcywKKyAgICAgICAgTm8KKyAgICB9OworICAgIHZvaWQgcmVhdHRh
Y2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9uKiwg
UmVhdHRhY2hGb3JCYWNrRm9yd2FyZCk7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBy
ZWF0dGFjaFRvV2ViUHJvY2Vzc0ZvclJlbG9hZCgpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYp
OwpAQCAtMTc3OSw2ICsxNzgzLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFp
bkZyYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fbWFpbkZyYW1lSUQ7CiAgICAg
RnVuY3Rpb248dm9pZCgpPiBtX21haW5GcmFtZUNyZWF0aW9uSGFuZGxlcjsKICAgICBGdW5jdGlv
bjx2b2lkKGNvbnN0IFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXImKT4gbV9tYWluRnJh
bWVXaW5kb3dDcmVhdGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAKaW5kZXggN2YyNTk5YTc3YWYuLmQx
ZDcwMTY2MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
TGlmZXRpbWVUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzTGlmZXRpbWVUcmFja2VyLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NM
aWZldGltZVRyYWNrZXI6OmFkZE9ic2VydmVyKFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyJiBv
YnNlcnZlcgogICAgICAgICBvYnNlcnZlci5hZGRXZWJQYWdlKG1fd2ViUGFnZVByb3h5KTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyOjpjb25uZWN0aW9uV2lsbE9wZW4oSVBD
OjpDb25uZWN0aW9uJikKK3ZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlcjo6d2ViUGFnZUVu
dGVyaW5nV2ViUHJvY2VzcygpCiB7CiAgICAgQVNTRVJUKHByb2Nlc3NJc1J1bm5pbmcoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRy
YWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNr
ZXIuaAppbmRleCBkYzg1Nzc3YzI0Zi4uZmRjNGRlZjI4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRPYnNlcnZlcihXZWJQcm9jZXNzTGlmZXRpbWVP
YnNlcnZlciYpOwogCi0gICAgdm9pZCBjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9u
Jik7CisgICAgdm9pZCB3ZWJQYWdlRW50ZXJpbmdXZWJQcm9jZXNzKCk7CiAgICAgdm9pZCB3ZWJQ
YWdlTGVhdmluZ1dlYlByb2Nlc3MoKTsKIAogICAgIHZvaWQgcGFnZVdhc0ludmFsaWRhdGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYzAxMTk4
YzNmNzguLjIxZGNjM2Y2ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNlbmRpZgogI2luY2x1ZGUgIkxvZ0luaXRpYWxpemF0aW9u
LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTE5OTksNiArMjAwMCwxNCBAQCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiBwYWdlLCBjbwogICAgIGlmIChuYXZpZ2F0aW9uLm9wZW5lcigpKQogICAgICAg
ICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CiAKKyAgICBpZiAoYXV0byogYmFja0ZvcndhcmRMaXN0
SXRlbSA9IG5hdmlnYXRpb24udGFyZ2V0SXRlbSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBzdXNw
ZW5kZWRQYWdlID0gYmFja0ZvcndhcmRMaXN0SXRlbS0+c3VzcGVuZGVkUGFnZSgpKSB7CisgICAg
ICAgICAgICBBU1NFUlQoc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpKTsKKyAgICAgICAgICAgIGFj
dGlvbiA9IFBvbGljeUFjdGlvbjo6U3VzcGVuZDsKKyAgICAgICAgICAgIHJldHVybiAqc3VzcGVu
ZGVkUGFnZS0+cHJvY2VzcygpOworICAgICAgICB9CisgICAgfQorCiAgICAgYXV0byB0YXJnZXRV
UkwgPSBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB1cmwgPSBV
UkwgeyBQYXJzZWRVUkxTdHJpbmcsIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07CiAgICAg
aWYgKCF1cmwuaXNWYWxpZCgpIHx8IHVybC5pc0VtcHR5KCkgfHwgdXJsLmlzQmxhbmtVUkwoKSB8
fCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCB0YXJnZXRVUkwpKQpAQCAtMjAwOCw0
ICsyMDE3LDMwIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvCiAgICAgcmV0dXJuIGNyZWF0ZU5l
d1dlYlByb2Nlc3MocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOwogfQogCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJveHkmIHBh
Z2UpCit7CisgICAgYXV0byYgdmVjdG9yID0gbV9zdXNwZW5kZWRQYWdlcy5lbnN1cmUocGFnZS5v
cmlnaW4oKSwgW10geworICAgICAgICByZXR1cm4gVmVjdG9yPFN1c3BlbmRlZFBhZ2VQcm94eSo+
IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICB2ZWN0b3IuYXBwZW5kKCZwYWdl
KTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAodmVjdG9yLnNpemUoKSA+IDUpCisgICAg
ICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTZWN1cml0eSBvcmlnaW4gJXMgbm93IGhhcyAlenUg
c3VzcGVuZGVkIHBhZ2VzICh0aGlzIHNlZW1zIHVuZXhwZWN0ZWQpIiwgcGFnZS5vcmlnaW4oKS5k
ZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZlY3Rvci5zaXplKCkpOworI2VuZGlmCit9CisK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHkoU3VzcGVu
ZGVkUGFnZVByb3h5JiBwYWdlKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3N1c3BlbmRlZFBh
Z2VzLmZpbmQocGFnZS5vcmlnaW4oKSk7CisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fc3VzcGVu
ZGVkUGFnZXMuZW5kKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpdGVyYXRvci0+dmFsdWUucmVt
b3ZlRmlyc3QoJnBhZ2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisg
ICAgaWYgKGl0ZXJhdG9yLT52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fc3VzcGVuZGVkUGFn
ZXMucmVtb3ZlKGl0ZXJhdG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBmODI0Zjg1MzYzZC4uNTJkNzZj
OGYxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDQ3
LDYgKzQ0Nyw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4g
cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9u
JiwgV2ViQ29yZTo6UG9saWN5QWN0aW9uJik7CisgICAgdm9pZCByZWdpc3RlclN1c3BlbmRlZFBh
Z2VQcm94eShTdXNwZW5kZWRQYWdlUHJveHkmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTdXNwZW5k
ZWRQYWdlUHJveHkoU3VzcGVuZGVkUGFnZVByb3h5Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTY4Miw2ICs2ODQsOCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclBy
b2Nlc3NlczsKICNlbmRpZgogI2VuZGlmCisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSwgVmVjdG9yPFN1c3BlbmRlZFBhZ2VQcm94eSo+PiBtX3N1c3BlbmRlZFBhZ2Vz
OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDQ5M2U4OGQyMzliLi4wNzUwNTE2ZmQ3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zOTYsOSArMzk2
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJv
eHkmIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9u
c2l2ZW5lc3NUaW1lcigpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c3VzcGVuZFdlYlBh
Z2VQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3Vz
cGVuZFdlYlBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbikKIHsKLSAgICBpZiAoYXV0byogc3VzcGVuZGVkUGFnZSA9IHdlYlBhZ2UubWF5
YmVDcmVhdGVTdXNwZW5kZWRQYWdlKCp0aGlzKSkgeworICAgIGlmIChhdXRvKiBzdXNwZW5kZWRQ
YWdlID0gd2ViUGFnZS5tYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoKnRoaXMsIG5hdmlnYXRpb24p
KSB7CiAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQcm9jZXNzUHJveHkgcGlkICVp
IGFkZGVkIHN1c3BlbmRlZCBwYWdlICVzIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgc3VzcGVuZGVk
UGFnZS0+bG9nZ2luZ1N0cmluZygpKTsKICAgICAgICAgbV9zdXNwZW5kZWRQYWdlTWFwLnNldCh3
ZWJQYWdlLnBhZ2VJRCgpLCBzdXNwZW5kZWRQYWdlKTsKICAgICB9CkBAIC01NDMsOCArNTQzLDE0
IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSkKIHsKLSAgICBpZiAoYXV0byogaXRlbSA9IFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChpdGVtU3RhdGUuaWRlbnRpZmllcikpCi0g
ICAgICAgIGl0ZW0tPnNldFBhZ2VTdGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKKyAgICBpZiAo
YXV0byogaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChpdGVtU3RhdGUu
aWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gVGhpcyB1cGRhdGUgY291bGQgYmUgY29taW5nIGZy
b20gYSB3ZWIgcHJvY2VzcyB0aGF0IGlzIG5vdCB0aGUgYWN0aXZlIHByb2Nlc3MgZm9yCisgICAg
ICAgIC8vIHRoZSBiYWNrL2ZvcndhcmQgaXRlbXMgcGFnZS4KKyAgICAgICAgLy8gZS5nLiBUaGUg
b2xkIHdlYiBwcm9jZXNzIGlzIG5hdmlnYXRpbmcgdG8gYWJvdXQ6YmxhbmsgZm9yIHN1c3BlbnNp
b24uCisgICAgICAgIC8vIFdlIGlnbm9yZSB0aGVzZSB1cGRhdGVzLgorICAgICAgICBpZiAobV9w
YWdlTWFwLmNvbnRhaW5zKGl0ZW0tPnBhZ2VJRCgpKSkKKyAgICAgICAgICAgIGl0ZW0tPnNldFBh
Z2VTdGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKKyAgICB9CiB9CiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKQEAgLTc2MCwxMCArNzY2LDkgQEAgYm9vbCBXZWJQcm9jZXNzUHJv
eHk6OmNhbkNyZWF0ZUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIGNvbnN0CiAgICAgcmV0dXJuIFdl
YkZyYW1lUHJveHlNYXA6OmlzVmFsaWRLZXkoZnJhbWVJRCkgJiYgIW1fZnJhbWVNYXAuY29udGFp
bnMoZnJhbWVJRCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpmcmFtZUNyZWF0ZWQodWlu
dDY0X3QgZnJhbWVJRCwgV2ViRnJhbWVQcm94eSogZnJhbWVQcm94eSkKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpmcmFtZUNyZWF0ZWQodWludDY0X3QgZnJhbWVJRCwgV2ViRnJhbWVQcm94eSYgZnJh
bWVQcm94eSkKIHsKLSAgICBBU1NFUlQoY2FuQ3JlYXRlRnJhbWUoZnJhbWVJRCkpOwotICAgIG1f
ZnJhbWVNYXAuc2V0KGZyYW1lSUQsIGZyYW1lUHJveHkpOworICAgIG1fZnJhbWVNYXAuc2V0KGZy
YW1lSUQsICZmcmFtZVByb3h5KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ry
b3lGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCBlZDEwZjkzZGRiYS4uNjQ1Yzk4MTFmNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgQVBJIHsKK2NsYXNzIE5hdmlnYXRpb247CiBj
bGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIApAQCAtMTMwLDcgKzEzMSw3IEBAIHB1YmxpYzoK
IAogICAgIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lKHVpbnQ2NF90KSBjb25zdDsKICAgICBib29s
IGNhbkNyZWF0ZUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIGNvbnN0OwotICAgIHZvaWQgZnJhbWVD
cmVhdGVkKHVpbnQ2NF90LCBXZWJGcmFtZVByb3h5Kik7CisgICAgdm9pZCBmcmFtZUNyZWF0ZWQo
dWludDY0X3QsIFdlYkZyYW1lUHJveHkmKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZXNGcm9t
UGFnZShXZWJQYWdlUHJveHkqKTsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUuCiAgICAgc2l6ZV90
IGZyYW1lQ291bnRJblBhZ2UoV2ViUGFnZVByb3h5KikgY29uc3Q7IC8vIEluY2x1ZGluZyBtYWlu
IGZyYW1lLgogCkBAIC0yMDQsNyArMjA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0
UHJvdmlzaW9uYWxMb2FkKCkgeyBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0
cnVlOyB9CiAgICAgYm9vbCBoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzOyB9CiAKLSAgICB2b2lk
IHN1c3BlbmRXZWJQYWdlUHJveHkoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCBzdXNwZW5kV2Vi
UGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiYpOwogICAgIHZvaWQgc3Vz
cGVuZGVkUGFnZVdhc0Rlc3Ryb3llZChTdXNwZW5kZWRQYWdlUHJveHkmKTsKIAogI2lmIEVOQUJM
RShFWFRSQV9aT09NX01PREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaAppbmRleCBkYjFjMDFjOGUzMC4uMTZlYjQ0MDIxNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTUxLDYgKzE1
MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BsYXlXYXNSZWZyZXNoZWQoKTsKICNlbmRpZgog
CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkgeyB9OworCiBwcm90ZWN0ZWQ6
CiAgICAgRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlLCBXZWJQYWdlJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmNwcAppbmRleCBlOGEzY2I3ZTUxNS4uYzg2ODhhYWE4OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZUNvbnZl
cnNpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTU0LDExICs1
NSwxMCBAQCBzdGF0aWMgSURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1NYXAoKQog
ICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0
ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwg
UmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBh
Z2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKIHsKICAg
ICAvLyBUaGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91
ciBtYXAuCi0gICAgQVNTRVJUKCFpZFRvSGlzdG9yeUl0ZW1NYXAoKS5jb250YWlucyhpdGVtSUQp
KTsKLQorICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3RpbmdJdGVtLCBvdmVyd3JpdGVF
eGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMgfHwgIWlkVG9IaXN0b3J5
SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwogICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNl
dChpdGVtSUQsIGl0ZW0ucHRyKCkpOwogfQogCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiAgICAg
YXV0byByZXN1bHQgPSBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5hZGQoaXRlbS0+aWRlbnRpZmllcigp
LCBpdGVtLnB0cigpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOwogCisgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgV2ViUHJvY2VzcyBw
aWQgJWkgc2V0dGluZyBpdGVtICVwIGZvciBpZCAlcyB3aXRoIHVybCAlcyIsIGdldHBpZCgpLCBp
dGVtLnB0cigpLCBpdGVtLT5pZGVudGlmaWVyKCkubG9nU3RyaW5nKCksIGl0ZW0tPnVybFN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZEFkZEl0ZW0odG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUoaXRlbS5n
ZXQoKSkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXggY2FkNzBlODYwMjkuLmM2ZmU0
Mzc4YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTQ0LDggKzQ0LDEyIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlSXRl
bShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAKLSAgICB2b2lk
IGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImLCBSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0g
ICAgCisgICAgZW51bSBjbGFzcyBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0geworICAgICAgICBZZXMs
CisgICAgICAgIE5vCisgICAgfTsKKyAgICB2b2lkIGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBSZWY8V2ViQ29yZTo6SGlzdG9y
eUl0ZW0+JiYsIHVpbnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKKwogICAg
IHZvaWQgY2xlYXIoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjMzYTJlZTZhMzkuLmRhNGMxZjQ3NjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTI1LDcgKzUy
NSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBtX3VzZXJBZ2VudCA9IHBhcmFtZXRlcnMudXNl
ckFnZW50OwogICAgIAogICAgIGlmICghcGFyYW1ldGVycy5pdGVtU3RhdGVzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmVzdG9yZVNlc3Npb25JbnRlcm5hbChwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMsIFdh
c1Jlc3RvcmVkQnlBUElSZXF1ZXN0OjpObyk7CisgICAgICAgIHJlc3RvcmVTZXNzaW9uSW50ZXJu
YWwocGFyYW1ldGVycy5pdGVtU3RhdGVzLCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdDo6Tm8sIFdl
YkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0ZW06Ok5vKTsKIAogICAg
IGlmIChwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc1ZhbGlkKCkpCiAgICAgICAgIHNldFNlc3Npb25J
RChwYXJhbWV0ZXJzLnNlc3Npb25JRCk7CkBAIC02NDEsNiArNjQxLDkgQEAgdm9pZCBXZWJQYWdl
OjplbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKCkKIAogdm9pZCBXZWJQYWdl
OjpyZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogeworICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhKTsKKyAgICBtX2RyYXdpbmdBcmVhLT5h
dHRhY2hEcmF3aW5nQXJlYSgpOworCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0
ZXJzLmFjdGl2aXR5U3RhdGUpCiAgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5h
Y3Rpdml0eVN0YXRlLCBmYWxzZSwgVmVjdG9yPENhbGxiYWNrSUQ+KCkpOwogICAgIGlmIChtX2xh
eWVySG9zdGluZ01vZGUgIT0gcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKQpAQCAtMTM5OSw3
ICsxNDAyLDcgQEAgdm9pZCBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWQKICAgICBpZiAoIWl0ZW0pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcywgV2ViUGFnZSAl
IiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJhY2svZm9yd2FyZCBVUkwgJXMiLCBtX3BhZ2VJ
RCwgaXRlbS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcs
ICJJbiBXZWJQcm9jZXNzIHBpZCAlaSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5n
IHRvIGJhY2svZm9yd2FyZCBVUkwgJXMiLCBnZXRwaWQoKSwgbV9wYWdlSUQsIGl0ZW0tPnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdOYXZpZ2F0
aW9uSUQpOwogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAgLTI0
ODMsMTggKzI0ODYsMjMgQEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3Qg
U3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWUKICAgICBleGVjdXRlRWRp
dGluZ0NvbW1hbmQoY29tbWFuZE5hbWUsIGFyZ3VtZW50KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpy
ZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGU+JiBpdGVtU3RhdGVzLCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCByZXN0b3JlZEJ5QVBJUmVx
dWVzdCkKK3ZvaWQgV2ViUGFnZTo6cmVzdG9yZVNlc3Npb25JbnRlcm5hbChjb25zdCBWZWN0b3I8
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYgaXRlbVN0YXRlcywgV2FzUmVzdG9yZWRCeUFQSVJl
cXVlc3QgcmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVy
d3JpdGVFeGlzdGluZ0l0ZW0gb3ZlcndyaXRlKQogewogICAgIGZvciAoY29uc3QgYXV0byYgaXRl
bVN0YXRlIDogaXRlbVN0YXRlcykgewogICAgICAgICBhdXRvIGhpc3RvcnlJdGVtID0gdG9IaXN0
b3J5SXRlbShpdGVtU3RhdGUpOwogICAgICAgICBoaXN0b3J5SXRlbS0+c2V0V2FzUmVzdG9yZWRG
cm9tU2Vzc2lvbihyZXN0b3JlZEJ5QVBJUmVxdWVzdCA9PSBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVz
dDo6WWVzKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQmFja0ZvcndhcmRMaXN0UHJveHkqPihj
b3JlUGFnZSgpLT5iYWNrRm9yd2FyZCgpLmNsaWVudCgpKS0+YWRkSXRlbUZyb21VSVByb2Nlc3Mo
aXRlbVN0YXRlLmlkZW50aWZpZXIsIFdURk1vdmUoaGlzdG9yeUl0ZW0pLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIHN0YXRpY19jYXN0PFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Kj4oY29yZVBhZ2UoKS0+
YmFja0ZvcndhcmQoKS5jbGllbnQoKSktPmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGl0ZW1TdGF0ZS5p
ZGVudGlmaWVyLCBXVEZNb3ZlKGhpc3RvcnlJdGVtKSwgbV9wYWdlSUQsIG92ZXJ3cml0ZSk7CiAg
ICAgfQogfQogCiB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uKGNvbnN0IFZlY3RvcjxCYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGU+JiBpdGVtU3RhdGVzKQogewotICAgIHJlc3RvcmVTZXNzaW9u
SW50ZXJuYWwoaXRlbVN0YXRlcywgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3Q6Olllcyk7CisgICAg
cmVzdG9yZVNlc3Npb25JbnRlcm5hbChpdGVtU3RhdGVzLCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVz
dDo6WWVzLCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6T3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpO
byk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2go
Y29uc3QgVmVjdG9yPFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYgaXRlbVN0YXRl
cykKK3sKKyAgICByZXN0b3JlU2Vzc2lvbkludGVybmFsKGl0ZW1TdGF0ZXMsIFdhc1Jlc3RvcmVk
QnlBUElSZXF1ZXN0OjpObywgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Ok92ZXJ3cml0ZUV4aXN0
aW5nSXRlbTo6WWVzKTsKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzNjNjBmMjcxZTUuLjdhYmVh
YWFkZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCisjaW5jbHVkZSAiV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9B
Y3Rpdml0eVN0YXRlLmg+CkBAIC0xMTg1LDkgKzExODYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAg
IGVudW0gY2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07Ci0gICAgdm9p
ZCByZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGU+JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QpOworICAgIHZvaWQgcmVzdG9yZVNlc3Np
b25JbnRlcm5hbChjb25zdCBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYsIFdhc1Jl
c3RvcmVkQnlBUElSZXF1ZXN0LCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6T3ZlcndyaXRlRXhp
c3RpbmdJdGVtKTsKICAgICB2b2lkIHJlc3RvcmVTZXNzaW9uKGNvbnN0IFZlY3RvcjxCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGU+Jik7CiAgICAgdm9pZCBkaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0o
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOworICAgIHZvaWQgdXBk
YXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goY29uc3QgVmVjdG9yPFdlYktpdDo6QmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlPiYpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgdm9pZCBzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmI5
MDIxZmE3MTQuLmY5YTYxY2Q4OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE0OCw2ICsxNDgsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdG9wTG9hZGluZ0ZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpCiAgICAgCiAgICAgUmVzdG9yZVNlc3Npb24oVmVjdG9yPFdlYktpdDo6
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBpdGVtU3RhdGVzKQorICAgIFVwZGF0ZUJhY2tGb3J3
YXJkTGlzdEZvclJlYXR0YWNoKFZlY3RvcjxXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZT4gaXRlbVN0YXRlcykKIAogICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA2YWVmYTBjZmY1MC4uNGZm
OTk0MzAxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0x
MDMsNiArMTAzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJ
RChDYWxsYmFja0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0
RG9jdW1lbnQoYm9vbCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIGF0dGFjaERyYXdpbmdBcmVhKCkg
b3ZlcnJpZGU7CisKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJy
aWRlOwogICAgIHZvaWQgYXBwbHlUcmFuc2llbnRab29tVG9QYWdlKGRvdWJsZSBzY2FsZSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tCmluZGV4IDczYmEzMjRiMGZkLi5mMjExZWZkY2MwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtOTQsOSArOTQsNyBAQCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFn
ZSYgd2ViUGFnZSwgYwogICAgIHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKICAgICBzZXRD
b2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CiAKLSAgICBMYXllclRyZWVDb250ZXh0
IGxheWVyVHJlZUNvbnRleHQ7Ci0gICAgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX2xh
eWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpOwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3Nh
Z2VzOjpEcmF3aW5nQXJlYVByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKDAs
IGxheWVyVHJlZUNvbnRleHQpKTsKKyAgICBhdHRhY2hEcmF3aW5nQXJlYSgpOwogfQogCiBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6flRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
KCkKQEAgLTEwNCw2ICsxMDIsMTQgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6On5U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSgpCiAgICAgbV9sYXllckZsdXNoU2NoZWR1bGVy
LmludmFsaWRhdGUoKTsKIH0KIAorCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjphdHRhY2hEcmF3aW5nQXJlYSgpCit7CisgICAgTGF5ZXJUcmVlQ29udGV4dCBsYXllclRyZWVD
b250ZXh0OworICAgIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9sYXllckhvc3RpbmdD
b250ZXh0LT5jb250ZXh0SUQoKTsKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6RHJhd2lu
Z0FyZWFQcm94eTo6RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVD
b250ZXh0KSk7Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldE5l
ZWRzRGlzcGxheSgpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYTVmNzBkNzNjMTUuLmI5ODNmNmMwMjYyIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgt
MDQtMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ug
YmFjayBmb3J3YXJkIGNhY2hlIHdvcmsgd2l0aCBwcm9jZXNzIHN3YXBwaW5nLgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzg2NzY2MDQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg0NzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tOgorCiAyMDE4LTA0LTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW0VXU10gQnVpbGQgYm90IHNob3Vs
ZCBjbGVhbiB1c2VyIHRlbXAgZGlyZWN0b3J5IGVhY2ggdGltZS4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCmluZGV4IGIxZjFhNzk1Yjg2Li43ZDg2NGZlNmFjMyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nl
c3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0zNDksMTcgKzM0OSwxMyBAQCBURVNUKFByb2Nlc3NT
d2FwLCBCYWNrKQogCiAgICAgRVhQRUNUX0VRKFtyZWNlaXZlZE1lc3NhZ2VzIGNvdW50XSwgMnUp
OwogICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0
cmluZzpAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiBmYWxzZSwgYW5kIHdpbmRvdy5oaXN0
b3J5LnN0YXRlIGlzOiBudWxsIl0pOworICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2Vz
LmdldCgpWzFdIGlzRXF1YWxUb1N0cmluZzpAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiB0
cnVlLCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCJdKTsKIAotICAg
IC8vIEZJWE1FOiBXZSdkIGxpa2UgdG8gZ2V0IHRoZSBwYWdlIHJlc3RvcmluZyBmcm9tIHRoZSBw
YWdlIGNhY2hlIGxpa2UgYmVmb3JlIHByb2Nlc3Mgc3dhcHBpbmcsIHdoaWNoIHdpbGwgbWFrZSBQ
ZXJzaXN0ZWQgYmUgInRydWUiCi0gICAgLy8gRm9yIG5vdyBpdCdzIGV4cGVjdGVkIHRvIGJlIGZh
bHNlIgotICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdIGlzRXF1YWxU
b1N0cmluZzpAIlBhZ2VTaG93IGNhbGxlZC4gUGVyc2lzdGVkOiBmYWxzZSwgYW5kIHdpbmRvdy5o
aXN0b3J5LnN0YXRlIGlzOiBvbmxvYWRDYWxsZWQiXSk7CisgICAgRVhQRUNUX0VRKDJ1LCBzZWVu
UElEcy5zaXplKCkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHBpZDEgPT0gcGlkMik7CiAgICAgRVhQ
RUNUX0ZBTFNFKHBpZDIgPT0gcGlkMyk7Ci0KLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIGxp
a2UgdG8gZ2V0IHByb2Nlc3MgY2FjaGluZyBoYXBwZW5pbmcgc3VjaCB0aGF0IHBpZDEgYW5kIHBp
ZDMgYXJlIGVxdWFsLgotICAgIC8vIEJ1dCBmb3Igbm93IHRoZXkgc2hvdWxkIG5vdCBiZS4KLSAg
ICBFWFBFQ1RfRkFMU0UocGlkMSA9PSBwaWQzKTsKKyAgICBFWFBFQ1RfVFJVRShwaWQxID09IHBp
ZDMpOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNzkxLDQgKzc4Nyw4NCBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBPbmVQcmV2aW91c1Byb2Nlc3NSZW1haW5zKQogICAgIEVYUEVDVF9FUSgydSwg
W3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRdKTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIq
IHBhZ2VDYWNoZTFCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAorPHNjcmlwdD4KK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdwYWdlc2hvdycsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKGV2ZW50
LnBlcnNpc3RlZCkKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucHNvbi5w
b3N0TWVzc2FnZSgiV2FzIHBlcnNpc3RlZCIpOworfSk7Cis8L3NjcmlwdD4KKylQU09OUkVTT1VS
Q0UiOworCitURVNUKFByb2Nlc3NTd2FwLCBQYWdlQ2FjaGUxKQoreworICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMo
W1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dl
YlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAg
ICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAg
IFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjE6Ly9ob3N0L21haW4uaHRt
bCIgdG9EYXRhOnBhZ2VDYWNoZTFCeXRlc107CisgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21V
UkxTdHJpbmc6QCJwc29uMjovL2hvc3QvbWFpbi5odG1sIiB0b0RhdGE6cGFnZUNhY2hlMUJ5dGVz
XTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04xIl07CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQU09OMiJd
OworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQU09OTWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW3dlYlZpZXdDb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkg
bmFtZTpAInBzb24iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAicHNvbjE6Ly9ob3N0L21haW4uaHRtbCJdXTsKKworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRBZnRlckxvYWQxID0gW3dlYlZpZXcg
X3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIEVYUEVDVF9FUSgxdSwgW3Byb2Nlc3NQb29s
IF93ZWJQcm9jZXNzQ291bnRdKTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjI6Ly9ob3N0L21haW4uaHRtbCJd
XTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRB
ZnRlckxvYWQyID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIEVYUEVD
VF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRdKTsKKyAgICBFWFBFQ1RfTkUo
cGlkQWZ0ZXJMb2FkMSwgcGlkQWZ0ZXJMb2FkMik7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKKyAgICByZWNl
aXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gcGlkQWZ0ZXJMb2FkMyA9IFt3ZWJWaWV3
IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9v
bCBfd2ViUHJvY2Vzc0NvdW50XSk7CisgICAgRVhQRUNUX0VRKHBpZEFmdGVyTG9hZDEsIHBpZEFm
dGVyTG9hZDMpOworICAgIEVYUEVDVF9FUSgxdSwgW3JlY2VpdmVkTWVzc2FnZXMgY291bnRdKTsK
KyAgICBFWFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJp
bmc6QCJXYXMgcGVyc2lzdGVkIiBdKTsKKyAgICBFWFBFQ1RfRVEoMnUsIHNlZW5QSURzLnNpemUo
KSk7CisKKyAgICBbd2ViVmlldyBnb0ZvcndhcmRdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKwor
ICAgIGF1dG8gcGlkQWZ0ZXJMb2FkNCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07
CisKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50XSk7Cisg
ICAgRVhQRUNUX0VRKHBpZEFmdGVyTG9hZDIsIHBpZEFmdGVyTG9hZDQpOworICAgIEVYUEVDVF9F
USgydSwgW3JlY2VpdmVkTWVzc2FnZXMgY291bnRdKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVjZWl2
ZWRNZXNzYWdlcy5nZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJXYXMgcGVyc2lzdGVkIiBdKTsK
KyAgICBFWFBFQ1RfRVEoMnUsIHNlZW5QSURzLnNpemUoKSk7Cit9CisKICNlbmRpZiAvLyBXS19B
UElfRU5BQkxFRAo=
</data>
<flag name="review"
          id="356652"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338391</attachid>
            <date>2018-04-19 20:31:56 -0700</date>
            <delta_ts>2018-04-19 21:55:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>pc1.txt</filename>
            <type>text/plain</type>
            <size>73558</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxOWJjMjQ4Zjg0Mi4uNjVlYzhlMTFkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOC0wNC0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBiYWNrIGZvcndhcmQgY2FjaGUgd29yayB3aXRoIHByb2Nlc3Mgc3dh
cHBpbmcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODY3NjYwND4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3OTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBEdW1lei4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3Zl
cnJpZGVFbmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVsb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0p
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorCiAyMDE4LTA0LTE4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3aGVuIFdLX0FM
VEVSTkFURV9GUkFNRVdPUktTX0RJUiBpcyBzZXQgdG8gbm9uLWVtcHR5IHZhbHVlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA4Nzk5ZGE2ZTAwZS4uOGEwNzE1MjJmZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQxNiw3ICsxNDE2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAg
ICAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9jdW1lbnRMb2FkZXItPm92ZXJy
aWRlRW5jb2RpbmcoKSk7CiAKLSAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIo
KSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5w
dHIoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5hdmln
YXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBuZXdEb2N1bWVudExv
YWRlcikKQEAgLTE0NTUsMTAgKzE0NTUsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1
bWVudExvYWRlciogbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHR5cGUgPSBGcmFtZUxvYWRU
eXBlOjpSZWxvYWQ7CiAgICAgfQogCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihuZXdEb2N1
bWVudExvYWRlciwgdHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIFtd
IHsgfSk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihuZXdEb2N1bWVudExvYWRlciwgdHlw
ZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5hdmlnYXRpb25Qb2xpY3lD
aGVjazo6UmVxdWlyZSwgW10geyB9KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhE
b2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHR5cGUs
IEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdHlwZSwgRm9ybVN0YXRlKiBmb3Jt
U3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkwsIE5hdmlnYXRpb25Qb2xpY3lDaGVjaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFJldGFpbiBiZWNhdXNlIGRpc3BhdGNoQmVm
b3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBpdC4KICAgICBS
ZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNjQzLDcgKzE2NDMsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29k
aW5nKQogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIAotICAg
IGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxv
YWQsIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBbXSB7IH0pOworICAgIGxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxvYWQs
IDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOYXZpZ2F0aW9uUG9saWN5Q2hl
Y2s6OlJlcXVpcmUsIFtdIHsgfSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChPcHRp
b25TZXQ8UmVsb2FkT3B0aW9uPiBvcHRpb25zKQpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiAgICAg
ICAgIHJldHVybiBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7CiAgICAgfTsKICAgICAKLSAgICBsb2Fk
V2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZnJhbWVMb2FkVHlwZUZvclJlbG9hZE9w
dGlvbnMob3B0aW9ucyksIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBbXSB7
IH0pOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBmcmFtZUxvYWRU
eXBlRm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMOjpZZXMsIE5hdmlnYXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgW10geyB9KTsKIH0KIAog
dm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xp
Y3kgY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kpCkBAIC0xODU3LDkgKzE4NTcsOSBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIGlmIChtX2xvYWRpbmdG
cm9tQ2FjaGVkUGFnZSAmJiBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpCiAgICAgICAgIGNh
Y2hlZFBhZ2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UoKmhpc3RvcnkoKS5wcm92aXNp
b25hbEl0ZW0oKSwgbV9mcmFtZS5wYWdlKCkpOwogCi0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNv
cmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZp
b3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVzJyIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlTG9h
ZGluZyAlczogQWJvdXQgdG8gY29tbWl0IHByb3Zpc2lvbmFsIGxvYWQgZnJvbSBwcmV2aW91cyBV
UkwgJyVzJyB0byBuZXcgVVJMICclcycgd2l0aCBjYWNoZWQgcGFnZSAlcCIsIG1fZnJhbWUudHJl
ZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICBtX2ZyYW1l
LmRvY3VtZW50KCkgPyBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIiwKLSAgICAgICAgcGRsID8gcGRsLT51
cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxu
byBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iKTsKKyAgICAgICAgcGRsID8gcGRsLT51cmwo
KS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxubyBw
cm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iLCBjYWNoZWRQYWdlLmdldCgpKTsKIAogICAgIHdp
bGxUcmFuc2l0aW9uVG9Db21taXR0ZWQoKTsKIApAQCAtMzQ1OSwxMiArMzQ1OSwxNCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVt
LCBGcmFtZUxvYWRUeXBlIGxvYQogCiAgICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IElu
aXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duOwogCisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY3Vy
cmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3lHdWFyZChtX2N1cnJlbnRMb2FkU2hv
dWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5LCBuYXZpZ2F0aW9uUG9saWN5Q2hlY2sgIT0gTmF2aWdh
dGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOworCiAgICAgaWYgKENhY2hlZFBhZ2UqIGNhY2hlZFBh
Z2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLmdldChpdGVtLCBtX2ZyYW1lLnBhZ2UoKSkpIHsK
ICAgICAgICAgYXV0byBkb2N1bWVudExvYWRlciA9IGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVy
KCk7CiAgICAgICAgIG1fY2xpZW50LnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKCpkb2N1bWVu
dExvYWRlcik7CiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKHsg
Km1fZnJhbWUuZG9jdW1lbnQoKSwgZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSwgaW5pdGlhdGVk
QnlNYWluRnJhbWUsIGxvYWRUeXBlLCBmYWxzZSB9KTsKICAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7Ci0gICAgICAgIGxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIsIGxvYWRUeXBlLCAwLCBBbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkw6OlllcywgW10geyB9KTsKKyAgICAgICAgbG9hZFdpdGhEb2N1bWVu
dExvYWRlcihkb2N1bWVudExvYWRlciwgbG9hZFR5cGUsIDAsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBuYXZpZ2F0aW9uUG9saWN5Q2hlY2ssIFtdIHsgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTM1NTAsOCArMzU1Miw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUg
bG9hCiAgICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdEZvck9y
aWdpbmFsVVJMLCBpbml0aWF0ZWRCeU1haW5GcmFtZSwgbG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Np
b24sIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH07CiAgICAgfQogCi0gICAg
U2V0Rm9yU2NvcGU8Ym9vbD4gY3VycmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3lH
dWFyZChtX2N1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5LCBuYXZpZ2F0aW9u
UG9saWN5Q2hlY2sgIT0gTmF2aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOwotCiAgICAgbG9h
ZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBs
b2FkVHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIFtdIHsgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZDAwNzM1NDIyNGEuLjUzZmFh
NDkzZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzYzLDcgKzM2Myw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3QmJiwg
RXZlbnQqKTsKIAotICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRl
ciosIEZyYW1lTG9hZFR5cGUsIEZvcm1TdGF0ZSosIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2FsbHMgY29udGludWVMb2FkQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5CisgICAgdm9pZCBsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiwgRnJhbWVMb2FkVHlwZSwgRm9ybVN0YXRlKiwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7IC8vIENhbGxzIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeQogICAgIHZv
aWQgbG9hZChEb2N1bWVudExvYWRlciopOyAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9hZGVy
CiAKICAgICB2b2lkIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgTG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUs
IEZvcm1TdGF0ZSosIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExvYWRlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3MDRkYTM2Zjk1Ny4uYjkzMDE4NDkxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIzIEBACisy
MDE4LTA0LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIGJhY2sgZm9yd2FyZCBjYWNoZSB3b3JrIHdpdGggcHJvY2VzcyBzd2FwcGluZy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM4Njc2NjA0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NDc5MworCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgIFdlIHByZXZpb3VzbHkgc2F2ZWQgb2xkIHByb2Nlc3NlcyBpbiAiU3VzcGVu
ZGVkUGFnZVByb3h5IiBvYmplY3RzLgorICAgICAgICBOb3cgd2UgcmV1c2UgdGhlbSB3aGVuIGdv
aW5nIGJhY2sgb3IgZm9yd2FyZC4KKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKwor
ICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OnN1c3BlbmRlZFBhZ2UgY29uc3QpOgorCisgICAgICAgIFRl
YWNoIE5hdmlnYXRpb24gb2JqZWN0cyB0aGVpciBzb3VyY2UgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bXM6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAg
KEFQSTo6TmF2aWdhdGlvbjo6TmF2aWdhdGlvbik6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246
OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbi5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAoQVBJ
OjpOYXZpZ2F0aW9uOjp0YXJnZXRJdGVtIGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlv
bjo6ZnJvbUl0ZW0gY29uc3QpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpiYWNrRm9yd2Fy
ZExpc3RJdGVtKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bWVzc2Fn
ZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRl
ZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVu
ZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6U3Vz
cGVuZGVkUGFnZVByb3h5Ojp3ZWJQcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpT
dXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBh
Z2VQcm94eTo6b3JpZ2luIGNvbnN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJh
Y2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6fldl
YkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
cGFnZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRl
bSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUFsbEl0ZW1zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdDo6ZmlsdGVyZWRJdGVtU3RhdGVzIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjppdGVtU3RhdGVzIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
TmF2aWdhdGlvblN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRl
OjpjcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYXZp
Z2F0aW9uU3RhdGU6OmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1heWJlQ3JlYXRlU3Vz
cGVuZGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dl
YlByb2Nlc3NXaXRoSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb25uZWN0aW9u
V2lsbE9wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFjaFRvUHJvY2Vz
c0Zvck5hdmlnYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlcjo6d2ViUGFnZUVu
dGVyaW5nV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NMaWZldGltZVRy
YWNrZXI6OmNvbm5lY3Rpb25XaWxsT3Blbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rl
clN1c3BlbmRlZFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1
bnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN1c3BlbmRXZWJQYWdlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZnJhbWVDcmVhdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmF0
dGFjaERyYXdpbmdBcmVhKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNr
Rm9yd2FyZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjphZGRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9jcmVkZW50aWFsc01lc3Nlbmdlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cmVzdG9yZVNlc3Npb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc3RvcmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
QmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmF0dGFjaERyYXdp
bmdBcmVhKTogRm9yY2UgYSByZWF0dGFjaG1lbnQgb2YgdGhlIGRyYXdpbmcKKyAgICAgICAgICBh
cmVhIGZyb20gYSByZXN1bWVkIFdlYlByb2Nlc3MgdG8gdGhlIFVJUHJvY2VzcyAodG8gbWFrZSB0
aGUgcGFnZSBjYWNoZSB3b3JrKQorCiAyMDE4LTA0LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFdpbmRvd1Byb3h5Q29udHJvbGxlciB0byBXaW5k
b3dQcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA0NTU2NmFjNjY1Ni4uN2E2Njhm
YTg3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC00MCw2ICs0MCw3IEBAIGV4dGVy
biAiQyIgewogI2VuZGlmCiAKICNkZWZpbmUgV0VCS0lUMl9MT0dfQ0hBTk5FTFMoTSkgXAorICAg
IE0oQmFja0ZvcndhcmQpIFwKICAgICBNKENhY2hlU3RvcmFnZSkgXAogICAgIE0oQ29udGV4dE1l
bnUpIFwKICAgICBNKERyYWdBbmREcm9wKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IGE3MzhjN2RhMzNiLi4zMmU3Yzc4MGY2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTExLDkgKzExMiwxNyBAQCBib29s
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Jc0luU2FtZURvY3VtZW50KGNvbnN0IFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mCiAgICAgcmV0dXJuIGRvY3VtZW50VHJlZXNBcmVFcXVhbChtYWlu
RnJhbWVTdGF0ZSwgb3RoZXJNYWluRnJhbWVTdGF0ZSk7CiB9CiAKLXZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCit2
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFn
ZVByb3h5KiBwYWdlKQogewotICAgIG1fc3VzcGVuZGVkUGFnZSA9ICZwYWdlOworICAgIEFTU0VS
VCghbV9zdXNwZW5kZWRQYWdlIHx8IHBhZ2UgPT0gbnVsbHB0cik7CisgICAgbV9zdXNwZW5kZWRQ
YWdlID0gcGFnZTsKIH0KIAorI2lmICFMT0dfRElTQUJMRUQKK2NvbnN0IGNoYXIqIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OmxvZ2dpbmdTdHJpbmcoKQoreworICAgIHJldHVybiBkZWJ1Z1N0cmlu
ZygiQmFjay9mb3J3YXJkIGl0ZW0gSUQgIiwgaXRlbUlEKCkubG9nU3RyaW5nKCksICIsIG9yaWdp
bmFsIFVSTCAiLCBvcmlnaW5hbFVSTCgpLCAiLCBjdXJyZW50IFVSTCAiLCB1cmwoKSwgbV9zdXNw
ZW5kZWRQYWdlID8gIihoYXMgYSBzdXNwZW5kZWQgcGFnZSkiIDogIiIpOworfQorI2VuZGlmIC8v
ICFMT0dfRElTQUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggM2MxY2MyOTliMWIuLmJhNzQ2
YmVlOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oCkBAIC02OCw3ICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgVmlld1NuYXBzaG90KiBzbmFwc2hv
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLnNuYXBzaG90LmdldCgpOyB9CiAgICAgdm9p
ZCBzZXRTbmFwc2hvdChSZWZQdHI8Vmlld1NuYXBzaG90PiYmIHNuYXBzaG90KSB7IG1faXRlbVN0
YXRlLnNuYXBzaG90ID0gV1RGTW92ZShzbmFwc2hvdCk7IH0KICNlbmRpZgotICAgIHZvaWQgc2V0
U3VzcGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmKTsKKyAgICB2b2lkIHNldFN1c3BlbmRl
ZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5Kik7CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNw
ZW5kZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zdXNwZW5kZWRQYWdlOyB9CisKKyNpZiAhTE9H
X0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nZ2luZ1N0cmluZygpOworI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUmJiwgdWludDY0X3QgcGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAppbmRleCBiOTU3NTNjNjc1MC4uNTNkZGJiNmJmYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNp
bmNsdWRlICJXZWJOYXZpZ2F0aW9uU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRp
ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwpAQCAtMzksMTkgKzQwLDIxIEBAIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdhdGlv
blN0YXRlJiBzdGF0ZSkKIHsKIH0KIAotTmF2aWdhdGlvbjo6TmF2aWdhdGlvbihXZWJOYXZpZ2F0
aW9uU3RhdGUmIHN0YXRlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorTmF2
aWdhdGlvbjo6TmF2aWdhdGlvbihXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRl
bSkKICAgICA6IG1fbmF2aWdhdGlvbklEKHN0YXRlLmdlbmVyYXRlTmF2aWdhdGlvbklEKCkpCiAg
ICAgLCBtX29yaWdpbmFsUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQogICAgICwgbV9jdXJyZW50
UmVxdWVzdChtX29yaWdpbmFsUmVxdWVzdCkKKyAgICAsIG1fZnJvbUl0ZW0oZnJvbUl0ZW0pCiB7
CiAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChtX29yaWdpbmFsUmVxdWVzdC51cmwoKSk7CiB9
CiAKLU5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZEZyYW1l
TG9hZFR5cGUpCitOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3Rh
dGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGZyb21JdGVtLCBGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkK
ICAgICA6IG1fbmF2aWdhdGlvbklEKHN0YXRlLmdlbmVyYXRlTmF2aWdhdGlvbklEKCkpCi0gICAg
LCBtX29yaWdpbmFsUmVxdWVzdChpdGVtLnVybCgpKQorICAgICwgbV9vcmlnaW5hbFJlcXVlc3Qo
dGFyZ2V0SXRlbS51cmwoKSkKICAgICAsIG1fY3VycmVudFJlcXVlc3QobV9vcmlnaW5hbFJlcXVl
c3QpCi0gICAgLCBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0oJml0ZW0pCisgICAgLCBtX3RhcmdldEl0
ZW0oJnRhcmdldEl0ZW0pCisgICAgLCBtX2Zyb21JdGVtKGZyb21JdGVtKQogICAgICwgbV9iYWNr
Rm9yd2FyZEZyYW1lTG9hZFR5cGUoYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKQogewogfQpAQCAt
NzMsOSArNzYsOSBAQCB2b2lkIE5hdmlnYXRpb246OmFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0
IFVSTCYgdXJsKQogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotV1RGOjpTdHJpbmcgTmF2aWdhdGlv
bjo6bG9nZ2luZ1N0cmluZygpIGNvbnN0Citjb25zdCBjaGFyKiBOYXZpZ2F0aW9uOjpsb2dnaW5n
U3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygiTW9zdCByZWNlbnQgVVJM
OiAiLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiIEJhY2svZm9yd2FyZCBsaXN0
IGl0ZW0gVVJMOiAnIiwgbV9iYWNrRm9yd2FyZExpc3RJdGVtID8gbV9iYWNrRm9yd2FyZExpc3RJ
dGVtLT51cmwoKSA6IFN0cmluZyB7IH0sIFN0cmluZzo6Zm9ybWF0KCInICglcCkiLCBtX2JhY2tG
b3J3YXJkTGlzdEl0ZW0uZ2V0KCkpKTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIk1vc3QgcmVj
ZW50IFVSTDogIiwgbV9jdXJyZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBCYWNrL2Zvcndh
cmQgbGlzdCBpdGVtIFVSTDogJyIsIG1fdGFyZ2V0SXRlbSA/IG1fdGFyZ2V0SXRlbS0+dXJsKCkg
OiBTdHJpbmcgeyB9LCBTdHJpbmc6OmZvcm1hdCgiJyAoJXApIiwgbV90YXJnZXRJdGVtLmdldCgp
KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmgKaW5kZXggOTQ3ZmIzY2ZkZTYuLjk2MzJlMmI5OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKQEAgLTQ5LDE0ICs0OSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hdmlnYXRpb24oc3RhdGUpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgUmVmPE5hdmlnYXRpb24+IGNyZWF0ZShXZWJLaXQ6OldlYk5hdmlnYXRp
b25TdGF0ZSYgc3RhdGUsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgV2Vi
Q29yZTo6RnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUpCisgICAgc3RhdGlj
IFJlZjxOYXZpZ2F0aW9uPiBjcmVhdGUoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRl
LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0ZW0sIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgYmFj
a0ZvcndhcmRGcmFtZUxvYWRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTmF2aWdhdGlvbihzdGF0ZSwgaXRlbSwgYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hdmlnYXRpb24oc3RhdGUsIHRhcmdldEl0ZW0s
IGZyb21JdGVtLCBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgUmVmPE5hdmlnYXRpb24+IGNyZWF0ZShXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYgc3Rh
dGUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCisgICAgc3RhdGljIFJlZjxO
YXZpZ2F0aW9uPiBjcmVhdGUoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGZyb21JdGVtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF2
aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShyZXF1ZXN0KSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOYXZpZ2F0aW9uKHN0YXRlLCBXVEZNb3ZlKHJlcXVlc3QpLCBmcm9tSXRlbSkpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgfk5hdmlnYXRpb24oKTsKQEAgLTcxLDcgKzcxLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KGJvb2wgaXNSZWRpcmVj
dCkgeyBtX2lzUmVkaXJlY3QgPSBpc1JlZGlyZWN0OyB9CiAgICAgYm9vbCBjdXJyZW50UmVxdWVz
dElzUmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzUmVkaXJlY3Q7IH0KIAotICAgIFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYmFja0ZvcndhcmRMaXN0SXRlbSgpIHsgcmV0dXJu
IG1fYmFja0ZvcndhcmRMaXN0SXRlbS5nZXQoKTsgfQorICAgIFdlYktpdDo6V2ViQmFja0Zvcndh
cmRMaXN0SXRlbSogdGFyZ2V0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0SXRlbS5nZXQo
KTsgfQorICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0ZW0oKSBjb25z
dCB7IHJldHVybiBtX2Zyb21JdGVtLmdldCgpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUxvYWRUeXBlPiBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsgfQogCiAgICAgdm9pZCBhcHBlbmRSZWRpcmVj
dGlvblVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKQEAgLTkwLDEzICs5MSwxMyBAQCBwdWJsaWM6
CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj4m
IG9wZW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlbmVyOyB9CiAKICNpZiAhTE9HX0RJU0FCTEVE
Ci0gICAgV1RGOjpTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0OworICAgIGNvbnN0IGNoYXIq
IGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmKTsKLSAgICBOYXZpZ2F0aW9u
KFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwotICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlKTsKKyAgICBOYXZp
Z2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0ZW0pOworICAgIE5h
dmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
ZnJvbUl0ZW0sIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUpOwogCiAgICAgdWludDY0X3QgbV9uYXZp
Z2F0aW9uSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0
OwpAQCAtMTA3LDcgKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNlRG93
bmxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsgZmFsc2UgfTsKIAotICAg
IFJlZlB0cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IG1fYmFja0ZvcndhcmRMaXN0
SXRlbTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBtX3Rhcmdl
dEl0ZW07CisgICAgUmVmUHRyPFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV9mcm9t
SXRlbTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lTG9hZFR5cGU+IG1fYmFja0Zv
cndhcmRGcmFtZUxvYWRUeXBlOwogICAgIGJvb2wgbV9pc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5h
dmlnYXRpb24geyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQ2NF90
LCB1aW50NjRfdD4+IG1fb3BlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDZlNzhlMjJlZDI2Li5hMDlhMjBhMjg1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpA
QCAtNDc2LDYgKzQ3Niw3IEBAIHN0YXRpYyB2b2lkIHRyeUFwcExpbmsoUmVmPEFQSTo6TmF2aWdh
dGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBTdHJpCiAKIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9u
PiYmIG5hdmlnYXRpb25BY3Rpb24sIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYg
bGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VySW5mbykKIHsKKyAgICBBU1NFUlQod2ViUGFnZVBy
b3h5Lm1haW5GcmFtZSgpKTsKICAgICBTdHJpbmcgbWFpbkZyYW1lVVJMU3RyaW5nID0gd2ViUGFn
ZVByb3h5Lm1haW5GcmFtZSgpLT51cmwoKTsKICAgICBib29sIHN1YmZyYW1lTmF2aWdhdGlvbiA9
IG5hdmlnYXRpb25BY3Rpb24tPnRhcmdldEZyYW1lKCkgJiYgIW5hdmlnYXRpb25BY3Rpb24tPnRh
cmdldEZyYW1lKCktPmlzTWFpbkZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDQ0NjBmNDQ3ZTExLi42ZTA2NTNmZmUwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBA
IC0zMSw5ICszMSwxMyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5o
PgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNp
ZiAhTE9HX0RJU0FCTEVECkBAIC01NSw2ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PElQ
Qzo6U3RyaW5nUmVmZXJlbmNlPiYgbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgp
CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckZyYW1lIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhIik7CiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoIkRpZFJlYWNoTGF5b3V0TWlsZXN0b25lIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoIkRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiIpOwogICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWRTYXZlVG9QYWdlQ2FjaGUiKTsKICAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwogICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7CkBAIC02Miw2ICs2Nyw3IEBA
IHN0YXRpYyBjb25zdCBIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmNlPiYgbWVzc2FnZU5hbWVz
VG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiAgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
IlBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSIpOwogICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJTZXRSZW5kZXJUcmVlU2l6ZSIpOwogICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKCJTZXRTdGF0dXNUZXh0Iik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoIlNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MiKTsKICAgICB9KTsKIAogICAgIHJl
dHVybiBtZXNzYWdlTmFtZXM7CkBAIC03MiwyMyArNzgsMzIgQEAgU3VzcGVuZGVkUGFnZVByb3h5
OjpTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkm
IHByb2MKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9wcm9jZXNzKCZwcm9jZXNzKQogICAg
ICwgbV9iYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0pCisgICAgLCBtX29yaWdpbihTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21VUkwoeyBQYXJzZWRVUkxTdHJpbmcsIGl0ZW0udXJsKCkgfSkpCiB7Ci0g
ICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtLT5zZXRTdXNwZW5kZWRQYWdlKCp0aGlzKTsKKyAgICBt
X2JhY2tGb3J3YXJkTGlzdEl0ZW0tPnNldFN1c3BlbmRlZFBhZ2UodGhpcyk7CisgICAgbV9wcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KCp0aGlzKTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUp
LCBtX3BhZ2UucGFnZUlEKCkpOwogfQogCiBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQ
YWdlUHJveHkoKQogewotICAgIGlmIChtX3Byb2Nlc3MpCisgICAgaWYgKG1fcHJvY2Vzcykgewog
ICAgICAgICBtX3Byb2Nlc3MtPnN1c3BlbmRlZFBhZ2VXYXNEZXN0cm95ZWQoKnRoaXMpOworICAg
ICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkudW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94
eSgqdGhpcyk7CisgICAgfQorCisgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtLT5zZXRTdXNwZW5k
ZWRQYWdlKG51bGxwdHIpOwogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6d2ViUHJvY2Vz
c0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHByb2Nlc3MsICZwcm9jZXNzID09IG1fcHJvY2Vzcyk7CisKKyAgICBtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkudW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eSgqdGhpcyk7CiAgICAgbV9wcm9j
ZXNzID0gbnVsbHB0cjsKIAogICAgIG1fcGFnZS5zdXNwZW5kZWRQYWdlUHJvY2Vzc0Nsb3NlZCgq
dGhpcyk7CisgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtLT5zZXRTdXNwZW5kZWRQYWdlKG51bGxw
dHIpOwogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCgpCkBAIC0x
MTAsNyArMTI1LDcgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2QKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hp
bGVTdXNwZW5kZWQoKS5jb250YWlucyhkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKQorICAgIGlmICgh
bWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVz
c2FnZU5hbWUoKSkpCiAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdl
UHJveHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVj
b2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKICNlbmRpZgogfQpAQCAtMTE4
LDcgKzEzMyw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kCiAjaWYgIUxPR19ESVNBQkxFRAog
Y29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigiLCBTdHJpbmc6OmZvcm1hdCgiJXAiLCB0aGlzKSwg
InBhZ2UgSUQgIiwgU3RyaW5nOjpudW1iZXIobV9wYWdlLnBhZ2VJRCgpKSwgIiwgbV9maW5pc2hl
ZFN1c3BlbmRpbmcgIiwgU3RyaW5nOjpudW1iZXIobV9maW5pc2hlZFN1c3BlbmRpbmcpLCAiKSIp
OworICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKCIsIFN0cmluZzo6Zm9ybWF0KCIlcCIsIHRoaXMp
LCAiIHBhZ2UgSUQgIiwgU3RyaW5nOjpudW1iZXIobV9wYWdlLnBhZ2VJRCgpKSwgIiwgbV9maW5p
c2hlZFN1c3BlbmRpbmcgIiwgU3RyaW5nOjpudW1iZXIobV9maW5pc2hlZFN1c3BlbmRpbmcpLCAi
KSIpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmgKaW5kZXggY2Q5Y2JjMDc1YzQuLjk5ZDliMGM2NWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDgsNiArNDksNyBAQCBw
dWJsaWM6CiAgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9
CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNz
OyB9CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja0ZvcndhcmRMaXN0SXRlbTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KIAogICAgIGJvb2wgZmlu
aXNoZWRTdXNwZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9maW5pc2hlZFN1c3BlbmRpbmc7IH0K
IApAQCAtNjUsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwog
ICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcm9jZXNzOwogICAgIFJlZjxXZWJCYWNrRm9yd2FyZExp
c3RJdGVtPiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW07CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIG1fb3JpZ2luOwogCiAgICAgYm9vbCBtX2ZpbmlzaGVkU3VzcGVuZGluZyB7IGZhbHNl
IH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKaW5kZXggZjBjMzk0MWZhZDcuLmM4M2VlNjBjZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTI3LDEwICsyNywxMyBAQAogI2lu
Y2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CisjaW5jbHVk
ZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDQsMTAgKzQ3LDEzIEBAIFdlYkJhY2tG
b3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAs
IG1fY3VycmVudEluZGV4KDApCiAgICAgLCBtX2NhcGFjaXR5KERlZmF1bHRDYXBhY2l0eSkKIHsK
KyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBDcmVhdGVkIFdlYkJhY2tGb3J3
YXJkTGlzdCAlcCIsIHRoaXMpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9y
d2FyZExpc3QoKQogeworICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIERlc3Ry
b3lpbmcgV2ViQmFja0ZvcndhcmRMaXN0ICVwIiwgdGhpcyk7CisKICAgICAvLyBBIFdlYkJhY2tG
b3J3YXJkTGlzdCBzaG91bGQgbmV2ZXIgYmUgZGVzdHJveWVkIHVubGVzcyBpdCdzIGFzc29jaWF0
ZWQgcGFnZSBoYXMgYmVlbiBjbG9zZWQgb3IgaXMgaW52YWxpZC4KICAgICBBU1NFUlQoKCFtX3Bh
Z2UgJiYgIW1faGFzQ3VycmVudEluZGV4KSB8fCAhbV9wYWdlLT5pc1ZhbGlkKCkpOwogfQpAQCAt
NjcsNiArNzMsOCBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3Q6
Oml0ZW1Gb3JJRChjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudAogCiB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdDo6cGFnZUNsb3NlZCgpCiB7CisgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9y
d2FyZCkgV2ViQmFja0ZvcndhcmRMaXN0ICVwIGhhZCBpdHMgcGFnZSBjbG9zZWQgd2l0aCBjdXJy
ZW50IHNpemUgJXp1IiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CisKICAgICAvLyBXZSBzaG91
bGQgaGF2ZSBhbHdheXMgc3RhcnRlZCBvdXQgd2l0aCBhbiBtX3BhZ2UgYW5kIHdlIHNob3VsZCBu
ZXZlciBjbG9zZSB0aGUgcGFnZSB0d2ljZS4KICAgICBBU1NFUlQobV9wYWdlKTsKIApAQCAtMTU2
LDYgKzE2NCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtPiYmIG5ld0l0ZW0pCiAgICAgICAgICAgICBtX2VudHJpZXMuaW5zZXJ0
KG1fY3VycmVudEluZGV4LCBXVEZNb3ZlKG5ld0l0ZW0pKTsKICAgICB9CiAKKyAgICBMT0coQmFj
a0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNrRm9yd2FyZExpc3QgJXAgYWRkZWQgYW4g
aXRlbS4gQ3VycmVudCBzaXplICV6dSwgY3VycmVudCBpbmRleCAlenUsIHRocmV3IGF3YXkgJXp1
IGl0ZW1zIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIHJlbW92ZWRJ
dGVtcy5zaXplKCkpOwogICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG5ld0l0
ZW1QdHIsIFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiB9CiAKQEAgLTE3NSw4ICsxODQsMTAgQEAg
dm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
IGl0ZW0pCiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHRhcmdldCBpdGVtIHdhc24ndCBldmVuIGlu
IHRoZSBsaXN0LCB0aGVyZSdzIG5vdGhpbmcgZWxzZSB0byBkby4KLSAgICBpZiAodGFyZ2V0SW5k
ZXggPT0gbm90Rm91bmQpCisgICAgaWYgKHRhcmdldEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAg
ICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAl
cCBjb3VsZCBub3QgZ28gdG8gaXRlbSAlcyAoJXMpIGJlY2F1c2UgaXQgd2FzIG5vdCBmb3VuZCIs
IHRoaXMsIGl0ZW0uaXRlbUlEKCkubG9nU3RyaW5nKCksIGl0ZW0udXJsKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAodGFyZ2V0SW5kZXggPCBtX2N1
cnJlbnRJbmRleCkgewogICAgICAgICB1bnNpZ25lZCBkZWx0YSA9IG1fZW50cmllcy5zaXplKCkg
LSB0YXJnZXRJbmRleCAtIDE7CkBAIC0yMDksNiArMjIwLDkgQEAgdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmdvVG9JdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiAgICAgfQogCiAg
ICAgbV9jdXJyZW50SW5kZXggPSB0YXJnZXRJbmRleDsKKworICAgIExPRyhCYWNrRm9yd2FyZCwg
IihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCBnb2luZyB0byBpdGVtICVzLCBp
cyBub3cgYXQgaW5kZXggJXp1IiwgdGhpcywgaXRlbS5pdGVtSUQoKS5sb2dTdHJpbmcoKSwgdGFy
Z2V0SW5kZXgpOworCiAgICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QobnVsbHB0
ciwgV1RGTW92ZShyZW1vdmVkSXRlbXMpKTsKIH0KIApAQCAtMzIyLDYgKzMzNiw4IEBAIHZvaWQg
V2ViQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVBbGxJdGVtcygpCiB7CiAgICAgQVNTRVJUKCFtX2hh
c0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCisg
ICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgV2ViQmFja0ZvcndhcmRMaXN0ICVw
IHJlbW92ZUFsbEl0ZW1zIChoYXMgJXp1IG9mIHRoZW0pIiwgdGhpcywgbV9lbnRyaWVzLnNpemUo
KSk7CisKICAgICBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiByZW1vdmVkSXRl
bXM7CiAKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9lbnRyaWVzKSB7CkBAIC0zMzgsNiArMzU0
LDggQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKIHsKICAgICBBU1NFUlQoIW1f
aGFzQ3VycmVudEluZGV4IHx8IG1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAK
KyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNrRm9yd2FyZExpc3Qg
JXAgY2xlYXIgKGhhcyAlenUgb2YgdGhlbSkiLCB0aGlzLCBtX2VudHJpZXMuc2l6ZSgpKTsKKwog
ICAgIHNpemVfdCBzaXplID0gbV9lbnRyaWVzLnNpemUoKTsKICAgICBpZiAoIW1fcGFnZSB8fCBz
aXplIDw9IDEpCiAgICAgICAgIHJldHVybjsKQEAgLTQyNSwxOSArNDQzLDMwIEBAIHZvaWQgV2Vi
QmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJh
Y2tGb3J3YXJkTGlzdFN0CiAgICAgbV9oYXNDdXJyZW50SW5kZXggPSAhIWJhY2tGb3J3YXJkTGlz
dFN0YXRlLmN1cnJlbnRJbmRleDsKICAgICBtX2N1cnJlbnRJbmRleCA9IGJhY2tGb3J3YXJkTGlz
dFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZV9vcigwKTsKICAgICBtX2VudHJpZXMgPSBXVEZNb3Zl
KGl0ZW1zKTsKKworICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tG
b3J3YXJkTGlzdCAlcCByZXN0b3JlZCBmcm9tIHN0YXRlIChoYXMgJXp1IGVudHJpZXMpIiwgdGhp
cywgbV9lbnRyaWVzLnNpemUoKSk7CiB9CiAKLVZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGU+IFdlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbVN0YXRlcygpIGNvbnN0CitWZWN0b3I8QmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlPiBXZWJCYWNrRm9yd2FyZExpc3Q6OmZpbHRlcmVkSXRlbVN0YXRl
cyhGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmdW5jdG9yKSBjb25z
dAogewogICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXM7CiAg
ICAgaXRlbVN0YXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZW50cmllcy5zaXplKCkpOwog
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fZW50cmllcykKLSAgICAgICAgaXRlbVN0
YXRlcy51bmNoZWNrZWRBcHBlbmQoZW50cnktPml0ZW1TdGF0ZSgpKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIGVudHJ5IDogbV9lbnRyaWVzKSB7CisgICAgICAgIGlmIChmdW5jdG9yKGVudHJ5KSkK
KyAgICAgICAgICAgIGl0ZW1TdGF0ZXMudW5jaGVja2VkQXBwZW5kKGVudHJ5LT5pdGVtU3RhdGUo
KSk7CisgICAgfQogCiAgICAgcmV0dXJuIGl0ZW1TdGF0ZXM7CiB9CiAKK1ZlY3RvcjxCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGU+IFdlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbVN0YXRlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZpbHRlcmVkSXRlbVN0YXRlcyhbXShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJikgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJCYWNr
Rm9yd2FyZExpc3Q6OmRpZFJlbW92ZUl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgYmFja0Zv
cndhcmRMaXN0SXRlbSkKIHsKICAgICBtX3BhZ2UtPmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oYmFj
a0ZvcndhcmRMaXN0SXRlbS5pdGVtSUQoKSk7CkBAIC00NDcsNCArNDc2LDI1IEBAIHZvaWQgV2Vi
QmFja0ZvcndhcmRMaXN0OjpkaWRSZW1vdmVJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGJh
Y2tGb3J3YXJkTGlzdEl0CiAjZW5kaWYKIH0KIAorCisjaWYgIUxPR19ESVNBQkxFRAorY29uc3Qg
Y2hhciogV2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKCkKK3sKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIldlYkJh
Y2tGb3J3YXJkTGlzdCAlcCAtICV6dSBlbnRyaWVzLCBoYXMgY3VycmVudCBpbmRleCAlcyAoJXp1
KSIsIHRoaXMsIG1fZW50cmllcy5zaXplKCksIG1faGFzQ3VycmVudEluZGV4ID8gIllFUyIgOiAi
Tk8iLCBtX2hhc0N1cnJlbnRJbmRleCA/IG1fY3VycmVudEluZGV4IDogMCkpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoIlxuIik7CisgICAgICAgIGlmIChtX2hhc0N1cnJlbnRJbmRleCAmJiBtX2N1
cnJlbnRJbmRleCA9PSBpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAqICIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIC0gIik7CisKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQobV9lbnRyaWVzW2ldLT5sb2dnaW5nU3RyaW5nKCkpOworICAgIH0KKwor
ICAgIHJldHVybiBkZWJ1Z1N0cmluZygiXG4iLCBidWlsZGVyLnRvU3RyaW5nKCkpOworfQorI2Vu
ZGlmIC8vICFMT0dfRElTQUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IDI4ZmNlYTMxZDJkLi4z
OTllMjhmMzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zv
cndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmgKQEAgLTc0LDYgKzc0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3RvcmVGcm9tU3Rh
dGUoQmFja0ZvcndhcmRMaXN0U3RhdGUpOwogCiAgICAgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZT4gaXRlbVN0YXRlcygpIGNvbnN0OworICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGU+IGZpbHRlcmVkSXRlbVN0YXRlcyhGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mKT4mJikgY29uc3Q7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hh
ciogbG9nZ2luZ1N0cmluZygpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vi
QmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKaW5kZXggMzFhNzA3YjJlNjguLjk4MDI0YTQzMDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAK
QEAgLTQyLDE4ICs0MiwxOCBAQCBXZWJOYXZpZ2F0aW9uU3RhdGU6On5XZWJOYXZpZ2F0aW9uU3Rh
dGUoKQogewogfQogCi1SZWY8QVBJOjpOYXZpZ2F0aW9uPiBXZWJOYXZpZ2F0aW9uU3RhdGU6OmNy
ZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVm
PEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVMb2FkUmVxdWVzdE5h
dmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSogY3VycmVudEl0ZW0pCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gQVBJOjpOYXZpZ2F0aW9u
OjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocmVxdWVzdCkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9
IEFQSTo6TmF2aWdhdGlvbjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBjdXJyZW50
SXRlbSk7CiAKICAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSwgbmF2aWdhdGlvbi5wdHIoKSk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotUmVm
PEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVCYWNrRm9yd2FyZE5h
dmlnYXRpb24oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBmcmFt
ZUxvYWRUeXBlKQorUmVmPEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRlOjpjcmVh
dGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgdGFyZ2V0SXRl
bSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogY3VycmVudEl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJh
bWVMb2FkVHlwZSkKIHsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBBUEk6Ok5hdmlnYXRpb246OmNy
ZWF0ZSgqdGhpcywgaXRlbSwgZnJhbWVMb2FkVHlwZSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0g
QVBJOjpOYXZpZ2F0aW9uOjpjcmVhdGUoKnRoaXMsIHRhcmdldEl0ZW0sIGN1cnJlbnRJdGVtLCBm
cmFtZUxvYWRUeXBlKTsKIAogICAgIG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpLCBuYXZpZ2F0aW9uLnB0cigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAppbmRleCAwZTEyZjNmODAxMS4uMTM2NmUzY2M4ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCkBAIC00OCw4
ICs0OCw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOYXZpZ2F0aW9uU3RhdGUoKTsKICAg
ICB+V2ViTmF2aWdhdGlvblN0YXRlKCk7CiAKLSAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVh
dGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIFdlYkNvcmU6
OkZyYW1lTG9hZFR5cGUpOwotICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZUxvYWRSZXF1
ZXN0TmF2aWdhdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVmPEFQSTo6
TmF2aWdhdGlvbj4gY3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mIHRhcmdldEl0ZW0sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtLCBX
ZWJDb3JlOjpGcmFtZUxvYWRUeXBlKTsKKyAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVhdGVM
b2FkUmVxdWVzdE5hdmlnYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtKTsKICAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBj
cmVhdGVSZWxvYWROYXZpZ2F0aW9uKCk7CiAgICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gY3JlYXRl
TG9hZERhdGFOYXZpZ2F0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDgyYjBhNmFhMjMxLi40YjE1Mjk4YmUxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02NDQsMjUgKzY0NCwxNCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgUwogdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkK
IHsKICAgICBhdXRvIHByb2Nlc3MgPSBtYWtlUmVmKG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5j
cmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KG1fd2Vic2l0ZURh
dGFTdG9yZS5nZXQoKSkpOwotICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFdURk1vdmUocHJvY2Vz
cyksIGZhbHNlKTsKKyAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpLCBu
dWxscHRyLCBSZWF0dGFjaEZvckJhY2tGb3J3YXJkOjpObyk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjphdHRhY2hUb1Byb2Nlc3NGb3JOYXZpZ2F0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcykKLXsKLSAgICAvLyBGSVhNRTogSWYgdGhpcyBXZWJQYWdlUHJveHkgaXMgdGhlIG9u
bHkgb25lIGhvc3RlZCBpbiBpdHMgV2ViUHJvY2VzcywgZG9lcyB0aGlzIG1ha2UgaXQgZ28gYXdh
eT8KLSAgICAvLyBXZSBuZWVkIHRvIGJlIHByZXBhcmVkIHRvIHJldXNlIGl0IGxhdGVyLgotICAg
IHByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9u
U3dhcCk7Ci0KLSAgICAvLyBGSVhNRTogdGhpcyBpcyB0byBmaXggdGhlIEFTU0VSVChpc1ZhbGlk
KCkpIGluc2lkZSByZWF0dGFjaFRvV2ViUHJvY2Vzcywgc29tZSBvdGhlciB3YXkgdG8gZml4IHRo
aXMgaXMgbmVlZGVkLgotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIHJlYXR0YWNoVG9XZWJQ
cm9jZXNzKFdURk1vdmUocHJvY2VzcyksIHRydWUpOwotfQotCi1TdXNwZW5kZWRQYWdlUHJveHkq
IFdlYlBhZ2VQcm94eTo6bWF5YmVDcmVhdGVTdXNwZW5kZWRQYWdlKFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcykKK1N1c3BlbmRlZFBhZ2VQcm94eSogV2ViUGFnZVByb3h5OjptYXliZUNyZWF0ZVN1
c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZFBhZ2UgfHwgbV9zdXNwZW5kZWRQ
YWdlLT5wcm9jZXNzKCkgIT0gJnByb2Nlc3MpOwogCi0gICAgYXV0byogY3VycmVudEl0ZW0gPSBt
X2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICBhdXRvKiBjdXJyZW50SXRlbSA9
IG5hdmlnYXRpb24uZnJvbUl0ZW0oKTsKICAgICBpZiAoIWN1cnJlbnRJdGVtKSB7CiAgICAgICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgdW5hYmxlIHRv
IGNyZWF0ZSBzdXNwZW5kZWQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgLSBObyBjdXJyZW50IGJh
Y2svZm9yd2FyZCBpdGVtIiwgcGFnZUlEKCksIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgxLDIwICs2NzAsMzYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnN1c3BlbmRlZFBhZ2VQcm9jZXNzQ2xvc2VkKFN1c3BlbmRlZFBhZ2VQcm94eSYg
cGFnZSkKICAgICBtX3N1c3BlbmRlZFBhZ2UgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBib29sIHN1c3BlbmRJbk9sZFByb2Nlc3MpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hU
b1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIFJlYXR0YWNoRm9yQmFja0ZvcndhcmQgcmVhdHRhY2hGb3JCYWNrRm9y
d2FyZCkKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaXNWYWxpZCgp
KTsKIAogICAgIG1faXNWYWxpZCA9IHRydWU7CiAKLSAgICBpZiAoIXN1c3BlbmRJbk9sZFByb2Nl
c3MpIHsKKyAgICAvLyBJZiB0aGUgcHJvY2VzcyB3ZSdyZSBhdHRhY2hpbmcgdG8gaXMga2VwdCBh
bGl2ZSBzb2xlbHkgYnkgb3VyIGN1cnJlbnQgc3VzcGVuZGVkIHBhZ2UsCisgICAgLy8gd2UgbmVl
ZCB0byBtYWludGFpbiB0aGF0IGJ5IHRlbXBvcmFyaWx5IGtlZXBpbmcgdGhlIHN1c3BlbmRlZCBw
YWdlIGFsaXZlLgorICAgIFJlZlB0cjxTdXNwZW5kZWRQYWdlUHJveHk+IGN1cnJlbnRTdXNwZW5k
ZWRQYWdlOworICAgIGlmICghbmF2aWdhdGlvbikgewogICAgICAgICBtX3Byb2Nlc3MtPnJlbW92
ZVdlYlBhZ2UoKnRoaXMsIG1fcGFnZUlEKTsKICAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcHJvY2Vzcy0+c3VzcGVuZFdlYlBh
Z2VQcm94eSgqdGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY3VycmVudFN1c3BlbmRlZFBh
Z2UgPSBtX3N1c3BlbmRlZFBhZ2U7CisgICAgICAgIG1fcHJvY2Vzcy0+c3VzcGVuZFdlYlBhZ2VQ
cm94eSgqdGhpcywgKm5hdmlnYXRpb24pOworICAgIH0KIAogICAgIG1fcHJvY2VzcyA9IFdURk1v
dmUocHJvY2Vzcyk7CisgICAgaWYgKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJv
eHk6OlN0YXRlOjpSdW5uaW5nKQorICAgICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIu
d2ViUGFnZUVudGVyaW5nV2ViUHJvY2VzcygpOworCisgICAgaWYgKHJlYXR0YWNoRm9yQmFja0Zv
cndhcmQgPT0gUmVhdHRhY2hGb3JCYWNrRm9yd2FyZDo6WWVzKSB7CisgICAgICAgIEFTU0VSVCgh
bV9tYWluRnJhbWUpOworICAgICAgICBBU1NFUlQobV9tYWluRnJhbWVJRCk7CisgICAgICAgIG1f
bWFpbkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKHRoaXMsICptX21haW5GcmFtZUlEKTsK
KyAgICAgICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoKm1fbWFpbkZyYW1lSUQsICptX21haW5G
cmFtZSk7CisgICAgfQorCisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBp
bmcpIFJlYXR0YWNoaW5nIFdlYlBhZ2VQcm94eSAlcCB0byBXZWJQcm9jZXNzUHJveHkgJXAgd2l0
aCBwaWQgJWlcbiIsIHRoaXMsIG1fcHJvY2Vzcy5wdHIoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0YXRlKCkgIT0gQ2hpbGRQcm9j
ZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsKICAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgp
ID09IENoaWxkUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZykKQEAgLTc2MSw3ICs3NjYsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9j
ZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcgogICAgIGlmICgmaXRlbSAhPSBtX2JhY2tGb3J3YXJk
TGlzdC0+Y3VycmVudEl0ZW0oKSkKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVt
KGl0ZW0pOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0
ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVtLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0Zv
cndhcmQpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVC
YWNrRm9yd2FyZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCk7CiAKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCksIGl0ZW0uaXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNr
Rm9yd2FyZCwgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlKSwgbV9wYWdlSUQpOwogICAg
IG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CkBAIC05MTMsNyArOTE4
LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25T
dGF0ZS0+Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0
KSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRS
ZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG1fYmFja0ZvcndhcmRM
aXN0LT5jdXJyZW50SXRlbSgpKTsKICAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKG5hdmln
YXRpb24uZ2V0KCksIFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3ksIHVzZXJEYXRhLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJlcXVpcmUpOwogICAgIHJldHVy
biBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQpAQCAtOTY2LDcgKzk3MSw3IEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJM
U3RyaW5nLCBjb25zCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBh
dXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZFJlcXVlc3ROYXZp
Z2F0aW9uKFJlc291cmNlUmVxdWVzdChmaWxlVVJMKSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0g
bV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJl
cXVlc3QoZmlsZVVSTCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKIAogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAt
MTIyNyw3ICsxMjMyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpn
b1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKIHsKLSAgICBM
T0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGJhY2sg
aXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhM
b2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGdvVG9CYWNrRm9yd2FyZEl0ZW0gdG8gaXRlbSBVUkwg
JXMiLCB0aGlzLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKCFpc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybiByZWF0dGFjaFRvV2ViUHJvY2Vzc1dpdGhJdGVtKGl0ZW0pOwpA
QCAtMTIzOCw3ICsxMjQzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogICAgIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb247CiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlz
dC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlzSW5TYW1lRG9jdW1lbnQoaXRlbSkpCi0gICAgICAgIG5h
dmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9u
KGl0ZW0sIGZyYW1lTG9hZFR5cGUpOworICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9u
U3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVtLCBtX2JhY2tGb3J3YXJkTGlz
dC0+Y3VycmVudEl0ZW0oKSwgZnJhbWVMb2FkVHlwZSk7CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbiA/IG5hdmln
YXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQoKSwgZnJhbWVMb2FkVHlwZSwg
TmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CkBAIC0yMzc5LDcgKzIzODQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0
aW9uLCBXZWJGcmFtZVByb3h5JiBmcgogICAgICAgICAgICAgYXV0byBwcm9wb3NlZFByb2Nlc3Mg
PSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5h
dmlnYXRpb24sIGFjdGlvbik7CiAKICAgICAgICAgICAgIGlmIChwcm9wb3NlZFByb2Nlc3MucHRy
KCkgIT0gJnByb2Nlc3MoKSkgewotICAgICAgICAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcs
ICJTd2l0Y2hpbmcgZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzIGZvciBuYXZpZ2F0aW9u
ICUiIFBSSXU2NCAiICclcyciLCBwcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbi0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTd2l0Y2hpbmcgZnJvbSBwcm9j
ZXNzICVpIHRvIG5ldyBwcm9jZXNzIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcyciLCBw
cm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlv
bi0+bG9nZ2luZ1N0cmluZygpKTsKIAogICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9u
ID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIHByb3Bvc2VkUHJvY2VzcyA9IFdURk1vdmUocHJvcG9z
ZWRQcm9jZXNzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgY29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzKG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocHJvcG9zZWRQcm9j
ZXNzKSk7CkBAIC0yMzk4LDcgKzI0MDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5JiBmcgogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQogewot
ICAgIExPRyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycg
aW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0
aW9uLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIkNv
bnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBwcm9jZXNz
IiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkp
OwogCiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gcHJldmlvdXNQcm9jZXNzID0gbV9wcm9jZXNz
LmNvcHlSZWYoKTsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuYXZpZ2F0ZWRGcmFtZUlk
ZW50aWZpZXJJblByZXZpb3VzUHJvY2VzczsKQEAgLTI0MDYsMTYgKzI0MTEsMjkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIFIKICAgICAgICAgbmF2aWdhdGVkRnJhbWVJZGVudGlmaWVySW5QcmV2
aW91c1Byb2Nlc3MgPSBtX21haW5GcmFtZS0+ZnJhbWVJRCgpOwogCiAgICAgQVNTRVJUKG1fcHJv
Y2Vzcy5wdHIoKSAhPSBwcm9jZXNzLnB0cigpKTsKLSAgICBhdHRhY2hUb1Byb2Nlc3NGb3JOYXZp
Z2F0aW9uKFdURk1vdmUocHJvY2VzcykpOwogCi0gICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0
aW9uLmJhY2tGb3J3YXJkTGlzdEl0ZW0oKSkgewotICAgICAgICBpZiAoaXRlbSAhPSBtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkKLSAgICAgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0
LT5nb1RvSXRlbSgqaXRlbSk7CisgICAgcHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWlu
YXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKKworICAgIC8vIEZJWE1FOiB0aGlzIGlzIHRv
IGZpeCB0aGUgQVNTRVJUKGlzVmFsaWQoKSkgaW5zaWRlIHJlYXR0YWNoVG9XZWJQcm9jZXNzLCBz
b21lIG90aGVyIHdheSB0byBmaXggdGhpcyBpcyBuZWVkZWQuCisgICAgbV9pc1ZhbGlkID0gZmFs
c2U7CisgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSwgJm5hdmlnYXRp
b24sIG5hdmlnYXRpb24udGFyZ2V0SXRlbSgpID8gUmVhdHRhY2hGb3JCYWNrRm9yd2FyZDo6WWVz
IDogUmVhdHRhY2hGb3JCYWNrRm9yd2FyZDo6Tm8pOworCisgICAgaWYgKGF1dG8qIGl0ZW0gPSBu
YXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgeworICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQ
cm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAl
cyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIEFTU0VSVChu
YXZpZ2F0aW9uLmJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSgpKTsKLSAgICAgICAgQVNTRVJUKGlz
QmFja0ZvcndhcmRMb2FkVHlwZSgqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUo
KSkpOworICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0
aW9uKCk7CisgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0
cmFuc2FjdGlvbiwgaXRlbS0+dXJsKCkpOwogCisgICAgICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1f
YmFja0ZvcndhcmRMaXN0LT4gZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0g
aXRlbV0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkgeworICAgICAgICAgICAgaWYgKGF1
dG8qIHBhZ2UgPSBpdGVtLnN1c3BlbmRlZFBhZ2UoKSkgeworICAgICAgICAgICAgICAgIGlmIChw
YWdlLT5wcm9jZXNzKCkgPT0gbV9wcm9jZXNzLnB0cigpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gJml0ZW0gIT0g
dGFyZ2V0SXRlbTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92ZShpdGVt
U3RhdGVzKSksIG1fcGFnZUlEKTsKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGl0
ZW0tPml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgTmF2
aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTMyNDUsOSArMzI2MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFp
bkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNh
bkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94
eTo6Y3JlYXRlKHRoaXMsIGZyYW1lSUQpOworICAgIG1fbWFpbkZyYW1lSUQgPSBmcmFtZUlEOwog
CiAgICAgLy8gQWRkIHRoZSBmcmFtZSB0byB0aGUgcHJvY2VzcyB3aWRlIG1hcC4KLSAgICBtX3By
b2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlELCBtX21haW5GcmFtZS5nZXQoKSk7CisgICAgbV9w
cm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgKm1fbWFpbkZyYW1lKTsKIAogICAgIGlmICht
X21haW5GcmFtZUNyZWF0aW9uSGFuZGxlcikgewogICAgICAgICBtX21haW5GcmFtZUNyZWF0aW9u
SGFuZGxlcigpOwpAQCAtMzI2NSw3ICszMjg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENy
ZWF0ZVN1YmZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+
IHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKHRoaXMsIGZyYW1lSUQpOwogCiAgICAg
Ly8gQWRkIHRoZSBmcmFtZSB0byB0aGUgcHJvY2VzcyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3Mt
PmZyYW1lQ3JlYXRlZChmcmFtZUlELCBzdWJGcmFtZS5nZXQoKSk7CisgICAgbV9wcm9jZXNzLT5m
cmFtZUNyZWF0ZWQoZnJhbWVJRCwgKnN1YkZyYW1lKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVy
JiYgd2luZG93SWRlbnRpZmllcikKQEAgLTMzNTQsNyArMzM3Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTE9HKExvYWRpbmcs
ICJXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJ
RCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRp
b25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0
aW9uKCk7CiAKQEAgLTM0NTksNiArMzQ3OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBXCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Cisg
ICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdl
YiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlz
aW9uYWxVUkwgJXMiLCBtX3BhZ2VJRCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBw
cm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKKwogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1f
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CkBAIC0zNTEzLDYgKzM1MzQsOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCkKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21D
b250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAgICBMT0coTG9hZGluZywgIihM
b2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGlu
IG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJRCwgbV9uYXZpZ2F0aW9uSUQpOworICAgIExP
RyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0LCBiYWNrL2Zv
cndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2luZ1N0cmluZygp
KTsKKwogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAK
ICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7
CkBAIC0zODkwLDcgKzM5MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cgogICAgIE1FU1NB
R0VfQ0hFQ0tfVVJMKHJlcXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG9yaWdp
bmFsUmVxdWVzdC51cmwoKSk7CiAgICAgCi0gICAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdh
dGlvbiA9IG5hdmlnYXRpb25JRCA/IG1ha2VSZWYobV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRp
b24obmF2aWdhdGlvbklEKSkgOiBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZFJlcXVlc3RO
YXZpZ2F0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSk7CisgICAgUmVmPEFQSTo6TmF2aWdh
dGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1ha2VSZWYobV9uYXZpZ2F0aW9uU3Rh
dGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSkgOiBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRl
TG9hZFJlcXVlc3ROYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbV9iYWNrRm9y
d2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpOwogCiAgICAgdWludDY0X3QgbmV3TmF2aWdhdGlvbklE
ID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CiAgICAgbmF2aWdhdGlvbi0+c2V0V2FzVXNl
ckluaXRpYXRlZCghIW5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlm
aWVyKTsKQEAgLTQyMjIsOSArNDI0Niw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3VzZURpZE1v
dmVPdmVyRWxlbWVudChXZWJIaXRUZXN0UmVzdWx0RGF0YSYmIGhpdFRlc3RSZXN1bHRECiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQogewotICAgIEFTU0VSVCgmY29ubmVjdGlvbiA9PSBtX3Byb2Nlc3MtPmNvbm5lY3Rp
b24oKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCAmY29ubmVjdGlvbiA9PSBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKSk7CiAKLSAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIu
Y29ubmVjdGlvbldpbGxPcGVuKGNvbm5lY3Rpb24pOworICAgIG1fd2ViUHJvY2Vzc0xpZmV0aW1l
VHJhY2tlci53ZWJQYWdlRW50ZXJpbmdXZWJQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojp3ZWJQcm9jZXNzV2lsbFNodXREb3duKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYTNmMTQ2YjBiYTcuLjM4ZjFhNmZhNjVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgcHVibGljOgogCiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBwcmVmZXJlbmNlc1N0b3JlKCkgY29uc3Q7CiAKLSAgICBT
dXNwZW5kZWRQYWdlUHJveHkqIG1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShXZWJQcm9jZXNzUHJv
eHkmKTsKKyAgICBTdXNwZW5kZWRQYWdlUHJveHkqIG1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZShX
ZWJQcm9jZXNzUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24mKTsKICAgICB2b2lkIHN1c3BlbmRlZFBh
Z2VQcm9jZXNzQ2xvc2VkKFN1c3BlbmRlZFBhZ2VQcm94eSYpOwogCiBwcml2YXRlOgpAQCAtMTQ0
Myw4ICsxNDQzLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDYW5TaG9ydENpcmN1aXRIb3Jp
em9udGFsV2hlZWxFdmVudHMoYm9vbCBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVu
dHMpIHsgbV9jYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMgPSBjYW5TaG9ydENp
cmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7IH0KIAogICAgIHZvaWQgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKLSAgICB2b2lkIGF0dGFjaFRvUHJvY2Vzc0Zvck5hdmlnYXRpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJik7Ci0gICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBib29sIHN1c3BlbmRJbk9sZFByb2Nlc3MpOworCisgICAgZW51bSBjbGFz
cyBSZWF0dGFjaEZvckJhY2tGb3J3YXJkIHsKKyAgICAgICAgWWVzLAorICAgICAgICBObworICAg
IH07CisgICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBBUEk6Ok5hdmlnYXRpb24qLCBSZWF0dGFjaEZvckJhY2tGb3J3YXJkKTsKIAogICAgIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkKCk7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtJik7CkBAIC0xNzc5LDYgKzE3ODMsNyBAQCBwcml2YXRlOgogICAg
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAKICAgICBSZWZQdHI8
V2ViRnJhbWVQcm94eT4gbV9tYWluRnJhbWU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
bV9tYWluRnJhbWVJRDsKICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fbWFpbkZyYW1lQ3JlYXRpb25I
YW5kbGVyOwogICAgIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciYpPiBtX21haW5GcmFtZVdpbmRvd0NyZWF0aW9uSGFuZGxlcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNwcApp
bmRleCA3ZjI1OTlhNzdhZi4uZDFkNzAxNjYzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlcjo6YWRkT2JzZXJ2ZXIoV2ViUHJvY2Vz
c0xpZmV0aW1lT2JzZXJ2ZXImIG9ic2VydmVyCiAgICAgICAgIG9ic2VydmVyLmFkZFdlYlBhZ2Uo
bV93ZWJQYWdlUHJveHkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NMaWZldGltZVRyYWNrZXI6OmNv
bm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mKQordm9pZCBXZWJQcm9jZXNzTGlmZXRp
bWVUcmFja2VyOjp3ZWJQYWdlRW50ZXJpbmdXZWJQcm9jZXNzKCkKIHsKICAgICBBU1NFUlQocHJv
Y2Vzc0lzUnVubmluZygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oCmluZGV4IGRjODU3NzdjMjRmLi5mZGM0ZGVmMjgzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRy
YWNrZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE9ic2VydmVy
KFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyJik7CiAKLSAgICB2b2lkIGNvbm5lY3Rpb25XaWxs
T3BlbihJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHdlYlBhZ2VFbnRlcmluZ1dlYlByb2Nl
c3MoKTsKICAgICB2b2lkIHdlYlBhZ2VMZWF2aW5nV2ViUHJvY2VzcygpOwogCiAgICAgdm9pZCBw
YWdlV2FzSW52YWxpZGF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCBjMDExOThjM2Y3OC4uMjFkY2MzZjZmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2VuZGlmCiAjaW5jbHVk
ZSAiTG9nSW5pdGlhbGl6YXRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgpAQCAtMTk5
OSw2ICsyMDAwLDE0IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9j
ZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvCiAgICAgaWYgKG5hdmlnYXRp
b24ub3BlbmVyKCkpCiAgICAgICAgIHJldHVybiBwYWdlLnByb2Nlc3MoKTsKIAorICAgIGlmIChh
dXRvKiBiYWNrRm9yd2FyZExpc3RJdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgPSBiYWNrRm9yd2FyZExpc3RJdGVtLT5zdXNw
ZW5kZWRQYWdlKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzdXNwZW5kZWRQYWdlLT5wcm9jZXNz
KCkpOworICAgICAgICAgICAgYWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdXNwZW5kOworICAgICAg
ICAgICAgcmV0dXJuICpzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICBhdXRvIHRhcmdldFVSTCA9IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKS51cmwo
KTsKICAgICBhdXRvIHVybCA9IFVSTCB7IFBhcnNlZFVSTFN0cmluZywgcGFnZS5wYWdlTG9hZFN0
YXRlKCkudXJsKCkgfTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgdXJsLmlzRW1wdHkoKSB8
fCB1cmwuaXNCbGFua1VSTCgpIHx8IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIHRh
cmdldFVSTCkpCkBAIC0yMDA4LDQgKzIwMTcsMzAgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY28K
ICAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2VzcyhwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7
CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KFN1
c3BlbmRlZFBhZ2VQcm94eSYgcGFnZSkKK3sKKyAgICBhdXRvJiB2ZWN0b3IgPSBtX3N1c3BlbmRl
ZFBhZ2VzLmVuc3VyZShwYWdlLm9yaWdpbigpLCBbXSB7CisgICAgICAgIHJldHVybiBWZWN0b3I8
U3VzcGVuZGVkUGFnZVByb3h5Kj4geyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAg
IHZlY3Rvci5hcHBlbmQoJnBhZ2UpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGlmICh2ZWN0
b3Iuc2l6ZSgpID4gNSkKKyAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlNlY3VyaXR5IG9y
aWdpbiAlcyBub3cgaGFzICV6dSBzdXNwZW5kZWQgcGFnZXMgKHRoaXMgc2VlbXMgdW5leHBlY3Rl
ZCkiLCBwYWdlLm9yaWdpbigpLmRlYnVnU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdmVjdG9yLnNp
emUoKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclN1c3Bl
bmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgYXV0byBpdGVy
YXRvciA9IG1fc3VzcGVuZGVkUGFnZXMuZmluZChwYWdlLm9yaWdpbigpKTsKKyAgICBBU1NFUlQo
aXRlcmF0b3IgIT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9
IGl0ZXJhdG9yLT52YWx1ZS5yZW1vdmVGaXJzdCgmcGFnZSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7CisKKyAgICBpZiAoaXRlcmF0b3ItPnZhbHVlLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9zdXNwZW5kZWRQYWdlcy5yZW1vdmUoaXRlcmF0b3IpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IGY4MjRmODUzNjNkLi41MmQ3NmM4ZjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC00NDcsNiArNDQ3LDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBj
b25zdCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24mKTsKKyAgICB2b2lk
IHJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KFN1c3BlbmRlZFBhZ2VQcm94eSYpOworICAgIHZv
aWQgdW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQYWdlUHJveHkmKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtNjgyLDYgKzY4NCw4
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tl
bnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwogI2VuZGlmCiAjZW5kaWYKKworICAgIEhhc2hN
YXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBWZWN0b3I8U3VzcGVuZGVkUGFnZVByb3h5
Kj4+IG1fc3VzcGVuZGVkUGFnZXM7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNDkzZTg4ZDIzOWIu
LjA3NTA1MTZmZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTM5Niw5ICszOTYsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3Rp
bmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQogICAgIHVw
ZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpzdXNwZW5kV2ViUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFn
ZSwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uKQogewotICAgIGlmIChhdXRvKiBzdXNwZW5k
ZWRQYWdlID0gd2ViUGFnZS5tYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2UoKnRoaXMpKSB7CisgICAg
aWYgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgPSB3ZWJQYWdlLm1heWJlQ3JlYXRlU3VzcGVuZGVkUGFn
ZSgqdGhpcywgbmF2aWdhdGlvbikpIHsKICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldl
YlByb2Nlc3NQcm94eSBwaWQgJWkgYWRkZWQgc3VzcGVuZGVkIHBhZ2UgJXMiLCBwcm9jZXNzSWRl
bnRpZmllcigpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCkpOwogICAgICAgICBtX3N1
c3BlbmRlZFBhZ2VNYXAuc2V0KHdlYlBhZ2UucGFnZUlEKCksIHN1c3BlbmRlZFBhZ2UpOwogICAg
IH0KQEAgLTU0Myw4ICs1NDMsMTQgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmZ1bGxLZXlib2Fy
ZEFjY2Vzc0VuYWJsZWQoKQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlQmFja0Zvcndh
cmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbVN0YXRlKQogewotICAg
IGlmIChhdXRvKiBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUZvcklEKGl0ZW1T
dGF0ZS5pZGVudGlmaWVyKSkKLSAgICAgICAgaXRlbS0+c2V0UGFnZVN0YXRlKGl0ZW1TdGF0ZS5w
YWdlU3RhdGUpOworICAgIGlmIChhdXRvKiBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
aXRlbUZvcklEKGl0ZW1TdGF0ZS5pZGVudGlmaWVyKSkgeworICAgICAgICAvLyBUaGlzIHVwZGF0
ZSBjb3VsZCBiZSBjb21pbmcgZnJvbSBhIHdlYiBwcm9jZXNzIHRoYXQgaXMgbm90IHRoZSBhY3Rp
dmUgcHJvY2VzcyBmb3IKKyAgICAgICAgLy8gdGhlIGJhY2svZm9yd2FyZCBpdGVtcyBwYWdlLgor
ICAgICAgICAvLyBlLmcuIFRoZSBvbGQgd2ViIHByb2Nlc3MgaXMgbmF2aWdhdGluZyB0byBhYm91
dDpibGFuayBmb3Igc3VzcGVuc2lvbi4KKyAgICAgICAgLy8gV2UgaWdub3JlIHRoZXNlIHVwZGF0
ZXMuCisgICAgICAgIGlmIChtX3BhZ2VNYXAuY29udGFpbnMoaXRlbS0+cGFnZUlEKCkpKQorICAg
ICAgICAgICAgaXRlbS0+c2V0UGFnZVN0YXRlKGl0ZW1TdGF0ZS5wYWdlU3RhdGUpOworICAgIH0K
IH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtNzYwLDEwICs3NjYsOSBA
QCBib29sIFdlYlByb2Nlc3NQcm94eTo6Y2FuQ3JlYXRlRnJhbWUodWludDY0X3QgZnJhbWVJRCkg
Y29uc3QKICAgICByZXR1cm4gV2ViRnJhbWVQcm94eU1hcDo6aXNWYWxpZEtleShmcmFtZUlEKSAm
JiAhbV9mcmFtZU1hcC5jb250YWlucyhmcmFtZUlEKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmZyYW1lQ3JlYXRlZCh1aW50NjRfdCBmcmFtZUlELCBXZWJGcmFtZVByb3h5KiBmcmFtZVBy
b3h5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmZyYW1lQ3JlYXRlZCh1aW50NjRfdCBmcmFtZUlE
LCBXZWJGcmFtZVByb3h5JiBmcmFtZVByb3h5KQogewotICAgIEFTU0VSVChjYW5DcmVhdGVGcmFt
ZShmcmFtZUlEKSk7Ci0gICAgbV9mcmFtZU1hcC5zZXQoZnJhbWVJRCwgZnJhbWVQcm94eSk7Cisg
ICAgbV9mcmFtZU1hcC5zZXQoZnJhbWVJRCwgJmZyYW1lUHJveHkpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkRGVzdHJveUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGVkMTBmOTNkZGJhLi42NDVjOTgx
MWY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTUx
LDYgKzUxLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBBUEkgewor
Y2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQogCkBAIC0xMzAs
NyArMTMxLDcgQEAgcHVibGljOgogCiAgICAgV2ViRnJhbWVQcm94eSogd2ViRnJhbWUodWludDY0
X3QpIGNvbnN0OwogICAgIGJvb2wgY2FuQ3JlYXRlRnJhbWUodWludDY0X3QgZnJhbWVJRCkgY29u
c3Q7Ci0gICAgdm9pZCBmcmFtZUNyZWF0ZWQodWludDY0X3QsIFdlYkZyYW1lUHJveHkqKTsKKyAg
ICB2b2lkIGZyYW1lQ3JlYXRlZCh1aW50NjRfdCwgV2ViRnJhbWVQcm94eSYpOwogICAgIHZvaWQg
ZGlzY29ubmVjdEZyYW1lc0Zyb21QYWdlKFdlYlBhZ2VQcm94eSopOyAvLyBJbmNsdWRpbmcgbWFp
biBmcmFtZS4KICAgICBzaXplX3QgZnJhbWVDb3VudEluUGFnZShXZWJQYWdlUHJveHkqKSBjb25z
dDsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUuCiAKQEAgLTIwNCw3ICsyMDUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbExvYWQoKSB7IG1faGFzQ29tbWl0dGVkQW55
UHJvdmlzaW9uYWxMb2FkcyA9IHRydWU7IH0KICAgICBib29sIGhhc0NvbW1pdHRlZEFueVByb3Zp
c2lvbmFsTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFs
TG9hZHM7IH0KIAotICAgIHZvaWQgc3VzcGVuZFdlYlBhZ2VQcm94eShXZWJQYWdlUHJveHkmKTsK
KyAgICB2b2lkIHN1c3BlbmRXZWJQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0
aW9uJik7CiAgICAgdm9pZCBzdXNwZW5kZWRQYWdlV2FzRGVzdHJveWVkKFN1c3BlbmRlZFBhZ2VQ
cm94eSYpOwogCiAjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGRiMWMwMWM4ZTMwLi4xNmVi
NDQwMjE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCkBAIC0xNTEsNiArMTUxLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGxheVdhc1Jl
ZnJlc2hlZCgpOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoRHJhd2luZ0FyZWEo
KSB7IH07CisKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUsIFdl
YlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGU4YTNjYjdlNTE1Li5jODY4
OGFhYTg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCiAK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVk
ZSAiU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgpAQCAtNTQsMTEgKzU1LDEwIEBAIHN0YXRpYyBJRFRvSGlzdG9yeUl0ZW1NYXAmIGlk
VG9IaXN0b3J5SXRlbU1hcCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdm9pZCBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYgaXRlbUlELCBSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSwgdWludDY0X3QgcGFn
ZUlEKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3Mo
Y29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlELCBSZWY8SGlzdG9yeUl0ZW0+
JiYgaXRlbSwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0gb3ZlcndyaXRl
RXhpc3RpbmdJdGVtKQogewogICAgIC8vIFRoaXMgaXRlbS9pdGVtSUQgcGFpciBzaG91bGQgbm90
IGFscmVhZHkgZXhpc3QgaW4gb3VyIG1hcC4KLSAgICBBU1NFUlQoIWlkVG9IaXN0b3J5SXRlbU1h
cCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwotCisgICAgQVNTRVJUX1VOVVNFRChvdmVyd3JpdGVFeGlz
dGluZ0l0ZW0sIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSA9PSBPdmVyd3JpdGVFeGlzdGluZ0l0ZW06
OlllcyB8fCAhaWRUb0hpc3RvcnlJdGVtTWFwKCkuY29udGFpbnMoaXRlbUlEKSk7CiAgICAgaWRU
b0hpc3RvcnlJdGVtTWFwKCkuc2V0KGl0ZW1JRCwgaXRlbS5wdHIoKSk7CiB9CiAKQEAgLTk2LDYg
Kzk2LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbShSZWY8SGlzdG9y
eUl0ZW0+JiYgaXRlbSkKICAgICBhdXRvIHJlc3VsdCA9IGlkVG9IaXN0b3J5SXRlbU1hcCgpLmFk
ZChpdGVtLT5pZGVudGlmaWVyKCksIGl0ZW0ucHRyKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKKyAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9G
b3J3YXJkKSBXZWJQcm9jZXNzIHBpZCAlaSBzZXR0aW5nIGl0ZW0gJXAgZm9yIGlkICVzIHdpdGgg
dXJsICVzIiwgZ2V0cGlkKCksIGl0ZW0ucHRyKCksIGl0ZW0tPmlkZW50aWZpZXIoKS5sb2dTdHJp
bmcoKSwgaXRlbS0+dXJsU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbSh0b0JhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZShpdGVtLmdldCgpKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRl
eCBjYWQ3MGU4NjAyOS4uYzZmZTQzNzhjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaApAQCAtNDQs
OCArNDQsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRl
bUZvcklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKICAgICBz
dGF0aWMgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImKTsKIAotICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwg
dWludDY0X3QgcGFnZUlEKTsKLSAgICAKKyAgICBlbnVtIGNsYXNzIE92ZXJ3cml0ZUV4aXN0aW5n
SXRlbSB7CisgICAgICAgIFllcywKKyAgICAgICAgTm8KKyAgICB9OworICAgIHZvaWQgYWRkSXRl
bUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYs
IFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVF
eGlzdGluZ0l0ZW0pOworCiAgICAgdm9pZCBjbGVhcigpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMzNhMmVlNmEzOS4u
ZGE0YzFmNDc2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fdXNlckFn
ZW50ID0gcGFyYW1ldGVycy51c2VyQWdlbnQ7CiAgICAgCiAgICAgaWYgKCFwYXJhbWV0ZXJzLml0
ZW1TdGF0ZXMuaXNFbXB0eSgpKQotICAgICAgICByZXN0b3JlU2Vzc2lvbkludGVybmFsKHBhcmFt
ZXRlcnMuaXRlbVN0YXRlcywgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3Q6Ok5vKTsKKyAgICAgICAg
cmVzdG9yZVNlc3Npb25JbnRlcm5hbChwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMsIFdhc1Jlc3RvcmVk
QnlBUElSZXF1ZXN0OjpObywgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Ok92ZXJ3cml0ZUV4aXN0
aW5nSXRlbTo6Tm8pOwogCiAgICAgaWYgKHBhcmFtZXRlcnMuc2Vzc2lvbklELmlzVmFsaWQoKSkK
ICAgICAgICAgc2V0U2Vzc2lvbklEKHBhcmFtZXRlcnMuc2Vzc2lvbklEKTsKQEAgLTY0MSw2ICs2
NDEsOSBAQCB2b2lkIFdlYlBhZ2U6OmVuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFj
ZXMoKQogCiB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CisgICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEpOwor
ICAgIG1fZHJhd2luZ0FyZWEtPmF0dGFjaERyYXdpbmdBcmVhKCk7CisKICAgICBpZiAobV9hY3Rp
dml0eVN0YXRlICE9IHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKICAgICAgICAgc2V0QWN0aXZp
dHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBWZWN0b3I8Q2FsbGJhY2tJ
RD4oKSk7CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAhPSBwYXJhbWV0ZXJzLmxheWVySG9z
dGluZ01vZGUpCkBAIC0xMzk5LDcgKzE0MDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZAog
ICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKExvYWRpbmcsICJJbiBX
ZWJQcm9jZXNzLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3
YXJkIFVSTCAlcyIsIG1fcGFnZUlELCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBS
SXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIsIGdldHBpZCgpLCBt
X3BhZ2VJRCwgaXRlbS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NF
UlQoIW1fcGVuZGluZ05hdmlnYXRpb25JRCk7CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0g
bmF2aWdhdGlvbklEOwpAQCAtMjQ4MywxOCArMjQ4NiwyMyBAQCB2b2lkIFdlYlBhZ2U6OmV4ZWN1
dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFy
Z3VtZQogICAgIGV4ZWN1dGVFZGl0aW5nQ29tbWFuZChjb21tYW5kTmFtZSwgYXJndW1lbnQpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uSW50ZXJuYWwoY29uc3QgVmVjdG9yPEJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mIGl0ZW1TdGF0ZXMsIFdhc1Jlc3RvcmVkQnlBUElSZXF1
ZXN0IHJlc3RvcmVkQnlBUElSZXF1ZXN0KQordm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbklu
dGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiBpdGVtU3RhdGVz
LCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCByZXN0b3JlZEJ5QVBJUmVxdWVzdCwgV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6Ok92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGUpCiB7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBpdGVtU3RhdGUgOiBpdGVtU3RhdGVzKSB7CiAgICAgICAgIGF1dG8g
aGlzdG9yeUl0ZW0gPSB0b0hpc3RvcnlJdGVtKGl0ZW1TdGF0ZSk7CiAgICAgICAgIGhpc3RvcnlJ
dGVtLT5zZXRXYXNSZXN0b3JlZEZyb21TZXNzaW9uKHJlc3RvcmVkQnlBUElSZXF1ZXN0ID09IFdh
c1Jlc3RvcmVkQnlBUElSZXF1ZXN0OjpZZXMpOwotICAgICAgICBzdGF0aWNfY2FzdDxXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eSo+KGNvcmVQYWdlKCktPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkpLT5h
ZGRJdGVtRnJvbVVJUHJvY2VzcyhpdGVtU3RhdGUuaWRlbnRpZmllciwgV1RGTW92ZShoaXN0b3J5
SXRlbSksIG1fcGFnZUlEKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQmFja0ZvcndhcmRMaXN0
UHJveHkqPihjb3JlUGFnZSgpLT5iYWNrRm9yd2FyZCgpLmNsaWVudCgpKS0+YWRkSXRlbUZyb21V
SVByb2Nlc3MoaXRlbVN0YXRlLmlkZW50aWZpZXIsIFdURk1vdmUoaGlzdG9yeUl0ZW0pLCBtX3Bh
Z2VJRCwgb3ZlcndyaXRlKTsKICAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVzdG9yZVNlc3Np
b24oY29uc3QgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mIGl0ZW1TdGF0ZXMpCiB7
Ci0gICAgcmVzdG9yZVNlc3Npb25JbnRlcm5hbChpdGVtU3RhdGVzLCBXYXNSZXN0b3JlZEJ5QVBJ
UmVxdWVzdDo6WWVzKTsKKyAgICByZXN0b3JlU2Vzc2lvbkludGVybmFsKGl0ZW1TdGF0ZXMsIFdh
c1Jlc3RvcmVkQnlBUElSZXF1ZXN0OjpZZXMsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVy
d3JpdGVFeGlzdGluZ0l0ZW06Ok5vKTsKK30KKwordm9pZCBXZWJQYWdlOjp1cGRhdGVCYWNrRm9y
d2FyZExpc3RGb3JSZWF0dGFjaChjb25zdCBWZWN0b3I8V2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGU+JiBpdGVtU3RhdGVzKQoreworICAgIHJlc3RvcmVTZXNzaW9uSW50ZXJuYWwoaXRl
bVN0YXRlcywgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3Q6Ok5vLCBXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eTo6T3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBjM2M2MGYyNzFlNS4uN2FiZWFhYWRkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiVXNlckRhdGEu
aCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldlYlVS
TFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KQEAgLTExODUsOSArMTE4NiwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgbG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMJiYsIHVpbnQ2
NF90IGZyYW1lSUQpOwogCiAgICAgZW51bSBjbGFzcyBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCB7
IE5vLCBZZXMgfTsKLSAgICB2b2lkIHJlc3RvcmVTZXNzaW9uSW50ZXJuYWwoY29uc3QgVmVjdG9y
PEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mLCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCk7Cisg
ICAgdm9pZCByZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGU+JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOwogICAgIHZvaWQgcmVzdG9yZVNlc3Npb24o
Y29uc3QgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mKTsKICAgICB2b2lkIGRpZFJl
bW92ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJik7CisgICAgdm9pZCB1cGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChjb25zdCBW
ZWN0b3I8V2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+Jik7CiAKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKICAgICB2b2lkIHNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCAyYjkwMjFmYTcxNC4uZjlhNjFjZDg4YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
MTQ4LDYgKzE0OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFN0b3BMb2FkaW5nRnJhbWUodWludDY0X3QgZnJhbWVJRCkKICAgICAKICAgICBSZXN0b3JlU2Vz
c2lvbihWZWN0b3I8V2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXMp
CisgICAgVXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goVmVjdG9yPFdlYktpdDo6QmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBpdGVtU3RhdGVzKQogCiAgICAgRGlkUmVtb3ZlQmFja0Zv
cndhcmRJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tG
b3J3YXJkSXRlbUlEKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmlu
ZGV4IDZhZWZhMGNmZjUwLi40ZmY5OTQzMDE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRk
VHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChib29sKSBvdmVycmlkZTsKIAorICAgIHZvaWQg
YXR0YWNoRHJhd2luZ0FyZWEoKSBvdmVycmlkZTsKKwogICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50
Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBseVRyYW5zaWVudFpvb21Ub1Bh
Z2UoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggNzNiYTMyNGIwZmQuLmYyMTFlZmRj
YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC05NCw5
ICs5NCw3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5n
Q29udGV4dCgpOwogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKIAot
ICAgIExheWVyVHJlZUNvbnRleHQgbGF5ZXJUcmVlQ29udGV4dDsKLSAgICBsYXllclRyZWVDb250
ZXh0LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCk7Ci0gICAg
bV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OkVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVlQ29udGV4dCkpOworICAgIGF0dGFjaERyYXdp
bmdBcmVhKCk7CiB9CiAKIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEoKQpAQCAtMTA0LDYgKzEwMiwxNCBAQCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6flRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKCkKICAgICBt
X2xheWVyRmx1c2hTY2hlZHVsZXIuaW52YWxpZGF0ZSgpOwogfQogCisKK3ZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmF0dGFjaERyYXdpbmdBcmVhKCkKK3sKKyAgICBMYXllclRy
ZWVDb250ZXh0IGxheWVyVHJlZUNvbnRleHQ7CisgICAgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0
SUQgPSBtX2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpOworICAgIG1fd2ViUGFnZS5z
ZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKK30KKwogdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNWY3MGQ3M2MxNS4uYjk4M2Y2YzAy
NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxOC0wNC0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBiYWNrIGZvcndhcmQgY2FjaGUgd29yayB3aXRoIHByb2Nlc3Mg
c3dhcHBpbmcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODY3NjYwND4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3OTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisKIDIwMTgtMDQtMTggIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb11bRVdT
XSBCdWlsZCBib3Qgc2hvdWxkIGNsZWFuIHVzZXIgdGVtcCBkaXJlY3RvcnkgZWFjaCB0aW1lLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYjFmMWE3OTViODYuLjdkODY0ZmU2
YWMzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTM0OSwxNyArMzQ5LDEz
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEJhY2spCiAKICAgICBFWFBFQ1RfRVEoW3JlY2VpdmVkTWVz
c2FnZXMgY291bnRdLCAydSk7CiAgICAgRVhQRUNUX1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0
KClbMF0gaXNFcXVhbFRvU3RyaW5nOkAiUGFnZVNob3cgY2FsbGVkLiBQZXJzaXN0ZWQ6IGZhbHNl
LCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG51bGwiXSk7CisgICAgRVhQRUNUX1RSVUUo
W3JlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0gaXNFcXVhbFRvU3RyaW5nOkAiUGFnZVNob3cgY2Fs
bGVkLiBQZXJzaXN0ZWQ6IHRydWUsIGFuZCB3aW5kb3cuaGlzdG9yeS5zdGF0ZSBpczogb25sb2Fk
Q2FsbGVkIl0pOwogCi0gICAgLy8gRklYTUU6IFdlJ2QgbGlrZSB0byBnZXQgdGhlIHBhZ2UgcmVz
dG9yaW5nIGZyb20gdGhlIHBhZ2UgY2FjaGUgbGlrZSBiZWZvcmUgcHJvY2VzcyBzd2FwcGluZywg
d2hpY2ggd2lsbCBtYWtlIFBlcnNpc3RlZCBiZSAidHJ1ZSIKLSAgICAvLyBGb3Igbm93IGl0J3Mg
ZXhwZWN0ZWQgdG8gYmUgZmFsc2UiCi0gICAgRVhQRUNUX1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMu
Z2V0KClbMV0gaXNFcXVhbFRvU3RyaW5nOkAiUGFnZVNob3cgY2FsbGVkLiBQZXJzaXN0ZWQ6IGZh
bHNlLCBhbmQgd2luZG93Lmhpc3Rvcnkuc3RhdGUgaXM6IG9ubG9hZENhbGxlZCJdKTsKKyAgICBF
WFBFQ1RfRVEoMnUsIHNlZW5QSURzLnNpemUoKSk7CiAKICAgICBFWFBFQ1RfRkFMU0UocGlkMSA9
PSBwaWQyKTsKICAgICBFWFBFQ1RfRkFMU0UocGlkMiA9PSBwaWQzKTsKLQotICAgIC8vIEZJWE1F
OiBJZGVhbGx5IHdlJ2QgbGlrZSB0byBnZXQgcHJvY2VzcyBjYWNoaW5nIGhhcHBlbmluZyBzdWNo
IHRoYXQgcGlkMSBhbmQgcGlkMyBhcmUgZXF1YWwuCi0gICAgLy8gQnV0IGZvciBub3cgdGhleSBz
aG91bGQgbm90IGJlLgotICAgIEVYUEVDVF9GQUxTRShwaWQxID09IHBpZDMpOworICAgIEVYUEVD
VF9UUlVFKHBpZDEgPT0gcGlkMyk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC03OTEsNCAr
Nzg3LDg0IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE9uZVByZXZpb3VzUHJvY2Vzc1JlbWFpbnMpCiAg
ICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOwogfQogCitz
dGF0aWMgY29uc3QgY2hhciogcGFnZUNhY2hlMUJ5dGVzID0gUiJQU09OUkVTT1VSQ0UoCis8c2Ny
aXB0Pgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VzaG93JywgZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICBpZiAoZXZlbnQucGVyc2lzdGVkKQorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy5wc29uLnBvc3RNZXNzYWdlKCJXYXMgcGVyc2lzdGVkIik7Cit9KTsKKzwvc2Ny
aXB0PgorKVBTT05SRVNPVVJDRSI7CisKK1RFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VDYWNoZTEpCit7
CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nl
c3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZp
ZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vz
c1Bvb2wuZ2V0KCldOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFs
bG9jXSBpbml0XSk7CisgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29u
MTovL2hvc3QvbWFpbi5odG1sIiB0b0RhdGE6cGFnZUNhY2hlMUJ5dGVzXTsKKyAgICBbaGFuZGxl
ciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb24yOi8vaG9zdC9tYWluLmh0bWwiIHRvRGF0
YTpwYWdlQ2FjaGUxQnl0ZXNdOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTjEiXTsKKyAgICBbd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVS
TFNjaGVtZTpAIlBTT04yIl07CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhb
W1BTT05NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbd2ViVmlld0NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAicHNvbiJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uMTovL2hvc3QvbWFpbi5odG1sIl1dOwor
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIHBpZEFmdGVy
TG9hZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgRVhQRUNUX0VR
KDF1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOworCisgICAgcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uMjov
L2hvc3QvbWFpbi5odG1sIl1dOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7
CisKKyAgICBhdXRvIHBpZEFmdGVyTG9hZDIgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZp
ZXJdOworCisgICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0p
OworICAgIEVYUEVDVF9ORShwaWRBZnRlckxvYWQxLCBwaWRBZnRlckxvYWQyKTsKKworICAgIFt3
ZWJWaWV3IGdvQmFja107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1l
c3NhZ2UpOworICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRBZnRl
ckxvYWQzID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIEVYUEVDVF9F
USgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRdKTsKKyAgICBFWFBFQ1RfRVEocGlk
QWZ0ZXJMb2FkMSwgcGlkQWZ0ZXJMb2FkMyk7CisgICAgRVhQRUNUX0VRKDF1LCBbcmVjZWl2ZWRN
ZXNzYWdlcyBjb3VudF0pOworICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgp
WzBdIGlzRXF1YWxUb1N0cmluZzpAIldhcyBwZXJzaXN0ZWQiIF0pOworICAgIEVYUEVDVF9FUSgy
dSwgc2VlblBJRHMuc2l6ZSgpKTsKKworICAgIFt3ZWJWaWV3IGdvRm9yd2FyZF07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworICAgIHJlY2VpdmVkTWVz
c2FnZSA9IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
ZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRBZnRlckxvYWQ0ID0gW3dlYlZpZXcgX3dlYlBy
b2Nlc3NJZGVudGlmaWVyXTsKKworICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQ
cm9jZXNzQ291bnRdKTsKKyAgICBFWFBFQ1RfRVEocGlkQWZ0ZXJMb2FkMiwgcGlkQWZ0ZXJMb2Fk
NCk7CisgICAgRVhQRUNUX0VRKDJ1LCBbcmVjZWl2ZWRNZXNzYWdlcyBjb3VudF0pOworICAgIEVY
UEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdIGlzRXF1YWxUb1N0cmluZzpAIldh
cyBwZXJzaXN0ZWQiIF0pOworICAgIEVYUEVDVF9FUSgydSwgc2VlblBJRHMuc2l6ZSgpKTsKK30K
KwogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>