<?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>120049</bug_id>
          
          <creation_ts>2013-08-19 20:25:44 -0700</creation_ts>
          <short_desc>Delete code for Snow Leopard</short_desc>
          <delta_ts>2013-08-20 00:43:18 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>mrowe</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>918913</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-19 20:25:44 -0700</bug_when>
    <thetext>Nobody is building on Snow Leopard at this point. Delete all ifdefs to build on Mac OS X 10.6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918915</commentid>
    <comment_count>1</comment_count>
      <attachid>209151</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-19 20:29:33 -0700</bug_when>
    <thetext>Created attachment 209151
Removes ifdefs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918918</commentid>
    <comment_count>2</comment_count>
      <attachid>209153</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-19 20:38:41 -0700</bug_when>
    <thetext>Created attachment 209153
Removes ifdefs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918920</commentid>
    <comment_count>3</comment_count>
      <attachid>209153</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-19 20:53:06 -0700</bug_when>
    <thetext>Comment on attachment 209153
Removes ifdefs

Attachment 209153 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1513489</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918921</commentid>
    <comment_count>4</comment_count>
      <attachid>209154</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-19 20:55:36 -0700</bug_when>
    <thetext>Created attachment 209154
Fix non-mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918922</commentid>
    <comment_count>5</comment_count>
      <attachid>209153</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-19 20:55:37 -0700</bug_when>
    <thetext>Comment on attachment 209153
Removes ifdefs

Attachment 209153 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1512497</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918923</commentid>
    <comment_count>6</comment_count>
      <attachid>209154</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-08-19 20:59:32 -0700</bug_when>
    <thetext>Comment on attachment 209154
Fix non-mac builds

LGTM, but please wait for the bots, just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918945</commentid>
    <comment_count>7</comment_count>
      <attachid>209154</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-19 23:11:31 -0700</bug_when>
    <thetext>Comment on attachment 209154
Fix non-mac builds

Clearing flags on attachment: 209154

Committed r154314: &lt;http://trac.webkit.org/changeset/154314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918946</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-19 23:11:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918961</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-20 00:43:18 -0700</bug_when>
    <thetext>Windows build fix landed in http://trac.webkit.org/changeset/154317.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209151</attachid>
            <date>2013-08-19 20:29:33 -0700</date>
            <delta_ts>2013-08-19 20:38:38 -0700</delta_ts>
            <desc>Removes ifdefs</desc>
            <filename>bug-120049-20130819202932.patch</filename>
            <type>text/plain</type>
            <size>105634</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwNDk+IERl
bGV0ZSBjb2RlIGZvciBTbm93IExlb3BhcmQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKFdURjo6
VENNYWxsb2NfVGhyZWFkQ2FjaGU6OkNyZWF0ZUNhY2hlSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHd0Zi9GZWF0dXJlRGVmaW5lcy5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEz
LTA4LTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDAzNj4gW2lPU10gVXBzdHJlYW0gU291cmNlL1dURiBY
Y29kZSBwcm9qZWN0IGZvciBpT1MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAx
NTQyODgpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTA5OCw5ICs1MDk4LDcgQEAgZXh0ZXJuICJDIiB7CiBtYWxsb2NfaW50cm9zcGVjdGlvbl90
IGpzY29yZV9mYXN0bWFsbG9jX2ludHJvc3BlY3Rpb24gPSB7ICZGYXN0TWFsbG9jWm9uZTo6ZW51
bWVyYXRlLCAmRmFzdE1hbGxvY1pvbmU6Omdvb2RTaXplLCAmRmFzdE1hbGxvY1pvbmU6OmNoZWNr
LCAmRmFzdE1hbGxvY1pvbmU6OnByaW50LAogICAgICZGYXN0TWFsbG9jWm9uZTo6bG9nLCAmRmFz
dE1hbGxvY1pvbmU6OmZvcmNlTG9jaywgJkZhc3RNYWxsb2Nab25lOjpmb3JjZVVubG9jaywgJkZh
c3RNYWxsb2Nab25lOjpzdGF0aXN0aWNzCiAgICAgLCAwIC8vIHpvbmVfbG9ja2VkIHdpbGwgbm90
IGJlIGNhbGxlZCBvbiB0aGUgem9uZSB1bmxlc3MgaXQgYWR2ZXJ0aXNlcyBpdHNlbGYgYXMgdmVy
c2lvbiBmaXZlIG9yIGhpZ2hlci4KLSNpZiBPUyhJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMDcwCiAgICAgLCAwLCAwLCAwLCAwIC8vIFRoZXNlIG1lbWJlcnMgd2ls
bCBub3QgYmUgdXNlZCB1bmxlc3MgdGhlIHpvbmUgYWR2ZXJ0aXNlcyBpdHNlbGYgYXMgdmVyc2lv
biBzZXZlbiBvciBoaWdoZXIuCi0jZW5kaWYKIAogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgJKHJldmlzaW9uIDE1NDI4OCkKKysrIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwxNyArMTQ2LDEzIEBACiAjZGVmaW5lIEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSAxCiAjZW5kaWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogI2lmICFkZWZpbmVkKEVOQUJMRV9HRVNUVVJFX0VWRU5UUykK
ICNkZWZpbmUgRU5BQkxFX0dFU1RVUkVfRVZFTlRTIDEKICNlbmRpZgotI2VuZGlmCiAKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICNpZiAhZGVmaW5lZChFTkFC
TEVfUlVCQkVSX0JBTkRJTkcpCiAjZGVmaW5lIEVOQUJMRV9SVUJCRVJfQkFORElORyAxCiAjZW5k
aWYKLSNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1NNT09USF9TQ1JPTExJTkcpCiAjZGVm
aW5lIEVOQUJMRV9TTU9PVEhfU0NST0xMSU5HIDEKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24g
MTU0Mjg4KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAt
NTE2LDEwICs1MTYsOCBAQAogI2lmIENQVShYODZfNjQpCiAjZGVmaW5lIFdURl9VU0VfUExVR0lO
X0hPU1RfUFJPQ0VTUyAxCiAjZW5kaWYKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKICNkZWZpbmUgV1RGX1VTRV9TQ1JPTExCQVJfUEFJTlRFUiAxCiAjZGVmaW5l
IEhBVkVfWFBDIDEKLSNlbmRpZgogI2RlZmluZSBXVEZfVVNFX0NGIDEKICNkZWZpbmUgSEFWRV9S
RUFETElORSAxCiAjZGVmaW5lIEhBVkVfUlVOTE9PUF9USU1FUiAxCkBAIC05OTAsNyArOTg4LDcg
QEAKICNkZWZpbmUgRU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZIDEKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNzAKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAjZGVm
aW5lIFdURl9VU0VfQVZGT1VOREFUSU9OIDEKICNlbmRpZgogCkBAIC0xMDE4LDcgKzEwMTYsNyBA
QAogI2RlZmluZSBXVEZfVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRP
UiAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwKQorI2lmIFBMQVRGT1JNKE1BQykK
ICNkZWZpbmUgSEFWRV9JTlZFUlRFRF9XSEVFTF9FVkVOVFMgMQogI2VuZGlmCiAKQEAgLTEwNTEs
MTIgKzEwNDksMTIgQEAKICNkZWZpbmUgV1RGX1VTRV9BVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVO
VCAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwKQorI2lmIFBMQVRGT1JNKE1BQykK
IC8qIFNvbWUgcGxhdGZvcm1zIHByb3ZpZGUgVUkgZm9yIHN1Z2dlc3RpbmcgYXV0b2NvcnJlY3Rp
b24uICovCiAjZGVmaW5lIFdURl9VU0VfQVVUT0NPUlJFQ1RJT05fUEFORUwgMQogLyogU29tZSBw
bGF0Zm9ybXMgdXNlIHNwZWxsaW5nIGFuZCBhdXRvY29ycmVjdGlvbiBtYXJrZXJzIHRvIHByb3Zp
ZGUgdmlzdWFsIGN1ZS4gT24gc3VjaCBwbGF0Zm9ybSwgaWYgd29yZCB3aXRoIG1hcmtlciBpcyBl
ZGl0ZWQsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBtYXJrZXIuICovCiAjZGVmaW5lIFdURl9VU0Vf
TUFSS0VSX1JFTU9WQUxfVVBPTl9FRElUSU5HIDEKLSNlbmRpZiAvKiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzApICovCisjZW5kaWYgLyogI2lmIFBMQVRGT1JNKE1BQykgKi8KIAogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TKQogI2RlZmluZSBXVEZfVVNFX0FVRElPX1NFU1NJT04gMQpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTMtMDgtMTkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzEyMDA0OT4gRGVsZXRlIGNvZGUgZm9yIFNub3cgTGVvcGFyZAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZSBhbGwgdGhlIGNvZGUgZm9yIE1h
YyBPUyAxMC42LiBOb2JvZHkgYnVpbGRzIG9uIFNub3cgTGVvcGFyZCBhdCB0aGlzIHBvaW50Lgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6CisgICAgICAgICog
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBN
ZW51SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIp
OgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0J1c01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW06CisgICAgICAgIChQ
bGF0Zm9ybUNBTGF5ZXI6OmFjY2VsZXJhdGVzRHJhd2luZyk6CisgICAgICAgIChQbGF0Zm9ybUNB
TGF5ZXI6OnNldEFjY2VsZXJhdGVzRHJhd2luZyk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6
OmNvbnRlbnRzU2NhbGUpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50c1Nj
YWxlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c3luY2hyb25vdXNseURpc3BsYXlUaWxl
c0luUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9s
bGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldFNjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRBY2NlbGVyYXRlc0RyYXdpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9yUm91
bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0Rm9u
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpzaG93R2x5cGhzV2l0aEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bGF5ZXJIb3N0Q2hhbmdlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoZHJh
d0xheWVyQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW9t
ZW50dW1QaGFzZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBoYXNlRm9yRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJl
cXVlc3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9V
cGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVu
YXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvSHlwaGVuYXRpb25NYWMu
bW06IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRhaW5zUGFpbnRlZENv
bnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzaG91bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNl
ZCk6CisKIDIwMTMtMDgtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExOTkzMD4gaW5wdXRbdHlwZT1yYW5nZV06IEZp
eCBhIGNyYXNoIGJ5IGNoYW5naW5nIGlucHV0IHR5cGUgaW4gJ2lucHV0JyBldmVudCBoYW5kbGVy
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIzMDUsMjMgKzIzMDUsMTcg
QEAgX19aTjdXZWJDb3JlN0ludFNpemVDMUVSSzdfTlNTaXplCiBfX1pOSzdXZWJDb3JlN0ludFNp
emVjdjdfTlNTaXplRXYKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCi1fd2tHZXROU0V2ZW50TW9tZW50dW1QaGFz
ZQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA3MAogX3drQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhC
bG9jawogX3drQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZwogX3drQ0dQYXRoQWRkUm91
bmRlZFJlY3QKIF93a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRp
b25zCi0jZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MCkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisjaWYgIVBM
QVRGT1JNKElPU19TSU1VTEFUT1IpCiBfd2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlCiBfd2tJT1N1
cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2UKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCisjaWYgIVBMQVRGT1JNKElP
UykKIF93a0FWQXNzZXRSZXNvbHZlZFVSTAogX3drQ29weURlZmF1bHRTZWFyY2hQcm92aWRlckRp
c3BsYXlOYW1lCiBfd2tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlv
bgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05NjIsNyArOTYyLDYgQEAK
IAkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzJDMDBEODEyOTYxOUY4MDA1Qzk1
NzUgLyogRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzNzQ0NTcwRjBEQjA1RkE1MDBBRTA5OTIgLyogU1ZHR2x5cGhNYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NDQ1NzBFMERC
MDVGQTUwMEFFMDk5MiAvKiBTVkdHbHlwaE1hcC5oICovOyB9OwogCQkzNzVDRDIzMjExOUQ0M0M4
MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5o
ICovOyB9OwotCQkzNzVDRDIzQjExOUQ0NEVBMDBBMkE4NTkgLyogSHlwaGVuYXRpb25NYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzOTEx
OUQ0NEVBMDBBMkE4NTkgLyogSHlwaGVuYXRpb25NYWMubW0gKi87IH07CiAJCTM3NkRDQ0UxMTNC
NEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNw
cCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVz
dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3N0EzQTkw
MTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBC
aXRtYXBJbWFnZUNHLmNwcCAqLzsgfTsKQEAgLTE2NzYsNyArMTY3NSw2IEBACiAJCTVEQTk3RUNF
MTY4RTc4N0IwMDBFMzY3NiAvKiBTeXN0ZW1WZXJzaW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURBOTdFQ0MxNjhFNzg3QjAwMEUzNjc2IC8q
IFN5c3RlbVZlcnNpb25NYWMubW0gKi87IH07CiAJCTVEQjFCQzZBMTA3MTVBNjQwMEVGQUE0OSAv
KiBUcmFuc2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAq
LzsgfTsKIAkJNURCMUJDNkIxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNvdXJjZUxpYnhz
bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURC
MUJDNjkxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwICovOyB9
OwotCQk1REM4N0VGMDExNzE2REYyMDAxQzBFNkQgLyogRW1wdHlQcm90b2NvbERlZmluaXRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REM4N0VF
RjExNzE2REYyMDAxQzBFNkQgLyogRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNURGN0Y1QzIwRjAxRjky
QTAwNTI2QjRCIC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MEVGMDlEMTJCMjAwMDBF
NjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggKi87IH07CiAJCTVERkU4RjU2MEQxNjQ3N0IwMDc2
RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFj
dGlvbi5jcHAgKi87IH07CiAJCTVERkU4RjU3MEQxNjQ3N0MwMDc2RTkzNyAvKiBTY2hlZHVsZWRB
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uaCAqLzsgfTsKQEAgLTcy
NjIsNyArNzI2MCw2IEBACiAJCTM3NTY5RTAwMTNBRjE3MkMwMENEQkE4RSAvKiBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3NTY5RTAyMTNBRjE3MkMwMENEQkE4RSAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkg
LyogSHlwaGVuYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSHlwaGVu
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzc1Q0QyMzkxMTlENDRFQTAw
QTJBODU5IC8qIEh5cGhlbmF0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSHlwaGVuYXRpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9wdXBPcGVuaW5nT2JzZXJ2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3
REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgwNDUsNyArODA0Miw2IEBACiAJCTVEQTk3RUNDMTY4RTc4N0IwMDBFMzY3
NiAvKiBTeXN0ZW1WZXJzaW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU3lzdGVtVmVyc2lvbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNURCMUJDNjgxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNvdXJjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1Tb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNURCMUJDNjkxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNv
dXJjZUxpYnhzbHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJh
bnNmb3JtU291cmNlTGlieHNsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVE
Qzg3RUVGMTE3MTZERjIwMDFDMEU2RCAvKiBFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVGQzdEQzI2Q0ZFMjU2MzIwMEI4NUFFNSAv
KiBKU0V2ZW50VGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2
ZW50VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYyNkNERTBDMTE0MDQy
NEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTcGF0aWFsTmF2aWdhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTYyNkNERTBEMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGF0aWFsTmF2aWdhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MzgsNyArMTQ1MzQsNiBAQAogCQkJ
CUE3OTU0NjNEMEI1QzRDODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSAqLywKIAkJCQlBN0NG
QjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLAogCQkJCUUxQkE2NkYw
MTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCAqLywKLQkJCQk1
REM4N0VFRjExNzE2REYyMDAxQzBFNkQgLyogRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmggKi8s
CiAJCQkJMUNBMTlFMDMwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1hYy5tbSAqLywKIAkJ
CQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbU1hYy5tbSAqLywKIAkJCQk5
MzVDNDc2QzA5QUM0RDYzMDBBNkFBQjQgLyogRm91bmRhdGlvbkV4dHJhcy5oICovLApAQCAtMTg1
MTMsNyArMTg1MDgsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQjJBRkZDODUwRDAwQTVERjAw
MzAwNzREIC8qIGNoYXJhY3Rlci1zZXRzLnR4dCAqLywKIAkJCQlCMkMzRDlGQTBEMDA2QzFEMDBF
RjZGMjYgLyogQ2hhcnNldERhdGEuaCAqLywKLQkJCQkzNzVDRDIzOTExOUQ0NEVBMDBBMkE4NTkg
LyogSHlwaGVuYXRpb25NYWMubW0gKi8sCiAJCQkJRjU5NzNEREUxNUNGQjIwMzAwMjdGODA0IC8q
IExvY2FsZU1hYy5oICovLAogCQkJCUY1OTczRERGMTVDRkIyMDMwMDI3RjgwNCAvKiBMb2NhbGVN
YWMubW0gKi8sCiAJCQkJQjJBRkZDODYwRDAwQTVERjAwMzAwNzREIC8qIG1hYy1lbmNvZGluZ3Mu
dHh0ICovLApAQCAtMjE2NzksNyArMjE2NzMsNiBAQAogCQkJCUE4Q0ZGNkJFMEExNTYxMTgwMDBB
NDIzNCAvKiBFbGxpcHNpc0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQkMxMjUxRjEy
RDAwM0VGMjY5IC8qIEVtYWlsSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTlB
NTBEMDBEOEJBMDBCQjgyNUMgLyogRW1wdHlDbGllbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQk1
REM4N0VGMDExNzE2REYyMDAxQzBFNkQgLyogRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEVBN0VDMjBBMTk0NUQwMDBBOEVGNUYgLyogRW50aXR5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEVBN0VDMDBBMTk0NUQwMDBBOEVGNUYgLyogRW50aXR5UmVmZXJl
bmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTg3ODU1QTEyMkNBMDY0MDAzQUFCREEgLyogRW50
cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTg5LDcgKzI1MTgyLDYgQEAKIAkJ
CQkwQjhDNTZENDBGMjg2MjdGMDAwNTAyRTEgLyogSFRUUEhlYWRlck1hcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTRDNzY3MjBDRTkyM0ExMDA3RUYzQ0QgLyogSFRUUFBhcnNlcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzcxQTY3Q0IxMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9u
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzc1Q0QyM0IxMTlENDRFQTAwQTJBODU5IC8qIEh5
cGhlbmF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdFNDAyOEYxM0E2OTZFRDAwOTEz
RDY3IC8qIEljb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMjZFNkJCMEEy
RTNCMTIwMDVDMjlGQSAvKiBJY29uRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2
OTUzOTcxMzI5QTNDODAwQjkyRDA0IC8qIEljb25EYXRhYmFzZUJhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCShyZXZpc2lv
biAxNTQyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc4LDI1ICs3OCw5IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0
ZWJvYXJkKFBhc3RlYm8KICAgICBib29sIGNob29zZVBsYWluVGV4dDsKICAgICAKICAgICBtX2Zy
YW1lLmVkaXRvcigpLmNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKE5TR2VuZXJhbFBi
b2FyZCk7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBwYXN0
ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KCZtX2ZyYW1lLCByYW5nZSwgYWxsb3dQbGFpblRleHQs
IGNob29zZVBsYWluVGV4dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdt
ZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKICAgICAgICAg
cGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChw
YXN0ZWJvYXJkKSwgZmFsc2UpOwotI2Vsc2UKLSAgICAvLyBNYWlsIGlzIGlnbm9yaW5nIHRoZSBm
cmFtZW50IHBhc3NlZCB0byB0aGUgZGVsZWdhdGUgYW5kIGNyZWF0ZXMgYSBuZXcgb25lLgotICAg
IC8vIFdlIHdhbnQgdG8gYXZvaWQgY3JlYXRpbmcgdGhlIGZyYWdtZW50IHR3aWNlLgotICAgIGlm
IChhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCkpIHsKLSAgICAgICAgaWYgKHNob3VsZEluc2VydEZy
YWdtZW50KE5VTEwsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1
bWVudEZyYWdtZW50KCZtX2ZyYW1lLCByYW5nZSwgYWxsb3dQbGFpblRleHQsIGNob29zZVBsYWlu
VGV4dCk7Ci0gICAgICAgICAgICBpZiAoZnJhZ21lbnQpCi0gICAgICAgICAgICAgICAgcGFzdGVB
c0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJv
YXJkKSwgZmFsc2UpOwotICAgICAgICB9ICAgICAgICAKLSAgICB9IGVsc2UgewotICAgICAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD5mcmFnbWVudCA9IHBhc3RlYm9hcmQtPmRvY3VtZW50RnJh
Z21lbnQoJm1fZnJhbWUsIHJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvb3NlUGxhaW5UZXh0KTsK
LSAgICAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCBy
YW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKLSAgICAgICAgICAgIHBhc3RlQXNGcmFn
bWVudChmcmFnbWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCks
IGZhbHNlKTsKLSAgICB9Ci0jZW5kaWYKICAgICBtX2ZyYW1lLmVkaXRvcigpLmNsaWVudCgpLT5z
ZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTU0Mjg4KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MzIsMTQgKzczMiw2IEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5z
UG9zc2libGVXb3IKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID09IDEwNjAKLSNkZWZpbmUgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVY
VF9NRU5VX0lURU0gMQotI2Vsc2UKLSNkZWZpbmUgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVYVF9N
RU5VX0lURU0gMAotI2VuZGlmCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUg
U1VQUE9SVFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMQogI2Vsc2UKICNkZWZpbmUgU1VQUE9S
VFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMApAQCAtODkwLDIyICs4ODIsMTMgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIHNlbGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rp
bmcoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAg
Q29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4
dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJ
bkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKIAotI2lmIElOQ0xVREVfU1BPVExJR0hUX0NP
TlRFWFRfTUVOVV9JVEVNCi0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2VhcmNoU3Bv
dGxpZ2h0SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0jZWxzZQogICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRJdGVtKExvb2tVcEluRGljdGlvbmFyeUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0
KCkpOwogI2VuZGlmCi0jZW5kaWYKIAogI2lmICFQTEFURk9STShHVEspCiAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oU2VhcmNoV2ViSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0
TWVudS5nZXQoKSk7CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykgJiYgSU5DTFVERV9TUE9U
TElHSFRfQ09OVEVYVF9NRU5VX0lURU0KLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShM
b29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgp
KTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGFwcGVuZEl0
ZW0oQ29weUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpAQCAtMTAzMCwyMiArMTAxMywxMyBA
QCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgU3Ry
aW5nIHNlbGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rp
bmcoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRl
bVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9u
YXJ5KHNlbGVjdGVkU3RyaW5nKSk7CiAKLSNpZiBJTkNMVURFX1NQT1RMSUdIVF9DT05URVhUX01F
TlVfSVRFTQotICAgICAgICAgICAgYXBwZW5kSXRlbShTZWFyY2hTcG90bGlnaHRJdGVtLCBtX2Nv
bnRleHRNZW51LmdldCgpKTsKLSNlbHNlCiAgICAgICAgICAgICBhcHBlbmRJdGVtKExvb2tVcElu
RGljdGlvbmFyeUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCi0jZW5kaWYKIAog
I2lmICFQTEFURk9STShHVEspCiAgICAgICAgICAgICBhcHBlbmRJdGVtKFNlYXJjaFdlYkl0ZW0s
IG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9y
SXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFD
KSAmJiBJTkNMVURFX1NQT1RMSUdIVF9DT05URVhUX01FTlVfSVRFTQotICAgICAgICAgICAgYXBw
ZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKLSAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQo
KSk7Ci0jZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIGFwcGVuZEl0ZW0oQ3V0SXRlbSwgbV9j
b250ZXh0TWVudS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6
ZWRTdHJpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmNwcAkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDYg
QEAgc3RhdGljIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaQogI2VuZGlmCiB9CiAK
LSNpZiAhUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogc3RhdGljIFN0cmluZyB0cnVuY2F0ZWRTdHJpbmdGb3JM
b29rdXBNZW51SXRlbShjb25zdCBTdHJpbmcmIG9yaWdpbmFsKQogewogICAgIGlmIChvcmlnaW5h
bC5pc0VtcHR5KCkpCkBAIC04NSw3ICs4NCw2IEBAIHN0YXRpYyBTdHJpbmcgdHJ1bmNhdGVkU3Ry
aW5nRm9yTG9va3VwTWUKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYXJhY3RlcnMgPSBudW1DaGFy
YWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKHRyaW1tZWQsIG1heE51bWJlck9mR3JhcGhlbWVDbHVz
dGVyc0luTG9va3VwTWVudUl0ZW0pOwogICAgIHJldHVybiBudW1iZXJPZkNoYXJhY3RlcnMgPT0g
dHJpbW1lZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiB0cmltbWVkLmxlZnQobnVtYmVyT2ZDaGFyYWN0
ZXJzKSArIGVsbGlwc2lzOwogfQotI2VuZGlmCiAKIFN0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0
KCkKIHsKQEAgLTI0Myw3ICsyNDEsNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNo
SW5TcG90bGlnCiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQogewotI2lm
IFBMQVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHNlYXJjaFByb3ZpZGVyTmFtZSA9IGFkb3B0Q0Yod2tDb3B5RGVmYXVsdFNlYXJj
aFByb3ZpZGVyRGlzcGxheU5hbWUoKSk7CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfU1RSSU5HKCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2ggcHJv
dmlkZXIgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiksIHNl
YXJjaFByb3ZpZGVyTmFtZS5nZXQoKSk7CiAjZWxzZQpAQCAtMjUzLDE3ICsyNTEsMTIgQEAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpCiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIHsK
LSNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPT0gMTA2MAotICAgIFVOVVNFRF9QQVJBTShzZWxlY3RlZFN0cmluZyk7
Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIsICJMb29r
IFVwIGluIERpY3Rpb25hcnkgY29udGV4dCBtZW51IGl0ZW0iKTsKLSNlbHNlCiAjaWYgVVNFKENG
KQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmluZyA9IHRydW5jYXRl
ZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygp
OwogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiTG9vayBV
cCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29y
ZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUg
aXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHRydW5jYXRl
ZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKSk7CiAjZW5kaWYKLSNlbmRp
ZgogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCShyZXZp
c2lvbiAxNTQyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsNCBAQCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuCiB7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2
MAotCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpIHsgfQotdm9pZCBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpIHsgfQotdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OmhvbGRPZmYodW5zaWduZWQpIHsgfQotdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKCkgeyB9Ci12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6cmVsZWFzZU1lbW9yeShib29sKSB7IH0KLQotI2VuZGlmCi0gCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9CdXNN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvQnVzTWFjLm1tCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9CdXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDExICs0OSw3
IEBAIFBhc3NSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpsb2FkUGxhdGYKICAgICAKICAgICBO
U0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlQXVkaW9C
dW5kbGVDbGFzcyBjbGFzc11dOwogICAgIE5TVVJMICphdWRpb0ZpbGVVUkwgPSBbYnVuZGxlIFVS
TEZvclJlc291cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSB3aXRoRXh0
ZW5zaW9uOkAid2F2IiBzdWJkaXJlY3Rvcnk6QCJhdWRpbyJdOwotI2lmICFQTEFURk9STShJT1Mp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAotICAgIE5TRGF0YVJl
YWRpbmdPcHRpb25zIG9wdGlvbnMgPSBOU0RhdGFSZWFkaW5nTWFwcGVkOwotI2Vsc2UKICAgICBO
U0RhdGFSZWFkaW5nT3B0aW9ucyBvcHRpb25zID0gTlNEYXRhUmVhZGluZ01hcHBlZElmU2FmZTsK
LSNlbmRpZgogICAgIE5TRGF0YSAqYXVkaW9EYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRz
T2ZVUkw6YXVkaW9GaWxlVVJMIG9wdGlvbnM6b3B0aW9ucyBlcnJvcjpuaWxdOwogCiAgICAgaWYg
KGF1ZGlvRGF0YSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiAxNTQyODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTA2LDcgKzIxMDYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
Y3JlYXRlVHJhbnNmb3JtQW5pCiAgICAgaW50IG51bUFuaW1hdGlvbnMgPSBpc01hdHJpeEFuaW1h
dGlvbiA/IDEgOiBvcGVyYXRpb25zLT5zaXplKCk7CiAKICAgICBib29sIHJldmVyc2VBbmltYXRp
b25MaXN0ID0gdHJ1ZTsKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKKyNpZiAhUExBVEZPUk0oSU9T
KSAmJiAhUExBVEZPUk0oV0lOKQogICAgICAgICAvLyBPbGQgdmVyc2lvbnMgb2YgQ29yZSBBbmlt
YXRpb24gYXBwbHkgYW5pbWF0aW9ucyBpbiByZXZlcnNlIG9yZGVyICg8cmRhcjovL3Byb2JsZW0v
NzA5NTYzOD4pIHNvIHdlIG5lZWQgdG8gZmxpcCB0aGUgbGlzdC4KICAgICAgICAgLy8gdG8gYmUg
bm9uLWFkZGl0aXZlLiBGb3IgYmluYXJ5IGNvbXBhdGliaWxpdHksIHRoZSBjdXJyZW50IHZlcnNp
b24gb2YgQ29yZSBBbmltYXRpb24gcHJlc2VydmVzIHRoaXMgYmVoYXZpb3IgZm9yIGFwcGxpY2F0
aW9ucyBsaW5rZWQKICAgICAgICAgLy8gb24gb3IgYmVmb3JlIFNub3cgTGVvcGFyZC4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5oCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDcgKzIy
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW50VHJlZSgpIGNvbnN0OwogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShNQUMpICYmIChQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MCkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzeW5jaHJv
bm91c2x5RGlzcGxheVRpbGVzSW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDIwICsxMDAsMTYgQEAgLSAodm9pZClzZXRPd25lcjooUGxh
dGZvcm1DQUxheWVyKilvd25lcgogCiBAZW5kCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogQGludGVyZmFjZSBDQVRpbGVkTGF5
ZXIoR3JhcGhpY3NMYXllckNBUHJpdmF0ZSkKIC0gKHZvaWQpZGlzcGxheUluUmVjdDooQ0dSZWN0
KXIgbGV2ZWxPZkRldGFpbDooaW50KWxvZCBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilkaWN0Owog
LSAoQk9PTCljYW5EcmF3Q29uY3VycmVudGx5OwogLSAodm9pZClzZXRDYW5EcmF3Q29uY3VycmVu
dGx5OihCT09MKWZsYWc7CiBAZW5kCi0jZW5kaWYKIAogQGludGVyZmFjZSBDQUxheWVyKFByaXZh
dGUpCiAtICh2b2lkKXNldENvbnRlbnRzQ2hhbmdlZDsKLSNpZiBQTEFURk9STShJT1MpIHx8IF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogLSAodm9pZClzZXRBY2NlbGVy
YXRlc0RyYXdpbmc6KEJPT0wpZmxhZzsKIC0gKEJPT0wpYWNjZWxlcmF0ZXNEcmF3aW5nOwotI2Vu
ZGlmCiBAZW5kCiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50
ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKQEAgLTYwMSwyMiArNTk3LDE0IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzZXRNYXNrc1RvQm91bmRzKGIKIAogYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6
OmFjY2VsZXJhdGVzRHJhd2luZygpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICByZXR1cm4gW21fbGF5ZXIu
Z2V0KCkgYWNjZWxlcmF0ZXNEcmF3aW5nXTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9v
bCBhY2NlbGVyYXRlc0RyYXdpbmcpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKICAgICBbbV9sYXllci5nZXQoKSBzZXRBY2NlbGVyYXRlc0RyYXdpbmc6YWNjZWxlcmF0
ZXNEcmF3aW5nXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShhY2NlbGVyYXRlc0RyYXdpbmcpOwotI2VuZGlmCiB9CiAKIENGVHlwZVJlZiBQ
bGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRzKCkgY29uc3QKQEAgLTgwOSwyMiArNzk3LDE0IEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyOjpzZXRUaW1lT2Zmc2V0KENGVGkKIAogZmxvYXQgUGxhdGZvcm1D
QUxheWVyOjpjb250ZW50c1NjYWxlKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpIHx8IF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIHJldHVybiBbbV9sYXll
ci5nZXQoKSBjb250ZW50c1NjYWxlXTsKLSNlbHNlCi0gICAgcmV0dXJuIDE7Ci0jZW5kaWYKIH0K
IAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgdmFsdWUpCiB7
Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBbbV9sYXllci5nZXQo
KSBzZXRDb250ZW50c1NjYWxlOnZhbHVlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5kaWYKIH0KIAogVGlsZWRCYWNr
aW5nKiBQbGF0Zm9ybUNBTGF5ZXI6OnRpbGVkQmFja2luZygpCkBAIC04MzYsNyArODE2LDYgQEAg
VGlsZWRCYWNraW5nKiBQbGF0Zm9ybUNBTGF5ZXI6OnRpbGVkQmFjawogICAgIHJldHVybiBbdGls
ZWRCYWNraW5nTGF5ZXIgdGlsZWRCYWNraW5nXTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykgfHwg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6c3luY2hyb25vdXNseURpc3BsYXlUaWxlc0luUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7CiAgICAgaWYgKG1fbGF5ZXJUeXBlICE9IExheWVyVHlwZVdlYlRpbGVkTGF5ZXIpCkBA
IC04NTEsNyArODMwLDYgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnN5bmNocm9ub3VzbHlEaXNw
bAogICAgIFt0aWxlZExheWVyIHNldENhbkRyYXdDb25jdXJyZW50bHk6b2xkQ2FuRHJhd0NvbmN1
cnJlbnRseV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQotI2VuZGlmCiAKIEFW
UGxheWVyTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcjo6cGxheWVyTGF5ZXIoKSBjb25zdAogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ29udHJvbGxlci5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxMSArNDAsOSBAQAogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi0jaWYgUExBVEZP
Uk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIEBpbnRl
cmZhY2UgQ0FMYXllciAoV2ViQ0FMYXllckRldGFpbHMpCiAtICh2b2lkKXNldEFjY2VsZXJhdGVz
RHJhd2luZzooQk9PTClmbGFnOwogQGVuZAotI2VuZGlmCiAKIEBpbnRlcmZhY2UgV2ViVGlsZWRT
Y3JvbGxpbmdJbmRpY2F0b3JMYXllciA6IENBTGF5ZXIgewogICAgIFdlYkNvcmU6OlRpbGVDb250
cm9sbGVyKiBfdGlsZUNvbnRyb2xsZXI7CkBAIC0yNDMsNyArMjQxLDYgQEAgdm9pZCBUaWxlQ29u
dHJvbGxlcjo6c2V0U2NhbGUoQ0dGbG9hdCBzYwogICAgIGlmIChtX3NjYWxlID09IHNjYWxlICYm
IG1fZGV2aWNlU2NhbGVGYWN0b3IgPT0gZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgICAgIHJldHVy
bjsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCiAgICAgVmVjdG9yPEZsb2F0UmVjdD4gZGlydHlSZWN0czsKIAogICAgIG1fZGV2
aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKQEAgLTI2NCwxMiArMjYxLDEwIEBA
IHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldFNjYWxlKENHRmxvYXQgc2MKICAgICB9CiAKICAgICBw
bGF0Zm9ybUxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEaWRDcmVhdGVUaWxlcyhkaXJ0
eVJlY3RzKTsKLSNlbmRpZgogfQogCiB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRBY2NlbGVyYXRl
c0RyYXdpbmcoYm9vbCBhY2NlbGVyYXRlc0RyYXdpbmcpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8
fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBpZiAobV9hY2Nl
bGVyYXRlc0RyYXdpbmcgPT0gYWNjZWxlcmF0ZXNEcmF3aW5nKQogICAgICAgICByZXR1cm47CiAK
QEAgLTI3OSw5ICsyNzQsNiBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRBY2NlbGVyYXRlc0Ry
YXdpCiAgICAgICAgIGNvbnN0IFRpbGVJbmZvJiB0aWxlSW5mbyA9IGl0LT52YWx1ZTsKICAgICAg
ICAgW3RpbGVJbmZvLmxheWVyLmdldCgpIHNldEFjY2VsZXJhdGVzRHJhd2luZzptX2FjY2VsZXJh
dGVzRHJhd2luZ107CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oYWNjZWxlcmF0ZXNE
cmF3aW5nKTsKLSNlbmRpZgogfQogCiB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRUaWxlc09wYXF1
ZShib29sIG9wYXF1ZSkKQEAgLTEwMjIsMTAgKzEwMTQsOCBAQCBSZXRhaW5QdHI8V2ViVGlsZUxh
eWVyPiBUaWxlQ29udHJvbGxlcjo6CiAgICAgW2xheWVyLmdldCgpIHNldE5hbWU6QCJUaWxlIl07
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwCiAgICAgW2xheWVyLmdldCgpIHNldENvbnRlbnRzU2NhbGU6bV9kZXZp
Y2VTY2FsZUZhY3Rvcl07CiAgICAgW2xheWVyLmdldCgpIHNldEFjY2VsZXJhdGVzRHJhd2luZzpt
X2FjY2VsZXJhdGVzRHJhd2luZ107Ci0jZW5kaWYKIAogICAgIFtsYXllciBzZXROZWVkc0Rpc3Bs
YXldOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckRhdGFDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDE4ICs2Miw2IEBAIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZm
ZXJEYXRhKGNvbnN0IEkKIAogI2lmIFVTRShBQ0NFTEVSQVRFKQogCi0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01BWF9BTExPV0VEID49IDEwNzAKLXN0YXRpYyBib29sIGhhdmVWSW1hZ2VSb3VuZGlu
Z0Vycm9yRml4KCkgeyByZXR1cm4gdHJ1ZTsgfQotI2Vsc2UKLS8vIFRoZSB2SW1hZ2UgdW5wcmVt
dWx0aXBseSByb3V0aW5lIGhhZCBhIHJvdW5kaW5nIGJ1ZyBiZWZvcmUgMTAuNi43IDxyZGFyOi8v
cHJvYmxlbS84NjMxNTQ4Pgotc3RhdGljIGJvb2wgaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgo
KQotewotICAgIFNJbnQzMiB2ZXJzaW9uOwotICAgIHN0YXRpYyBib29sIHJlc3VsdCA9IChHZXN0
YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0gbm9FcnIgJiYgdmVyc2lvbiA+
IDB4MTA2Nik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvLyBfX01BQ19PU19YX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTA3MAotCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkKIHN0YXRpYyB2b2lkIGNvbnZlcnRTY2FubGluZSh2b2lkKiBkYXRhLCBzaXpl
X3QgdGlsZU51bWJlciwgYm9vbCBwcmVtdWx0aXBseSkKIHsKQEAgLTE3Niw3ICsxNjQsNyBAQCBQ
YXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlCiAgICAgICAgIHNyY1Jvd3Mg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEpICsgb3JpZ2lueSAqIHNy
Y0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CiAgICAgICAgIAogI2lmIFVTRShBQ0NFTEVSQVRF
KQotICAgICAgICBpZiAodW5tdWx0aXBsaWVkICYmIGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4
KCkpIHsKKyAgICAgICAgaWYgKHVubXVsdGlwbGllZCkgewogICAgICAgICAgICAgdkltYWdlX0J1
ZmZlciBzcmM7CiAgICAgICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0LnVuc2FmZUdldCgpOwog
ICAgICAgICAgICAgc3JjLndpZHRoID0gd2lkdGgudW5zYWZlR2V0KCk7CkBAIC0zOTksNyArMzg3
LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoVWludDhDbGFtcAogICAgICAgICBk
ZXN0Um93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyAoZGVz
dHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQpLnVuc2FmZUdldCgpOwogICAgICAgICAK
ICNpZiAgVVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIGlmIChoYXZlVkltYWdlUm91bmRpbmdFcnJv
ckZpeCgpICYmIHVubXVsdGlwbGllZCkgeworICAgICAgICBpZiAodW5tdWx0aXBsaWVkKSB7CiAg
ICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKICAgICAgICAgICAgIHNyYy5oZWlnaHQgPSBo
ZWlnaHQudW5zYWZlR2V0KCk7CiAgICAgICAgICAgICBzcmMud2lkdGggPSB3aWR0aC51bnNhZmVH
ZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyRGF0YUNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBVU0UoQ0EpICYmIChQ
TEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MCkp
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoQ0EpCiAjZGVmaW5lIFdURl9VU0VfSU9TVVJGQUNF
X0NBTlZBU19CQUNLSU5HX1NUT1JFIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHJldmlzaW9uIDE1NDI4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NSw3ICsyNTUsNiBAQCB2b2lkIFBhdGg6OmFkZEFyY1RvKGNvbnN0IEZsb2F0
UG9pbnQmIHAxCiAKIHZvaWQgUGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0
IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJh
ZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cykKIHsKLSNpZiBQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGJv
b2wgZXF1YWxXaWR0aHMgPSAodG9wTGVmdFJhZGl1cy53aWR0aCgpID09IHRvcFJpZ2h0UmFkaXVz
LndpZHRoKCkgJiYgdG9wUmlnaHRSYWRpdXMud2lkdGgoKSA9PSBib3R0b21MZWZ0UmFkaXVzLndp
ZHRoKCkgJiYgYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpID09IGJvdHRvbVJpZ2h0UmFkaXVzLndp
ZHRoKCkpOwogICAgIGJvb2wgZXF1YWxIZWlnaHRzID0gKHRvcExlZnRSYWRpdXMuaGVpZ2h0KCkg
PT0gYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSAmJiBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgp
ID09IHRvcFJpZ2h0UmFkaXVzLmhlaWdodCgpICYmIHRvcFJpZ2h0UmFkaXVzLmhlaWdodCgpID09
IGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgpKTsKIApAQCAtMjYzLDcgKzI2Miw2IEBAIHZvaWQg
UGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QKICAgICAgICAgd2tDR1BhdGhBZGRS
b3VuZGVkUmVjdChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwgMCwgcmVjdCwgdG9wTGVmdFJhZGl1cy53
aWR0aCgpLCB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSNlbmRpZgogCiAgICAgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnRSYWRp
dXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxh
dGZvcm1EYXRhQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCShyZXZpc2lvbiAxNTQyODgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDYgQEAgRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShOU0ZvbgogCiAgICAgQ0dGb250UmVmIGNnRm9udCA9IDA7
CiAgICAgbG9hZEZvbnQobnNGb250LCBzaXplLCBtX2ZvbnQsIGNnRm9udCk7Ci0gICAgCi0jaWYg
UExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
ICAgICB7CiAgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IENURm9udEdldFN5
bWJvbGljVHJhaXRzKHRvQ1RGb250UmVmKG1fZm9udCkpOwogICAgICAgICBtX2lzQ29sb3JCaXRt
YXBGb250ID0gdHJhaXRzICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7CkBAIC02NSw3ICs2Myw2
IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoTlNGb24KICAgICAgICAgbV9p
c0NvbXBvc2l0ZUZvbnRSZWZlcmVuY2UgPSB0cmFpdHMgJiBrQ1RGb250Q29tcG9zaXRlVHJhaXQ7
CiAjZW5kaWYKICAgICB9Ci0jZW5kaWYKIAogICAgIGlmIChtX2ZvbnQpCiAgICAgICAgIENGUmV0
YWluKG1fZm9udCk7CkBAIC0xMjcsNyArMTI0LDYgQEAgdm9pZCBGb250UGxhdGZvcm1EYXRhOjpz
ZXRGb250KE5TRm9udCAqZgogICAgIGxvYWRGb250KG1fZm9udCwgbV9zaXplLCBsb2FkZWRGb250
LCBjZ0ZvbnQpOwogCiAgICAgbV9jZ0ZvbnQgPSBhZG9wdENGKGNnRm9udCk7Ci0jaWYgUExBVEZP
Uk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICB7
CiAgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IENURm9udEdldFN5bWJvbGlj
VHJhaXRzKHRvQ1RGb250UmVmKG1fZm9udCkpOwogICAgICAgICBtX2lzQ29sb3JCaXRtYXBGb250
ID0gdHJhaXRzICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7CkBAIC0xMzUsNyArMTMxLDYgQEAg
dm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRGb250KE5TRm9udCAqZgogICAgICAgICBtX2lzQ29t
cG9zaXRlRm9udFJlZmVyZW5jZSA9IHRyYWl0cyAmIGtDVEZvbnRDb21wb3NpdGVUcmFpdDsKICNl
bmRpZgogICAgIH0KLSNlbmRpZgogICAgIG1fQ1RGb250ID0gMDsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0JKHJldmlzaW9u
IDE1NDI4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MywxOCArNTMsNiBAQCBib29sIEZvbnQ6OmNhbkV4cGFu
ZEFyb3VuZElkZW9ncmFwaHNJbkNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIENURm9udEdl
dFZlcnRpY2FsVHJhbnNsYXRpb25zRm9yR2x5cGhzIGlzIGRpZmZlcmVudCBvbiBTbm93IExlb3Bh
cmQuICBJdCByZXR1cm5zIHZhbHVlcyBmb3IgYSBmb250LXNpemUgb2YgMQotLy8gd2l0aG91dCB1
bml0c1BlckVtIGFwcGxpZWQuICBXZSBoYXZlIHRvIGFwcGx5IGEgdHJhbnNmb3JtIHRoYXQgc2Nh
bGVzIHVwIHRvIHRoZSBwb2ludCBzaXplIGFuZCB0aGF0IGFsc28gCi0vLyBkaXZpZGVzIGJ5IHVu
aXRzUGVyRW0uCi1zdGF0aWMgYm9vbCBoYXNCcm9rZW5DVEZvbnRHZXRWZXJ0aWNhbFRyYW5zbGF0
aW9uc0ZvckdseXBocygpCi17Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBzdGF0aWMgdm9pZCBzaG93R2x5cGhzV2l0aEFkdmFu
Y2VzKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwg
Q0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXpl
KiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICghY291bnQpCkBAIC05MSwxNSAr
NzksNiBAQCBzdGF0aWMgdm9pZCBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNvbnN0CiAgICAgICAg
IENHQWZmaW5lVHJhbnNmb3JtIHJ1bk1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KHNh
dmVkTWF0cml4LCByb3RhdGVMZWZ0VHJhbnNmb3JtKTsKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4
dE1hdHJpeChjb250ZXh0LCBydW5NYXRyaXgpOwogCi0gICAgICAgIENHQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zbGF0aW9uc1RyYW5zZm9ybTsKLSAgICAgICAgaWYgKGhhc0Jyb2tlbkNURm9udEdldFZl
cnRpY2FsVHJhbnNsYXRpb25zRm9yR2x5cGhzKCkpIHsKLSAgICAgICAgICAgIHRyYW5zbGF0aW9u
c1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZShwbGF0Zm9ybURhdGEubV9zaXplLCAw
LCAwLCBwbGF0Zm9ybURhdGEubV9zaXplLCAwLCAwKTsKLSAgICAgICAgICAgIHRyYW5zbGF0aW9u
c1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KHRyYW5zbGF0aW9uc1RyYW5zZm9y
bSwgcm90YXRlTGVmdFRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBDR0Zsb2F0IHVuaXRzUGVyRW0g
PSBDR0ZvbnRHZXRVbml0c1BlckVtKHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7Ci0gICAgICAgICAg
ICB0cmFuc2xhdGlvbnNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdCh0cmFuc2xh
dGlvbnNUcmFuc2Zvcm0sIENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEgLyB1bml0c1BlckVt
LCAxIC8gdW5pdHNQZXJFbSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRyYW5zbGF0
aW9uc1RyYW5zZm9ybSA9IHJvdGF0ZUxlZnRUcmFuc2Zvcm07Ci0KICAgICAgICAgVmVjdG9yPENH
U2l6ZSwgMjU2PiB0cmFuc2xhdGlvbnMoY291bnQpOwogICAgICAgICBDVEZvbnRHZXRWZXJ0aWNh
bFRyYW5zbGF0aW9uc0ZvckdseXBocyhwbGF0Zm9ybURhdGEuY3RGb250KCksIGdseXBocywgdHJh
bnNsYXRpb25zLmRhdGEoKSwgY291bnQpOwogCkBAIC0xMDcsMTcgKzg2LDE1IEBAIHN0YXRpYyB2
b2lkIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QKIAogICAgICAgICBDR1BvaW50IHBvc2l0
aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQtPmZvbnRNZXRyaWNz
KCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNlbGluZSkgLSBmb250LT5mb250TWV0cmljcygp
LmZsb2F0QXNjZW50KCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgICAgIENHU2l6ZSB0cmFuc2xhdGlvbiA9IENHU2l6ZUFwcGx5QWZmaW5l
VHJhbnNmb3JtKHRyYW5zbGF0aW9uc1tpXSwgdHJhbnNsYXRpb25zVHJhbnNmb3JtKTsKKyAgICAg
ICAgICAgIENHU2l6ZSB0cmFuc2xhdGlvbiA9IENHU2l6ZUFwcGx5QWZmaW5lVHJhbnNmb3JtKHRy
YW5zbGF0aW9uc1tpXSwgcm90YXRlTGVmdFRyYW5zZm9ybSk7CiAgICAgICAgICAgICBwb3NpdGlv
bnNbaV0gPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0oQ0dQb2ludE1ha2UocG9zaXRpb24u
eCAtIHRyYW5zbGF0aW9uLndpZHRoLCBwb3NpdGlvbi55ICsgdHJhbnNsYXRpb24uaGVpZ2h0KSwg
dHJhbnNmb3JtKTsKICAgICAgICAgICAgIHBvc2l0aW9uLnggKz0gYWR2YW5jZXNbaV0ud2lkdGg7
CiAgICAgICAgICAgICBwb3NpdGlvbi55ICs9IGFkdmFuY2VzW2ldLmhlaWdodDsKICAgICAgICAg
fQogICAgICAgICBpZiAoIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpKQogICAgICAg
ICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc0F0UG9zaXRpb25zKGNvbnRleHQsIGdseXBocywgcG9z
aXRpb25zLmRhdGEoKSwgY291bnQpOwotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIENU
Rm9udERyYXdHbHlwaHMocGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBnbHlwaHMsIHBvc2l0aW9ucy5k
YXRhKCksIGNvdW50LCBjb250ZXh0KTsKLSNlbmRpZgogICAgICAgICBDR0NvbnRleHRTZXRUZXh0
TWF0cml4KGNvbnRleHQsIHNhdmVkTWF0cml4KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
IXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpKQpAQCAtMTI1LDEwICsxMDIsOCBAQCBz
dGF0aWMgdm9pZCBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNvbnN0CiAjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKICAgICAgICAgICAg
IENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY29udGV4dCwgZ2x5cGhzLCBhZHZhbmNl
cywgY291bnQpOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2lmIFBMQVRGT1JNKElP
UykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIENURm9udERyYXdHbHlwaHMocGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBn
bHlwaHMsIHBvc2l0aW9ucy5kYXRhKCksIGNvdW50LCBjb250ZXh0KTsKLSNlbmRpZgogICAgIH0K
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNz
Q29udGV4dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lRm9yRG9jdW1lbgogICAgICAgICAgICAgcGF0dGVybkNvbG9yID0gZ3JhbW1hclBhdHRl
cm5Db2xvcjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jaWYgUExBVEZPUk0oTUFD
KSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzApCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAvLyBUbyBzdXBwb3J0IGNvcnJlY3Rp
b24gcGFuZWwuCiAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXJBdXRvY29ycmVjdGlvblJlcGxh
Y2VtZW50TGluZVN0eWxlOgogICAgICAgICBjYXNlIERvY3VtZW50TWFya2VyRGljdGF0aW9uQWx0
ZXJuYXRpdmVzTGluZVN0eWxlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQko
cmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsMTIgKzM5
Myw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW8KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOkBzZWxlY3Rvcihk
aWRFbmQ6KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lOlFUTW92aWVEaWRFbmROb3RpZmljYXRpb24gCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDptX3F0TW92aWUuZ2V0KCldOwotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAotICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOkBz
ZWxlY3RvcihsYXllckhvc3RDaGFuZ2VkOikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lOkAiV2ViS2l0TGF5ZXJIb3N0Q2hhbmdlZCIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om5pbF07Ci0j
ZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgbWFpblRocmVhZFNldE5lZWRzRGlzcGxheShpZCBzZWxm
LCBTRUwpCkBAIC0xMjI4LDM4ICsxMjIyLDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6ZGlkRW5kKCkKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLXN0YXRpYyBib29sIGxheWVy
SXNEZXNjZW5kZW50T2YoUGxhdGZvcm1MYXllciogY2hpbGQsIFBsYXRmb3JtTGF5ZXIqIGRlc2Nl
bmRlbnQpCi17Ci0gICAgaWYgKCFjaGlsZCB8fCAhZGVzY2VuZGVudCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgZG8gewotICAgICAgICBpZiAoY2hpbGQgPT0gZGVzY2VuZGVudCkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gd2hpbGUoKGNoaWxkID0gW2NoaWxkIHN1cGVy
bGF5ZXJdKSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6bGF5ZXJIb3N0Q2hhbmdlZChQbGF0Zm9ybUxheWVyKiByb290TGF5
ZXIpCiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCi0gICAg
aWYgKCFyb290TGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChsYXllcklzRGVzY2Vu
ZGVudE9mKG1fcXRWaWRlb0xheWVyLmdldCgpLCByb290TGF5ZXIpKSB7Ci0gICAgICAgIC8vIFdl
IG93biBhIGNoaWxkIGxheWVyIG9mIGEgbGF5ZXIgd2hpY2ggaGFzIHN3aXRjaGVkIGNvbnRleHRz
LiAgCi0gICAgICAgIC8vIFRlYXIgZG93biBvdXIgbGF5ZXIsIGFuZCBzZXQgbV92aXNpYmxlIHRv
IGZhbHNlLCBzbyB0aGF0IHRoZSAKLSAgICAgICAgLy8gbmV4dCB0aW1lIHNldFZpc2libGUodHJ1
ZSkgaXMgY2FsbGVkLCB0aGUgbGF5ZXIgd2lsbCBiZSByZS0KLSAgICAgICAgLy8gY3JlYXRlZCBp
biB0aGUgY29ycmVjdCBjb250ZXh0LgotICAgICAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7
Ci0gICAgICAgIG1fdmlzaWJsZSA9IGZhbHNlOwotICAgIH0KLSNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHJvb3RMYXllcik7Ci0jZW5kaWYKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lvbiAxNTQy
ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDYgQEAgdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhD
R0NvbnRleHRSZWYgY29udAogI2VuZGlmCiAgICAgVGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBS
ZWN0KGZvY3VzUmluZ0NsaXBSZWN0KTsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgY29uc3QgZmxvYXQgd2FzdGVkU3Bh
Y2VUaHJlc2hvbGQgPSAwLjc1ZjsKICAgICBjb25zdCB1bnNpZ25lZCBtYXhSZWN0c1RvUGFpbnQg
PSA1OwogCkBAIC0xMTksMTEgKzExOCw2IEBAIHZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250
ZXh0UmVmIGNvbnQKICAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyUGFpbnRD
b250ZW50cyhncmFwaGljc0NvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QoY2xpcEJvdW5kcykpOwog
ICAgIH0KIAotI2Vsc2UKLSAgICBJbnRSZWN0IGNsaXAoZW5jbG9zaW5nSW50UmVjdChjbGlwQm91
bmRzKSk7Ci0gICAgbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhn
cmFwaGljc0NvbnRleHQsIGNsaXApOwotI2VuZGlmCi0KICAgICBUaGVtZU1hYzo6c2V0Rm9jdXNS
aW5nQ2xpcFJlY3QoRmxvYXRSZWN0KCkpOwogCiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHJlc3Rv
cmVHcmFwaGljc1N0YXRlXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJz
b3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNv
ck1hYy5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0N1cnNvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODQsMTMgKzg0LDcgQEAgdm9pZCBDdXJz
b3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29ucwogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQ3Vyc29yOjpIYW5kOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gW05TQ3Vyc29yIHBvaW50aW5nSGFuZEN1
cnNvcl07Ci0jZWxzZQotICAgICAgICAvLyBUaGUgcG9pbnRpbmdIYW5kQ3Vyc29yIGZyb20gTlND
dXJzb3IgZG9lcyBub3QgaGF2ZSBhIHNoYWRvdyBvbgotICAgICAgICAvLyBvbGRlciB2ZXJzaW9u
cyBvZiBPUyBYLCBzbyB1c2Ugb3VyIG93biBjdXN0b20gY3Vyc29yLgotICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImxpbmtDdXJzb3IiLCA2LCAxKTsKLSNlbmRp
ZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpJQmVhbToKQEAgLTk4LDEzMyAr
OTIsNzUgQEAgdm9pZCBDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29ucwogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpXYWl0OgotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJz
b3IoIkJ1c3lCdXRDbGlja2FibGUiKTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBjcmVhdGVOYW1lZEN1cnNvcigid2FpdEN1cnNvciIsIDcsIDcpOwotI2VuZGlmCiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkhlbHA6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSB3a0N1cnNv
cigiSGVscCIpOwogICAgICAgICBpZiAobV9wbGF0Zm9ybUN1cnNvcikKICAgICAgICAgICAgIGJy
ZWFrOwotI2VuZGlmCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNv
cigiaGVscEN1cnNvciIsIDgsIDgpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29y
OjpNb3ZlOgogICAgIGNhc2UgQ3Vyc29yOjpNaWRkbGVQYW5uaW5nOgotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
d2tDdXJzb3IoIk1vdmUiKTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVh
dGVOYW1lZEN1cnNvcigibW92ZUN1cnNvciIsIDcsIDcpOwotI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBDdXJzb3I6OkVhc3RSZXNpemU6CiAgICAgY2FzZSBDdXJzb3I6OkVhc3RQ
YW5uaW5nOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAg
ICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6ZUVhc3QiKTsKLSNlbHNlCi0g
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigiZWFzdFJlc2l6ZUN1
cnNvciIsIDE0LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29y
OjpOb3J0aFJlc2l6ZToKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhQYW5uaW5nOgotI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vy
c29yID0gd2tDdXJzb3IoIlJlc2l6ZU5vcnRoIik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3Jt
Q3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoIm5vcnRoUmVzaXplQ3Vyc29yIiwgNywgMSk7Ci0j
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhFYXN0UmVzaXpl
OgogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aEVhc3RQYW5uaW5nOgotI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tD
dXJzb3IoIlJlc2l6ZU5vcnRoZWFzdCIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNv
ciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJub3J0aEVhc3RSZXNpemVDdXJzb3IiLCAxNCwgMSk7Ci0j
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhXZXN0UmVzaXpl
OgogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aFdlc3RQYW5uaW5nOgotI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tD
dXJzb3IoIlJlc2l6ZU5vcnRod2VzdCIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNv
ciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJub3J0aFdlc3RSZXNpemVDdXJzb3IiLCAwLCAwKTsKLSNl
bmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpTb3V0aFJlc2l6ZToKICAg
ICBjYXNlIEN1cnNvcjo6U291dGhQYW5uaW5nOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJl
c2l6ZVNvdXRoIik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFt
ZWRDdXJzb3IoInNvdXRoUmVzaXplQ3Vyc29yIiwgNywgMTQpOwotI2VuZGlmCiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OlNvdXRoRWFzdFJlc2l6ZToKICAgICBjYXNlIEN1cnNv
cjo6U291dGhFYXN0UGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJSZXNpemVTb3V0
aGVhc3QiKTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1
cnNvcigic291dGhFYXN0UmVzaXplQ3Vyc29yIiwgMTQsIDE0KTsKLSNlbmRpZgogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpTb3V0aFdlc3RSZXNpemU6CiAgICAgY2FzZSBDdXJz
b3I6OlNvdXRoV2VzdFBhbm5pbmc6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSB3a0N1cnNvcigiUmVzaXplU291
dGh3ZXN0Iik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRD
dXJzb3IoInNvdXRoV2VzdFJlc2l6ZUN1cnNvciIsIDEsIDE0KTsKLSNlbmRpZgogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpXZXN0UmVzaXplOgogICAgIGNhc2UgQ3Vyc29yOjpX
ZXN0UGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
ICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJSZXNpemVXZXN0Iik7Ci0jZWxz
ZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoIndlc3RSZXNp
emVDdXJzb3IiLCAxLCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vy
c29yOjpOb3J0aFNvdXRoUmVzaXplOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6ZU5v
cnRoU291dGgiKTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1l
ZEN1cnNvcigibm9ydGhTb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDcpOwotI2VuZGlmCiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkVhc3RXZXN0UmVzaXplOgotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gd2tDdXJzb3IoIlJlc2l6ZUVhc3RXZXN0Iik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3Jt
Q3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImVhc3RXZXN0UmVzaXplQ3Vyc29yIiwgNywgNyk7
Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhFYXN0U291
dGhXZXN0UmVzaXplOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6ZU5vcnRoZWFzdFNv
dXRod2VzdCIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVk
Q3Vyc29yKCJub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IiLCA3LCA3KTsKLSNlbmRpZgog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aFdlc3RTb3V0aEVhc3RSZXNp
emU6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAg
IG1fcGxhdGZvcm1DdXJzb3IgPSB3a0N1cnNvcigiUmVzaXplTm9ydGh3ZXN0U291dGhlYXN0Iik7
Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoIm5v
cnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvciIsIDcsIDcpOwotI2VuZGlmCiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkNvbHVtblJlc2l6ZToKQEAgLTIzNiwxOSArMTcyLDEz
IEBAIHZvaWQgQ3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnMKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEN1cnNvcjo6VmVydGljYWxUZXh0OgotI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gW05T
Q3Vyc29yIElCZWFtQ3Vyc29yRm9yVmVydGljYWxMYXlvdXRdOwotI2Vsc2UKLSAgICAgICAgbV9w
bGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJ2ZXJ0aWNhbFRleHRDdXJzb3IiLCA3
LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpDZWxsOgot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIkNlbGwiKTsKICAgICAgICAgaWYgKG1fcGxhdGZvcm1D
dXJzb3IpCiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAgICAgICBtX3BsYXRmb3JtQ3Vy
c29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImNlbGxDdXJzb3IiLCA3LCA3KTsKICAgICAgICAgYnJl
YWs7CiAKQEAgLTI1NywxOSArMTg3LDExIEBAIHZvaWQgQ3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1
cnNvcigpIGNvbnMKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6QWxpYXM6Ci0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIG1fcGxh
dGZvcm1DdXJzb3IgPSB3a0N1cnNvcigiTWFrZUFsaWFzIik7Ci0jZWxzZQotICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImFsaWFzQ3Vyc29yIiwgMTEsIDMpOwot
I2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OlByb2dyZXNzOgotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gd2tDdXJzb3IoIkJ1c3lCdXRDbGlja2FibGUiKTsKLSNlbHNlCi0gICAgICAg
IG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigicHJvZ3Jlc3NDdXJzb3IiLCAz
LCAyKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpOb0Ryb3A6
CkBAIC0yODksMjAgKzIxMSwxNiBAQCB2b2lkIEN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3Io
KSBjb25zCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6Olpvb21JbjoKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IHdrQ3Vyc29yKCJab29tSW4iKTsKICAgICAgICAgaWYgKG1fcGxhdGZvcm1DdXJz
b3IpCiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gY3JlYXRlTmFtZWRDdXJzb3IoInpvb21JbkN1cnNvciIsIDcsIDcpOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgQ3Vyc29yOjpab29tT3V0OgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3Io
Ilpvb21PdXQiKTsKICAgICAgICAgaWYgKG1fcGxhdGZvcm1DdXJzb3IpCiAgICAgICAgICAgICBi
cmVhazsKLSNlbmRpZgogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJz
b3IoInpvb21PdXRDdXJzb3IiLCA3LCA3KTsKICAgICAgICAgYnJlYWs7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRW1wdHlQcm90b2NvbERlZmluaXRp
b25zLmgJKHJldmlzaW9uIDE1NDI4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9F
bXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
IGRlZmluZWQoX19PQkpDX18pCi0KLSNkZWZpbmUgRU1QVFlfUFJPVE9DT0woTkFNRSkgXAotQHBy
b3RvY29sIE5BTUUgPE5TT2JqZWN0PiBcCi1AZW5kCi0KLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPT0gMTA2MAotCi1FTVBUWV9QUk9UT0NPTChOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZSkKLUVNUFRZX1BST1RPQ09MKE5TVVJMRG93bmxvYWREZWxlZ2F0ZSkKLQotI2VuZGlmCi0K
LSN1bmRlZiBFTVBUWV9QUk9UT0NPTAotCi0jZW5kaWYgLyogZGVmaW5lZChfX09CSkNfXykgKi8K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVBy
ZXNzdXJlSGFuZGxlck1hYy5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQAogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0
Zi9GdW5jdGlvbmFsLmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzAKKyNpZiAhUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8bm90aWZ5Lmg+CiAjZW5kaWYKQEAgLTQ4
LDggKzQ4LDYgQEAgdXNpbmcgc3RkOjptYXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lm
IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcw
Ci0KICNpZiAhUExBVEZPUk0oSU9TKQogc3RhdGljIGRpc3BhdGNoX3NvdXJjZV90IF9jYWNoZV9l
dmVudF9zb3VyY2UgPSAwOwogc3RhdGljIGRpc3BhdGNoX3NvdXJjZV90IF90aW1lcl9ldmVudF9z
b3VyY2UgPSAwOwpAQCAtMTc3LDYgKzE3NSw1IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpyZWxlYXNlTWVtb3IKICNlbmRpZgogICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KCk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgJKHJl
dmlzaW9uIDE1NDI4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVy
SW1wRGV0YWlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNiArMjksNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAvLyBQdWJsaWMgQVBJcyBub3QgYXZhaWxhYmxlIG9uIHZlcnNpb25zIG9m
IE1hYyBvbiB3aGljaCB3ZSBidWlsZAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dF
RCA9PSAxMDYwCi1lbnVtIHsKLSAgICBOU1Njcm9sbGVyU3R5bGVMZWdhY3kgICAgICAgPSAwLAot
ICAgIE5TU2Nyb2xsZXJTdHlsZU92ZXJsYXkgICAgICA9IDEKLX07Ci10eXBlZGVmIE5TSW50ZWdl
ciBOU1Njcm9sbGVyU3R5bGU7Ci0KLWVudW0gewotICAgIE5TU2Nyb2xsZXJLbm9iU3R5bGVEZWZh
dWx0ID0gMCwKLSAgICBOU1Njcm9sbGVyS25vYlN0eWxlRGFyayA9IDEsCi0gICAgTlNTY3JvbGxl
cktub2JTdHlsZUxpZ2h0ID0gMgotfTsKLXR5cGVkZWYgTlNJbnRlZ2VyIE5TU2Nyb2xsZXJLbm9i
U3R5bGU7Ci0jZW5kaWYKLQotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA9PSAx
MDYwCi1AaW50ZXJmYWNlIE5TU2Nyb2xsZXIoTlNPYmplY3QpCi0rIChOU1Njcm9sbGVyU3R5bGUp
cHJlZmVycmVkU2Nyb2xsZXJTdHlsZTsKLUBlbmQKLSNlbmRpZgogCiBAaW50ZXJmYWNlIE5TT2Jq
ZWN0IChTY3JvbGxiYXJQYWludGVyKQogKyAoaWQpc2Nyb2xsZXJJbXBXaXRoU3R5bGU6KE5TU2Ny
b2xsZXJTdHlsZSluZXdTY3JvbGxlclN0eWxlIGNvbnRyb2xTaXplOihOU0NvbnRyb2xTaXplKW5l
d0NvbnRyb2xTaXplIGhvcml6b250YWw6KEJPT0wpaG9yaXpvbnRhbCByZXBsYWNpbmdTY3JvbGxl
ckltcDooaWQpcHJldmlvdXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1FdmVudEZhY3RvcnlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCShyZXZpc2lvbiAxNTQyODgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNiBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2UgbW9tZW50dW1QCiB7CiAgICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZU5vbmU7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKICAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlQmVnYW4p
CiAgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47CiAgICAgaWYg
KFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCkBAIC0xNjgs
MjkgKzE2NywxMiBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QCiAg
ICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7CiAgICAgaWYgKFtl
dmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKICAgICAgICAgcGhh
c2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7Ci0jZWxzZQotICAgIHN3aXRj
aCAod2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZShldmVudCkpIHsKLSAgICBjYXNlIHdrRXZlbnRQ
aGFzZU5vbmU6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZUJlZ2FuOgotICAgICAgICBwaGFz
ZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2Ugd2tFdmVudFBoYXNlQ2hhbmdlZDoKLSAgICAgICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZUNoYW5nZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2tFdmVudFBoYXNlRW5k
ZWQ6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotI2VuZGlmCiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKIH0KIAogc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlIHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCiB7Ci0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZU5vbmU7IAogICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBo
YXNlQmVnYW4pCiAgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47
CkBAIC0yMDgsMTAgKzE5MCw2IEBAIHN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFz
ZUZvckUKICNlbmRpZgogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlPihwaGFzZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0gICAgcmV0
dXJuIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZTsKLSNlbmRpZgogfQogCiAjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JNYWMuaCIKIAogI2luY2x1ZGUg
IkJsb2NrRXhjZXB0aW9ucy5oIgotI2luY2x1ZGUgIkVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5o
IgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJOU1Njcm9sbGVySW1wRGV0YWls
cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NoYXJlZFRpbWVyTWFjLm1tCShyZXZpc2lvbiAxNTQyODgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM5LDEwICszOSw2IEBAIHN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFy
ZWRUaW1lcjsKIHN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwogc3Rh
dGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogCi0jaWYgIWRl
ZmluZWQoSU9LSVRfV0lUSE9VVF9MSUJESVNQQVRDSCkgJiYgIVBMQVRGT1JNKElPUykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID09IDEwNjAKLWV4dGVybiAiQyIgdm9pZCBJT05v
dGlmaWNhdGlvblBvcnRTZXREaXNwYXRjaFF1ZXVlKElPTm90aWZpY2F0aW9uUG9ydFJlZiBub3Rp
ZnksIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUpOwotI2VuZGlmCi0KIGNsYXNzIFBvd2VyT2JzZXJ2
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvd2VyT2JzZXJ2ZXIpOwogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3
IEBAIHR5cGVkZWYgVUludDMyIEZNRm9udDsKIHR5cGVkZWYgRk1Gb250IEFUU1VGb250SUQ7CiB0
eXBlZGVmIFVJbnQxNiBBVFNHbHlwaFJlZjsKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgVVNFKENB
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKKyNpZiBQTEFURk9S
TShNQUMpICYmIFVTRShDQSkKIHR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlICpJT1N1cmZhY2VS
ZWY7CiAjZW5kaWYKIApAQCAtMTExLDkgKzExMSw3IEBAIGV4dGVybiAiQyIgewogLy8gSW4gYWxw
aGFiZXRpY2FsIG9yZGVyLgogCiBleHRlcm4gdm9pZCAoKndrQWR2YW5jZURlZmF1bHRCdXR0b25Q
dWxzZUFuaW1hdGlvbikoTlNCdXR0b25DZWxsICopOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogZXh0ZXJuIHZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0
c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5ZXIgKiwgQ0dDb250ZXh0UmVmLCB2b2lkICheYmxv
Y2spKENHUmVjdCByZWN0KSk7Ci0jZW5kaWYKIAogZXh0ZXJuIEJPT0wgKCp3a0NHQ29udGV4dEdl
dFNob3VsZFNtb290aEZvbnRzKShDR0NvbnRleHRSZWYpOwogdHlwZWRlZiBlbnVtIHsKQEAgLTIy
MiwyMCArMjIwLDcgQEAgZXh0ZXJuIGJvb2wgKCp3a0dldFZlcnRpY2FsR2x5cGhzRm9yQ2hhcgog
CiBleHRlcm4gQk9PTCAoKndrVXNlU2hhcmVkTWVkaWFVSSkoKTsKIAotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogZXh0ZXJuIHZvaWQqIHdrR2V0SHlwaGVuYXRp
b25Mb2NhdGlvbkJlZm9yZUluZGV4OwotI2Vsc2UKLWV4dGVybiBDRkluZGV4ICgqd2tHZXRIeXBo
ZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXgpKENGU3RyaW5nUmVmIHN0cmluZywgQ0ZJbmRleCBp
bmRleCk7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgd2tFdmVudFBoYXNlTm9uZSA9IDAsCi0gICAg
d2tFdmVudFBoYXNlQmVnYW4gPSAxLAotICAgIHdrRXZlbnRQaGFzZUNoYW5nZWQgPSAyLAotICAg
IHdrRXZlbnRQaGFzZUVuZGVkID0gMywKLX0gd2tFdmVudFBoYXNlOwotCi1leHRlcm4gaW50ICgq
d2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZSkoTlNFdmVudCAqKTsKLSNlbmRpZgogCiBleHRlcm4g
Q1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKShjb25zdCBVbmlD
aGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwg
Q0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25z
dCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKik7CiAKQEAgLTI1MCw4ICsyMzUsNiBAQCB0
eXBlZGVmIGludCB3a0NURm9udFRyYW5zZm9ybU9wdGlvbnM7CiBleHRlcm4gYm9vbCAoKndrQ1RG
b250VHJhbnNmb3JtR2x5cGhzKShDVEZvbnRSZWYgZm9udCwgQ0dHbHlwaCBnbHlwaHNbXSwgQ0dT
aXplIGFkdmFuY2VzW10sIENGSW5kZXggY291bnQsIHdrQ1RGb250VHJhbnNmb3JtT3B0aW9ucyBv
cHRpb25zKTsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDcwCi0KIGV4dGVybiBDVFR5cGVzZXR0ZXJSZWYgKCp3a0NyZWF0ZUNUVHlwZXNldHRlcldp
dGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENG
SW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBh
dHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywg
dm9pZCopLCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogCiBleHRlcm4gQ0dTaXpl
ICgqd2tDVFJ1bkdldEluaXRpYWxBZHZhbmNlKShDVFJ1blJlZik7CkBAIC0yNzEsOCArMjU0LDYg
QEAgZXh0ZXJuIHZvaWQgKCp3a1NldENyYXNoUmVwb3J0QXBwbGljYXRpbwogZXh0ZXJuIE5TVVJM
ICooKndrQVZBc3NldFJlc29sdmVkVVJMKShBVkFzc2V0Kik7CiAKIGV4dGVybiBOU0N1cnNvciAq
KCp3a0N1cnNvcikoY29uc3QgY2hhciopOwotCi0jZW5kaWYKICAgICAKICNpZiBQTEFURk9STShN
QUMpCiBleHRlcm4gTlNBcnJheSAqKCp3a1NwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmll
cnMpKHZvaWQpOwpAQCAtMjkwLDExICsyNzEsNyBAQCBleHRlcm4gQ0ZUeXBlUmVmICgqd2tDcmVh
dGVBWFRleHRNYXJrZXIpCiBleHRlcm4gQk9PTCAoKndrR2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2Vy
KShDRlR5cGVSZWYgdGV4dE1hcmtlciwgdm9pZCAqYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogZXh0
ZXJuIEFYVUlFbGVtZW50UmVmICgqd2tDcmVhdGVBWFVJRWxlbWVudFJlZikoaWQgZWxlbWVudCk7
CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLXR5cGVkZWYg
c3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZjsKLSNl
bHNlCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWY7Ci0jZW5kaWYKIGV4dGVybiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmICgq
d2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pKENGU3RyaW5nUmVmKTsKIGV4dGVybiBOU1VS
TFJlcXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7CiAKQEAgLTMyNSwxNCArMzAyLDExIEBAIGV4dGVy
biB2b2lkICgqd2tDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWUKIGV4dGVybiB2b2lkICgqd2tTZXRS
ZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYpOwogI2VuZGlmCiBleHRlcm4gdm9pZCAoKndrU2V0TWV0YWRhdGFVUkwpKE5T
U3RyaW5nICp1cmxTdHJpbmcsIE5TU3RyaW5nICpyZWZlcnJlciwgTlNTdHJpbmcgKnBhdGgpOwot
ICAgIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAorCiAjaW1w
b3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogCiBleHRlcm4gZGlzcGF0Y2hfc291cmNlX3QgKCp3
a0NyZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlKSh2b2lkKTsKIAotI2VuZGlmCi0K
ICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIGV4dGVybiBkaXNw
YXRjaF9zb3VyY2VfdCAoKndrQ3JlYXRlTWVtb3J5U3RhdHVzUHJlc3N1cmVDcml0aWNhbERpc3Bh
dGNoT25NYWluUXVldWUpKHZvaWQpOwogI2VuZGlmCkBAIC0zNDEsMTMgKzMxNSw5IEBAIGV4dGVy
biBkaXNwYXRjaF9zb3VyY2VfdCAoKndrQ3JlYXRlTWVtb3IKIGV4dGVybiBib29sICgqd2tFeGVj
dXRhYmxlV2FzTGlua2VkT25PckJlZm9yZUxpb24pKHZvaWQpOwogI2VuZGlmCiAKLSNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIGV4dGVybiB2b2lkICgqd2tDR1Bh
dGhBZGRSb3VuZGVkUmVjdCkoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBjb25zdCBDR0FmZmluZVRy
YW5zZm9ybSogbWF0cml4LCBDR1JlY3QgcmVjdCwgQ0dGbG9hdCBjb3JuZXJXaWR0aCwgQ0dGbG9h
dCBjb3JuZXJIZWlnaHQpOwotI2VuZGlmCiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNzAKIGV4dGVybiB2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RD
YWNoaW5nKShDRlVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCiAKICNpZiBVU0UoQ09OVEVOVF9GSUxU
RVJJTkcpCiBleHRlcm4gQk9PTCAoKndrRmlsdGVySXNNYW5hZ2VkU2Vzc2lvbikodm9pZCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDkg
KzI4LDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiB2b2lkICgqd2tB
ZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uKShOU0J1dHRvbkNlbGwgKik7Ci0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiB2b2lkICgqd2tDQUxheWVy
RW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJl
ZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci0jZW5kaWYKIEJPT0wgKCp3
a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKShDR0NvbnRleHRSZWYpOwogdm9pZCAoKndr
Q0dDb250ZXh0UmVzZXRDbGlwKShDR0NvbnRleHRSZWYpOwogI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA4MApAQCAtMTMwLDEyICsxMjgsNyBAQCB2b2lkICgqd2tTZXRS
ZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMCiB2b2lkICgqd2tHZXRHbHlwaHNGb3JDaGFyYWN0
ZXJzKShDR0ZvbnRSZWYsIGNvbnN0IFVuaUNoYXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOwogYm9v
bCAoKndrR2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKShDVEZvbnRSZWYsIGNvbnN0IFVu
aUNoYXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwCiB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJ
bmRleDsKLSNlbHNlCi1DRkluZGV4ICgqd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5k
ZXgpKENGU3RyaW5nUmVmIHN0cmluZywgQ0ZJbmRleCBpbmRleCk7Ci1pbnQgKCp3a0dldE5TRXZl
bnRNb21lbnR1bVBoYXNlKShOU0V2ZW50ICopOwotI2VuZGlmCiAKIENUTGluZVJlZiAoKndrQ3Jl
YXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcikoY29uc3QgVW5pQ2hhciogKCpwcm92aWRlKShD
RkluZGV4IHN0cmluZ0luZGV4LCBDRkluZGV4KiBjaGFyQ291bnQsIENGRGljdGlvbmFyeVJlZiog
YXR0cmlidXRlcywgdm9pZCopLCB2b2lkICgqZGlzcG9zZSkoY29uc3QgVW5pQ2hhciogY2hhcnMs
IHZvaWQqKSwgdm9pZCopOwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MApAQCAtMTQ0LDcgKzEzNyw2IEBAIGJvb2wgKCp3a0NURm9udFRyYW5zZm9ybUdseXBocyko
Q1RGb250UmUKIAogQ0dTaXplICgqd2tDVFJ1bkdldEluaXRpYWxBZHZhbmNlKShDVFJ1blJlZik7
CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIENUVHlwZXNl
dHRlclJlZiAoKndrQ3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlv
bnMpKGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRl
eCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAo
KmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25h
cnlSZWYgb3B0aW9ucyk7CiAKIENHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0
ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKQEAgLTE2MSw4ICsxNTMsNiBAQCBOU1VSTCAq
KCp3a0FWQXNzZXRSZXNvbHZlZFVSTCkoQVZBc3NldCopCiAKIE5TQ3Vyc29yICooKndrQ3Vyc29y
KShjb25zdCBjaGFyKik7CiAKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogTlNBcnJheSAq
KCp3a1NwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpKHZvaWQpOwogTlNTdHJpbmcg
Kigqd2tTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKShO
U0xvY2FsZSAqKTsKQEAgLTE5OSw5ICsxODksNyBAQCB2b2lkICgqd2tTZXRNZXRhZGF0YVVSTCko
TlNTdHJpbmcgKnVybFN0CiAKIHZvaWQoKndrRGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcykodm9p
ZCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIGRpc3Bh
dGNoX3NvdXJjZV90ICgqd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hPbk1haW5RdWV1ZSkodm9p
ZCk7Ci0jZW5kaWYKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5
MAogZGlzcGF0Y2hfc291cmNlX3QgKCp3a0NyZWF0ZU1lbW9yeVN0YXR1c1ByZXNzdXJlQ3JpdGlj
YWxEaXNwYXRjaE9uTWFpblF1ZXVlKSh2b2lkKTsKQEAgLTIxMSwxMyArMTk5LDkgQEAgZGlzcGF0
Y2hfc291cmNlX3QgKCp3a0NyZWF0ZU1lbW9yeVN0YXR1cwogYm9vbCAoKndrRXhlY3V0YWJsZVdh
c0xpbmtlZE9uT3JCZWZvcmVMaW9uKSh2b2lkKTsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiB2b2lkICgqd2tDR1BhdGhBZGRSb3VuZGVkUmVj
dCkoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSogbWF0cml4
LCBDR1JlY3QgcmVjdCwgQ0dGbG9hdCBjb3JuZXJXaWR0aCwgQ0dGbG9hdCBjb3JuZXJIZWlnaHQp
OwotI2VuZGlmCiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
IHZvaWQgKCp3a0NGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hpbmcpKENGVVJMUmVxdWVzdFJl
Zik7Ci0jZW5kaWYKIAogI2lmIFVTRShDT05URU5UX0ZJTFRFUklORykKIEJPT0wgKCp3a0ZpbHRl
cklzTWFuYWdlZFNlc3Npb24pKHZvaWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9u
IDE1NDI4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0ICJD
b29raWVTdG9yYWdlLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsU3RvcmFnZS5oIgogI2ltcG9ydCAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbXBvcnQgIkVtcHR5UHJvdG9jb2xEZWZpbml0aW9u
cy5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJlYW1NYWMuaCIKICNpbXBvcnQgIkZyYW1lLmgiCiAj
aW1wb3J0ICJGcmFtZUxvYWRlci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQkocmV2aXNpb24g
MTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VS
ZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMCArODgsOCBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgICAgIG1faHR0cE1ldGhvZCA9IG1l
dGhvZDsKICAgICBtX2FsbG93Q29va2llcyA9IFttX25zUmVxdWVzdC5nZXQoKSBIVFRQU2hvdWxk
SGFuZGxlQ29va2llc107CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmIChSZXNvdXJjZVJlcXVlc3Q6Omh0dHBQaXBl
bGluaW5nRW5hYmxlZCgpKQogICAgICAgICBtX3ByaW9yaXR5ID0gdG9SZXNvdXJjZUxvYWRQcmlv
cml0eSh3a0dldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoW21fbnNSZXF1ZXN0LmdldCgpIF9DRlVS
TFJlcXVlc3RdKSk7Ci0jZW5kaWYKIAogICAgIE5TRGljdGlvbmFyeSAqaGVhZGVycyA9IFttX25z
UmVxdWVzdC5nZXQoKSBhbGxIVFRQSGVhZGVyRmllbGRzXTsKICAgICBOU0VudW1lcmF0b3IgKmUg
PSBbaGVhZGVycyBrZXlFbnVtZXJhdG9yXTsKQEAgLTE0NCwxNiArMTQyLDExIEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICAgICBlbHNlCiAgICAgICAgIG5zUmVx
dWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsKCldOwog
Ci0KLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA3MAogICAgIGlmIChSZXNvdXJjZVJlcXVlc3Q6Omh0dHBQaXBlbGluaW5nRW5hYmxlZCgp
KQogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoW25zUmVxdWVzdCBfQ0ZVUkxS
ZXF1ZXN0XSwgdG9IVFRQUGlwZWxpbmluZ1ByaW9yaXR5KG1fcHJpb3JpdHkpKTsKLSNlbmRpZgog
CiAgICAgW25zUmVxdWVzdCBzZXRDYWNoZVBvbGljeTooTlNVUkxSZXF1ZXN0Q2FjaGVQb2xpY3kp
Y2FjaGVQb2xpY3koKV07Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNzAKICAgICB3a0NGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hp
bmcoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSk7Ci0jZW5kaWYKIAogICAgIGRvdWJsZSB0aW1l
b3V0SW50ZXJ2YWwgPSBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKTsKICAg
ICBpZiAodGltZW91dEludGVydmFsKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSHlw
aGVuYXRpb24uaCIKIAotI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0KICNpbmNsdWRlICJBdG9taWNT
dHJpbmdLZXllZE1SVUNhY2hlLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNzUsNSArNzMsMyBAQCBz
aXplX3QgbGFzdEh5cGhlbkxvY2F0aW9uKGNvbnN0IFVDaGFyKiBjCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykg
fHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9IeXBoZW5hdGlvbk1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9IeXBoZW5hdGlvbk1hYy5tbQkocmV2
aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvSHlwaGVu
YXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiSHlwaGVuYXRpb24uaCIKLQotI2lmICFQTEFU
Rk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAotCi0j
aW1wb3J0ICJBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgiCi0jaW1wb3J0ICJUZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgi
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVt
cGxhdGU8PgotYm9vbCBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPGJvb2w+OjpjcmVhdGVWYWx1
ZUZvck51bGxLZXkoKQotewotICAgIHJldHVybiAhc3RyY21wKGN1cnJlbnRTZWFyY2hMb2NhbGVJ
RCgpLCAiZW4iKTsKLX0KLQotdGVtcGxhdGU8PgotYm9vbCBBdG9taWNTdHJpbmdLZXllZE1SVUNh
Y2hlPGJvb2w+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlk
ZW50aWZpZXIpCi17Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkxvY2FsZUlkZW50aWZp
ZXIgPSBhZG9wdENGKGxvY2FsZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29tcG9uZW50cyA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVh
dGVDb21wb25lbnRzRnJvbUxvY2FsZUlkZW50aWZpZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2ZM
b2NhbGVJZGVudGlmaWVyLmdldCgpKSk7Ci0gICAgQ0ZTdHJpbmdSZWYgbGFuZ3VhZ2UgPSByZWlu
dGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShjb21wb25lbnRz
LmdldCgpLCBrQ0ZMb2NhbGVMYW5ndWFnZUNvZGUpKTsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
ZW5nbGlzaExhbmd1YWdlID0gQ0ZTVFIoImVuIik7Ci0gICAgcmV0dXJuIGxhbmd1YWdlICYmIENG
RXF1YWwobGFuZ3VhZ2UsIGVuZ2xpc2hMYW5ndWFnZSk7Ci19Ci0KLWJvb2wgY2FuSHlwaGVuYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8Ym9vbD4sIGlzRW5nbGlzaENhY2hl
LCAoKSk7Ci0gICAgcmV0dXJuIGlzRW5nbGlzaENhY2hlLmdldChsb2NhbGVJZGVudGlmaWVyKTsK
LX0KLQotc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCwgc2l6ZV90IGJlZm9yZUluZGV4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsZUlkZW50aWZpZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChsb2NhbGVJZGVudGlmaWVyLCBj
YW5IeXBoZW5hdGUobG9jYWxlSWRlbnRpZmllcikpOwotCi0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHko
a0NGQWxsb2NhdG9yRGVmYXVsdCwgY2hhcmFjdGVycywgbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxs
KSk7Ci0gICAgcmV0dXJuIHdrR2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4KHN0cmlu
Zy5nZXQoKSwgYmVmb3JlSW5kZXgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID09IDEwNjAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4NCw3ICsxNjg0
LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRhaW5zUGFpbnRlZAogICAgIGlmIChy
ZW5kZXJlcigpLT5pc1ZpZGVvKCkgJiYgdG9SZW5kZXJWaWRlbyhyZW5kZXJlcigpKS0+c2hvdWxk
RGlzcGxheVZpZGVvKCkpCiAgICAgICAgIHJldHVybiBtX293bmluZ0xheWVyLT5oYXNCb3hEZWNv
cmF0aW9uc09yQmFja2dyb3VuZCgpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBVU0Uo
Q0EpICYmIChQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA3MCkKKyNpZiBQTEFURk9STShNQUMpICYmIFVTRShDQSkKICNlbGlmIEVOQUJMRShXRUJH
TCkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICBpZiAoaXNBY2NlbGVyYXRl
ZENhbnZhcyhyZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuIG1fb3duaW5nTGF5ZXItPmhhc0Jv
eERlY29yYXRpb25zT3JCYWNrZ3JvdW5kKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMjIsMTEg
KzIxMjIsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTbGlkZXJUaHVtYlNpCiAKIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKCkgY29u
c3QKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIE5TUG9w
VXBCdXR0b25DZWxsKiBSZW5kZXJUaGVtZU1hYzo6cG9wdXBCdXR0b24oKSBjb25zdApJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDgtMTkgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDA0
OT4gRGVsZXRlIGNvZGUgZm9yIFNub3cgTGVvcGFyZAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpvdmVycmlkZVN5c3RlbVByb3hpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3MpOgorICAgICAgICAqIFdlYktpdDJQcmVmaXguaDoKKwogMjAxMy0wOC0xOSAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzEyMDAyNz4gQVhPYmplY3RDYWNoZSdzIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0MlBy
ZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAkocmV2
aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw3ICs0OSw2IEBACiAKICNpZmRlZiBfX09CSkNfXwogI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0VtcHR5UHJvdG9jb2xEZWZp
bml0aW9ucy5oPgogI2lmIFVTRShBUFBLSVQpCiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTc0LDcgKzc0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NO
YQogICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRp
b25OYW1lKTsKIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogc3RhdGljIHZvaWQgb3ZlcnJpZGVTeXN0ZW1Qcm94aWVzKGNvbnN0IFN0cmluZyYgaHR0cFBy
b3h5LCBjb25zdCBTdHJpbmcmIGh0dHBzUHJveHkpCiB7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqcHJveHlTZXR0aW5ncyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwpAQCAt
MTA3LDcgKzEwNiw2IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lzdGVtUHJveGllcyhjb25zdCAK
ICAgICBpZiAoW3Byb3h5U2V0dGluZ3MgY291bnRdID4gMCkKICAgICAgICAgV0tDRk5ldHdvcmtT
ZXRPdmVycmlkZVN5c3RlbVByb3h5U2V0dGluZ3MoKENGRGljdGlvbmFyeVJlZilwcm94eVNldHRp
bmdzKTsKIH0KLSNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzAKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7
CkBAIC0xMjUsMTAgKzEyMyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZU4KICAgICBTZWNJdGVtU2hpbTo6c2hhcmVkKCkuaW5pdGlhbGl6ZSh0aGlzKTsKICNlbmRp
ZgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmh0dHBQcm94eS5pc051bGwoKSB8fCAhcGFyYW1ldGVycy5odHRwc1Byb3h5
LmlzTnVsbCgpKQogICAgICAgICBvdmVycmlkZVN5c3RlbVByb3hpZXMocGFyYW1ldGVycy5odHRw
UHJveHksIHBhcmFtZXRlcnMuaHR0cHNQcm94eSk7Ci0jZW5kaWYKIAogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVm
PiBjYWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA4LTE5ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xMjAwNDk+IERlbGV0ZSBjb2RlIGZvciBTbm93IExlb3BhcmQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2Vi
RGVmYXVsdENvbnRleHRNZW51RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURl
bGVnYXRlIG1lbnVJdGVtV2l0aFRhZzp0YXJnZXQ6cmVwcmVzZW50ZWRPYmplY3Q6XSk6CisgICAg
ICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6Y29udGV4dE1lbnVJdGVtc0ZvckVs
ZW1lbnQ6ZGVmYXVsdE1lbnVJdGVtczpdKToKKyAgICAgICAgKiBNaXNjL1dlYk5TQ29udHJvbEV4
dHJhcy5tOgorICAgICAgICAoLVtOU0NvbnRyb2wgc2l6ZVRvRml0QW5kQWRqdXN0V2luZG93SGVp
Z2h0XSk6CisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRHdWVzc2VzRm9yV29yZCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KToKKyAgICAgICAgKiBXZWJLaXRQcmVmaXguaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldy5tbToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
IHNjcm9sbFdoZWVsOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIubW06CisgICAgICAgIChjb252ZXJ0UmVjdFRvU2NyZWVuKToKKyAgICAgICAgKC1bV2ViRnVs
bFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6Cisg
ICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGV4aXRGdWxsU2NyZWVuXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Bh
c3RlV2l0aFBhc3RlYm9hcmQ6YWxsb3dQbGFpblRleHQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IHJlbW92ZU1vdXNlTW92ZWRPYnNlcnZlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB3
aW5kb3dEaWRCZWNvbWVLZXk6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHdpbmRvd0RpZFJl
c2lnbktleTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX2RldmljZVNjYWxlRmFjdG9yXSk6CisKIDIwMTMtMDgtMTkgIFByYXRpayBTb2xhbmtp
ICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
MTk5MTg+IEZyYW1lOjpzZWxlY3Rpb24oKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViS2l0UHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYgQEAg
dHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUV4cG9ydE1hY3Jvcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlQcm90b2NvbERlZmlu
aXRpb25zLmg+CiAKIC8qIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQgc2Ny
ZXdzIHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxlZC4g
Ki8KICN1bmRlZiB0cnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0ZXMv
V2ViRGVmYXVsdENvbnRleHRNZW51RGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5t
bQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRl
cy9XZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODks
MTIgKzg5LDggQEAgLSAoTlNNZW51SXRlbSAqKW1lbnVJdGVtV2l0aFRhZzooaW50KXRhZwogICAg
ICAgICAgICAgYWN0aW9uID0gQHNlbGVjdG9yKF9zZWFyY2hXaXRoU3BvdGxpZ2h0RnJvbU1lbnU6
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYk1lbnVJdGVtVGFnU2VhcmNo
V2ViOiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlYXJjaFByb3ZpZGVyTmFtZSA9IGFkb3B0
Q0YoV0tDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUoKSk7CiAgICAgICAgICAg
ICB0aXRsZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklOR19JTlRFUk5BTCgi
U2VhcmNoIHdpdGggJUAiLCAiU2VhcmNoIHdpdGggc2VhcmNoIHByb3ZpZGVyIGNvbnRleHQgbWVu
dSBpdGVtIHdpdGggcHJvdmlkZXIgbmFtZSBpbnNlcnRlZCIpLCBzZWFyY2hQcm92aWRlck5hbWUu
Z2V0KCldOwotI2Vsc2UKLSAgICAgICAgICAgIHRpdGxlID0gVUlfU1RSSU5HX0lOVEVSTkFMKCJT
ZWFyY2ggd2l0aCBHb29nbGUiLCAiU2VhcmNoIHdpdGggR29vZ2xlIGNvbnRleHQgbWVudSBpdGVt
Iik7Ci0jZW5kaWYKICAgICAgICAgICAgIGFjdGlvbiA9IEBzZWxlY3Rvcihfc2VhcmNoV2l0aEdv
b2dsZUZyb21NZW51Oik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTM2LDEy
ICsxMzIsNiBAQCAtICh2b2lkKWFwcGVuZERlZmF1bHRJdGVtczooTlNBcnJheSAqKWRlCiAgICAg
fQogfQogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCi0jZGVm
aW5lIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNIDEKLSNlbHNlCi0jZGVmaW5l
IElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNIDAKLSNlbmRpZgotCiAtIChOU0Fy
cmF5ICopd2ViVmlldzooV2ViVmlldyAqKXd2IGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50OihO
U0RpY3Rpb25hcnkgKillbGVtZW50ICBkZWZhdWx0TWVudUl0ZW1zOihOU0FycmF5ICopZGVmYXVs
dE1lbnVJdGVtcwogewogICAgIC8vIFRoZSBkZWZhdWx0TWVudUl0ZW1zIGhlcmUgYXJlIG9uZXMg
c3VwcGxpZWQgYnkgdGhlIFdlYkRvY3VtZW50VmlldyBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4g
V2ViUERGVmlldyBpcwpAQCAtMTYxLDIyICsxNTEsMTMgQEAgLSAoTlNBcnJheSAqKXdlYlZpZXc6
KFdlYlZpZXcgKil3diBjb250ZQogICAgICAgICAvLyBleGlzdGluZyBjbGllbnRzIHRoYXQgaGF2
ZSBjb2RlIHRoYXQgcmVsaWVzIG9uIGl0IGJlaW5nIHByZXNlbnQgKHVubGlrZWx5IGZvciBjbGll
bnRzIG91dHNpZGUgb2YgQXBwbGUsIAogICAgICAgICAvLyBidXQgU2FmYXJpIGhhcyBzdWNoIGNv
ZGUpLgogCi0jaWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVYVF9NRU5VX0lURU0KLSAgICAgICAg
W21lbnVJdGVtcyBhZGRPYmplY3Q6W3NlbGYgbWVudUl0ZW1XaXRoVGFnOldlYk1lbnVJdGVtVGFn
U2VhcmNoSW5TcG90bGlnaHQgdGFyZ2V0Om5pbCByZXByZXNlbnRlZE9iamVjdDplbGVtZW50XV07
Ci0jZWxzZQogICAgICAgICBOU01lbnVJdGVtICpsb29rdXBNZW51SXRlbSA9IFtzZWxmIG1lbnVJ
dGVtV2l0aFRhZzpXZWJNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSB0YXJnZXQ6bmlsIHJl
cHJlc2VudGVkT2JqZWN0OmVsZW1lbnRdOwogICAgICAgICBOU1N0cmluZyAqc2VsZWN0ZWRTdHJp
bmcgPSBbKGlkIDxXZWJEb2N1bWVudFRleHQ+KVtbd2ViRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVu
dFZpZXddIHNlbGVjdGVkU3RyaW5nXTsKICAgICAgICAgW2xvb2t1cE1lbnVJdGVtIHNldFRpdGxl
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklOR19JTlRFUk5BTCgiTG9vayBVcCDi
gJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIp
LCBzZWxlY3RlZFN0cmluZ11dOwogICAgICAgICBbbWVudUl0ZW1zIGFkZE9iamVjdDpsb29rdXBN
ZW51SXRlbV07Ci0jZW5kaWYKIAogICAgICAgICBbbWVudUl0ZW1zIGFkZE9iamVjdDpbc2VsZiBt
ZW51SXRlbVdpdGhUYWc6V2ViTWVudUl0ZW1UYWdTZWFyY2hXZWIgdGFyZ2V0Om5pbCByZXByZXNl
bnRlZE9iamVjdDplbGVtZW50XV07CiAKLSNpZiBJTkNMVURFX1NQT1RMSUdIVF9DT05URVhUX01F
TlVfSVRFTQotICAgICAgICBbbWVudUl0ZW1zIGFkZE9iamVjdDpbTlNNZW51SXRlbSBzZXBhcmF0
b3JJdGVtXV07Ci0gICAgICAgIFttZW51SXRlbXMgYWRkT2JqZWN0OltzZWxmIG1lbnVJdGVtV2l0
aFRhZzpXZWJNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSB0YXJnZXQ6bmlsIHJlcHJlc2Vu
dGVkT2JqZWN0OmVsZW1lbnRdXTsKLSNlbmRpZgotCiAgICAgICAgIFttZW51SXRlbXMgYWRkT2Jq
ZWN0OltOU01lbnVJdGVtIHNlcGFyYXRvckl0ZW1dXTsKICAgICAgICAgW21lbnVJdGVtcyBhZGRP
YmplY3Q6W3NlbGYgbWVudUl0ZW1XaXRoVGFnOldlYk1lbnVJdGVtVGFnQ29weSB0YXJnZXQ6bmls
IHJlcHJlc2VudGVkT2JqZWN0OmVsZW1lbnRdXTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJOU0NvbnRyb2xFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5tCShyZXZpc2lvbiAxNTQyODgp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5tCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxMSArNDYsNyBAQCAtICh2b2lkKXNpemVUb0ZpdEFuZEFkanVzdFdpbmRv
d0hlaWdodAogICAgIE5TUmVjdCB3aW5kb3dGcmFtZSA9IFt3aW5kb3cgZnJhbWVdOwogCiAgICAg
Q0dGbG9hdCBiYWNraW5nU2NhbGVGYWN0b3I7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwCiAgICAgYmFja2luZ1NjYWxlRmFjdG9yID0gW3dpbmRvdyBiYWNraW5n
U2NhbGVGYWN0b3JdOwotI2Vsc2UKLSAgICBiYWNraW5nU2NhbGVGYWN0b3IgPSBbd2luZG93IHVz
ZXJTcGFjZVNjYWxlRmFjdG9yXTsKLSNlbmRpZgogCiAgICAgd2luZG93RnJhbWUuc2l6ZS5oZWln
aHQgKz0gaGVpZ2h0RGVsdGEgKiBiYWNraW5nU2NhbGVGYWN0b3I7CiAgICAgW3dpbmRvdyBzZXRG
cmFtZTp3aW5kb3dGcmFtZSBkaXNwbGF5Ok5PXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0JKHJldmlzaW9uIDE1NDI4OCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDYgQEAKICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID09IDEwNjAKLWV4dGVybiAiQyIgREFEaXNrUmVmIERBRGlza0NyZWF0ZUZyb21Wb2x1bWVQYXRo
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgREFTZXNzaW9uUmVmIHNlc3Npb24sIENGVVJMUmVm
IHBhdGgpOwotI2VuZGlmCi0KIEBpbXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXZWJOU0Zp
bGVNYW5hZ2VyRXh0cmFzKQogCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDE1NDI4OCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzcsMTEgKzc3LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNzAKIEBpbnRlcmZhY2UgTlNTcGVsbENoZWNrZXIgKFdlYk5TU3BlbGxDaGVj
a2VyRGV0YWlscykKIC0gKE5TU3RyaW5nICopbGFuZ3VhZ2VGb3JXb3JkUmFuZ2U6KE5TUmFuZ2Up
cmFuZ2UgaW5TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9ydGhvZ3JhcGh5OihOU09ydGhvZ3Jh
cGh5ICopb3J0aG9ncmFwaHk7CiBAZW5kCi0jZW5kaWYKIAogQGludGVyZmFjZSBOU0F0dHJpYnV0
ZWRTdHJpbmcgKFdlYk5TQXR0cmlidXRlZFN0cmluZ0RldGFpbHMpCiAtIChpZClfaW5pdFdpdGhE
T01SYW5nZTooRE9NUmFuZ2UqKXJhbmdlOwpAQCAtNzIwLDExICs3MTgsNyBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4CiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSB0eXBl
KSBjb25zdAogewogICAgIC8vIFRoaXMgcHJldmVudHMgZXJhc2luZyBzcGVsbGluZyBtYXJrZXJz
IG9uIE9TIFggTGlvbiBvciBsYXRlciB0byBtYXRjaCBBcHBLaXQgb24gdGhlc2UgTWFjIE9TIFgg
dmVyc2lvbnMuCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAg
ICAgcmV0dXJuIHR5cGUgIT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwotI2Vsc2UKLSAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6aWdub3JlV29y
ZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRleHQpCkBAIC05MTMsNyArOTA3LDYgQEAg
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OnNwZWxsaW5nVUlJc1Nob3dpbgogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJp
bmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKSB7CiAgICAgZ3Vlc3Nlcy5jbGVh
cigpOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIE5T
U3RyaW5nKiBsYW5ndWFnZSA9IG5pbDsKICAgICBOU09ydGhvZ3JhcGh5KiBvcnRob2dyYXBoeSA9
IG5pbDsKICAgICBOU1NwZWxsQ2hlY2tlciAqY2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdOwpAQCAtOTIyLDkgKzkxNSw2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpnZXRHdWVzc2VzRm9yV29yZCgKICAgICAgICAgbGFuZ3VhZ2UgPSBbY2hlY2tlciBsYW5ndWFn
ZUZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxlbmd0aCgpKSBpblN0cmluZzpj
b250ZXh0IG9ydGhvZ3JhcGh5Om9ydGhvZ3JhcGh5XTsKICAgICB9CiAgICAgTlNBcnJheSogc3Ry
aW5nc0FycmF5ID0gW2NoZWNrZXIgZ3Vlc3Nlc0ZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCB3
b3JkLmxlbmd0aCgpKSBpblN0cmluZzp3b3JkIGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxEb2N1
bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKV07Ci0jZWxzZQotICAgIE5TQXJy
YXkqIHN0cmluZ3NBcnJheSA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBn
dWVzc2VzRm9yV29yZDp3b3JkXTsKLSNlbmRpZgogICAgIHVuc2lnbmVkIGNvdW50ID0gW3N0cmlu
Z3NBcnJheSBjb3VudF07CiAKICAgICBpZiAoY291bnQgPiAwKSB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwOCwxMCArNzA4
LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYQogICAgICAgICBX
ZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZh
dGUtPndlYkZyYW1lVmlldyBfc2Nyb2xsVmlld107CiAgICAgICAgIGlmIChbZ2V0V2ViVmlldyht
X3dlYkZyYW1lLmdldCgpKSBkcmF3c0JhY2tncm91bmRdKQogICAgICAgICAgICAgW3Njcm9sbFZp
ZXcgc2V0RHJhd3NCYWNrZ3JvdW5kOllFU107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIFtzY3JvbGxWaWV3IHNldFZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWNdOwogICAgICAgICBbc2Nyb2xsVmll
dyBzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlBdXRvbWF0
aWNdOwotI2VuZGlmCiAgICAgfQogCiAgICAgaWYgKG1pbGVzdG9uZXMgJiBEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQpIHsKQEAgLTExNDgsMTAgKzExNDYsOCBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvCiAKICAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcgKnNjcm9sbFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2Ny
b2xsVmlld107CiAgICAgW3Njcm9sbFZpZXcgc2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBbc2Nyb2xsVmlldyBz
ZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk6TlNTY3JvbGxFbGFzdGljaXR5Tm9uZV07CiAgICAg
W3Njcm9sbFZpZXcgc2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk6TlNTY3JvbGxFbGFzdGlj
aXR5Tm9uZV07Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRmlu
aXNoTG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZpc2lvbiAxNTQyODgpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDkgKzQzLDcgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2
b2lkKQogICAgICAgICByZXR1cm47CiAKICAgICBJTklUKEFkdmFuY2VEZWZhdWx0QnV0dG9uUHVs
c2VBbmltYXRpb24pOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayk7Ci0j
ZW5kaWYKICAgICBJTklUKENHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKTsKICAgICBJTklU
KENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7CiAgICAgSU5JVChDR0NvbnRl
eHRSZXNldENsaXApOwpAQCAtMTI1LDE0ICsxMjMsOCBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChHZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKTsKICAgICBJ
TklUKEdldFZlcnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyk7CiAKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLSAgICBJTklUKEdldEh5cGhlbmF0aW9uTG9jYXRp
b25CZWZvcmVJbmRleCk7Ci0gICAgSU5JVChHZXROU0V2ZW50TW9tZW50dW1QaGFzZSk7Ci0jZW5k
aWYKLQogICAgIElOSVQoQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcik7CiAKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBJTklUKElPU3VyZmFj
ZUNvbnRleHRDcmVhdGUpOwogICAgIElOSVQoSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKTsK
ICAgICBJTklUKENyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25z
KTsKQEAgLTE0Myw3ICsxMzUsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZv
aWQpCiAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwogICAg
IElOSVQoQVZBc3NldFJlc29sdmVkVVJMKTsKICAgICBJTklUKEN1cnNvcik7Ci0jZW5kaWYKKwog
I2lmIFVTRShDRk5FVFdPUkspCiAgICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2Up
OwogICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSk7CkBAIC0x
OTQsMTAgKzE4Niw4IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKIAog
ICAgIElOSVQoRGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcyk7CiAKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBJTklUKENyZWF0ZVZNUHJlc3N1cmVEaXNw
YXRjaE9uTWFpblF1ZXVlKTsKLSNlbmRpZgotICAgIAorCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgSU5JVChDcmVhdGVNZW1vcnlTdGF0dXNQcmVzc3Vy
ZUNyaXRpY2FsRGlzcGF0Y2hPbk1haW5RdWV1ZSk7CiAjZW5kaWYKQEAgLTIwNiwxMyArMTk2LDkg
QEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoRXhlY3V0
YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVMaW9uKTsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgSU5JVChDR1BhdGhBZGRSb3VuZGVkUmVj
dCk7Ci0jZW5kaWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgIElOSVQoQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZyk7Ci0jZW5kaWYKIAog
I2lmIFVTRShDT05URU5UX0ZJTFRFUklORykKICAgICBJTklUKEZpbHRlcklzTWFuYWdlZFNlc3Np
b24pOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcubW0JKHJldmlzaW9uIDE1NDI4OCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01NDIsMTMgKzU0Miw4IEBAIC0gKHZvaWQpc2Nyb2xsV2hlZWw6KE5TRXZlbnQgKilldmVudAog
ICAgIEJPT0wgaXNDb250aW51b3VzOwogICAgIFdLR2V0V2hlZWxFdmVudERlbHRhcyhldmVudCwg
JmRlbHRhWCwgJmRlbHRhWSwgJmlzQ29udGludW91cyk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBOU0V2ZW50UGhhc2UgbW9tZW50dW1QaGFzZSA9
IFtldmVudCBtb21lbnR1bVBoYXNlXTsKICAgICBCT09MIGlzTGF0Y2hpbmdFdmVudCA9IG1vbWVu
dHVtUGhhc2UgJiBOU0V2ZW50UGhhc2VCZWdhbiB8fCBtb21lbnR1bVBoYXNlICYgTlNFdmVudFBo
YXNlU3RhdGlvbmFyeTsKLSNlbHNlCi0gICAgaW50IG1vbWVudHVtUGhhc2UgPSBXS0dldE5TRXZl
bnRNb21lbnR1bVBoYXNlKGV2ZW50KTsKLSAgICBCT09MIGlzTGF0Y2hpbmdFdmVudCA9IG1vbWVu
dHVtUGhhc2UgPT0gV0tFdmVudFBoYXNlQmVnYW4gfHwgbW9tZW50dW1QaGFzZSA9PSBXS0V2ZW50
UGhhc2VDaGFuZ2VkOwotI2VuZGlmCiAKICAgICBpZiAoZmFic2YoZGVsdGFZKSA+IGZhYnNmKGRl
bHRhWCkpIHsKICAgICAgICAgaWYgKCFbc2VsZiBhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZ10pIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVu
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEsMjAg
KzcxLDEwIEBAIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2kKIC0gKHZv
aWQpX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVy
dmFsKWR1cmF0aW9uOwogQGVuZAogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCiBzdGF0aWMgTlNSZWN0IGNvbnZlcnRSZWN0VG9TY3JlZW4oTlNXaW5kb3cgKndp
bmRvdywgTlNSZWN0IHJlY3QpCiB7CiAgICAgcmV0dXJuIFt3aW5kb3cgY29udmVydFJlY3RUb1Nj
cmVlbjpyZWN0XTsKIH0KLSNlbHNlCi1zdGF0aWMgTlNSZWN0IGNvbnZlcnRSZWN0VG9TY3JlZW4o
TlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHJlY3QpCi17Ci0gICAgTlNSZWN0IGZyYW1lID0gW3dp
bmRvdyBmcmFtZV07Ci0gICAgcmVjdC5vcmlnaW4ueCArPSBmcmFtZS5vcmlnaW4ueDsKLSAgICBy
ZWN0Lm9yaWdpbi55ICs9IGZyYW1lLm9yaWdpbi55OwotICAgIHJldHVybiByZWN0OwotfQotI2Vu
ZGlmCiAKIEBpbnRlcmZhY2UgTlNXaW5kb3coSXNPbkFjdGl2ZVNwYWNlQWRkaXRpb25Gb3JUaWdl
ckFuZExlb3BhcmQpCiAtIChCT09MKWlzT25BY3RpdmVTcGFjZTsKQEAgLTI3OCwxNiArMjY4LDEy
IEBAIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb24KICAgICAgICAgV0tX
aW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogICAgICAgICAK
ICAgICAgICAgTlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgp
IHdpbmRvd107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAg
ICAgICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBvdXQgb2Yg
b3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdAogICAgICAgICAvLyBiZWhhdmlvciBo
ZXJlLCBtYWtpbmcgc3VyZSB0byByZXNldCB0aGUgYW5pbWF0aW9uIGJlaGF2aW9yIGFmdGVyd2Fy
ZC4KICAgICAgICAgTlNXaW5kb3dBbmltYXRpb25CZWhhdmlvciBhbmltYXRpb25CZWhhdmlvciA9
IFt3ZWJXaW5kb3cgYW5pbWF0aW9uQmVoYXZpb3JdOwogICAgICAgICBbd2ViV2luZG93IHNldEFu
aW1hdGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3JOb25lXTsKLSNlbmRpZgog
ICAgICAgICBbd2ViV2luZG93IG9yZGVyT3V0OnNlbGZdOwotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJl
aGF2aW9yOmFuaW1hdGlvbkJlaGF2aW9yXTsKLSNlbmRpZgogICAgICAgICAKICAgICAgICAgW19m
YWRlQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwogICAgICAgICBbX2ZhZGVBbmltYXRp
b24uZ2V0KCkgc2V0V2luZG93Om5pbF07CkBAIC0zMjgsMTIgKzMxNCwxMCBAQCAtICh2b2lkKWV4
aXRGdWxsU2NyZWVuCiAgICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07
CiAgICAgCiAgICAgTlNXaW5kb3cqIHdlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdl
dCgpIHdpbmRvd107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcw
CiAgICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmltYXRlIGludG8gYW5kIG91dCBvZiBv
cmRlck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0CiAgICAgLy8gYmVoYXZpb3IgaGVyZSwg
bWFraW5nIHN1cmUgdG8gcmVzZXQgdGhlIGFuaW1hdGlvbiBiZWhhdmlvciBhZnRlcndhcmQuCiAg
ICAgTlNXaW5kb3dBbmltYXRpb25CZWhhdmlvciBhbmltYXRpb25CZWhhdmlvciA9IFt3ZWJXaW5k
b3cgYW5pbWF0aW9uQmVoYXZpb3JdOwogICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZp
b3I6TlNXaW5kb3dBbmltYXRpb25CZWhhdmlvck5vbmVdOwotI2VuZGlmCiAgICAgLy8gSWYgdGhl
IHVzZXIgaGFzIG1vdmVkIHRoZSBmdWxsU2NyZWVuIHdpbmRvdyBpbnRvIGEgbmV3IHNwYWNlLCB0
ZW1wb3JhcmlseSBjaGFuZ2UKICAgICAvLyB0aGUgY29sbGVjdGlvbkJlaGF2aW9yIG9mIHRoZSB3
ZWJWaWV3J3Mgd2luZG93IHNvIHRoYXQgaXQgaXMgcHVsbGVkIGludG8gdGhlIGFjdGl2ZSBzcGFj
ZToKICAgICBpZiAoIShbd2ViV2luZG93IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaXNP
bkFjdGl2ZVNwYWNlKV0gPyBbd2ViV2luZG93IGlzT25BY3RpdmVTcGFjZV0gOiBZRVMpKSB7CkBA
IC0zNDMsOSArMzI3LDcgQEAgLSAodm9pZClleGl0RnVsbFNjcmVlbgogICAgICAgICBbd2ViV2lu
ZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjpiZWhhdmlvcl07CiAgICAgfSBlbHNlCiAgICAgICAg
IFt3ZWJXaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3
aW5kb3ddIHdpbmRvd051bWJlcl1dOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAogICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZpb3I6YW5pbWF0aW9u
QmVoYXZpb3JdOwotI2VuZGlmCiAKICAgICBbc2VsZiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1h
dGlvbldpdGhEdXJhdGlvbjpkZWZhdWx0QW5pbWF0aW9uRHVyYXRpb25dOwogICAgIF9pc0V4aXRp
bmdGdWxsU2NyZWVuID0gWUVTOyAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtODYwLDI2ICs4NjAsMTEgQEAg
LSAodm9pZClfcGFzdGVXaXRoUGFzdGVib2FyZDooTlNQYXN0ZWJvYQogCiAgICAgRE9NUmFuZ2Ug
KnJhbmdlID0gW3NlbGYgX3NlbGVjdGVkUmFuZ2VdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA3MAorCiAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2Vs
ZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgaW5Db250ZXh0OnJh
bmdlIGFsbG93UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0XTsKICAgICBpZiAoZnJhZ21lbnQgJiYg
W3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJh
bmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKQogICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2Nh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7Ci0jZWxzZQot
ICAgIC8vIE1haWwgaXMgaWdub3JpbmcgdGhlIGZyYW1lbnQgcGFzc2VkIHRvIHRoZSBkZWxlZ2F0
ZSBhbmQgY3JlYXRlcyBhIG5ldyBvbmUuCi0gICAgLy8gV2Ugd2FudCB0byBhdm9pZCBjcmVhdGlu
ZyB0aGUgZnJhZ21lbnQgdHdpY2UuCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNBcHBsZU1haWwoKSkg
ewotICAgICAgICBpZiAoW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50Om5pbCByZXBsYWNpbmdE
T01SYW5nZTpyYW5nZSBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkXSkgewot
ICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1l
bnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgaW5Db250ZXh0OnJhbmdlIGFsbG93
UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0XTsKLSAgICAgICAgICAgIGlmIChmcmFnbWVudCkKLSAg
ICAgICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnBhc3RlQXNGcmFnbWVudChjb3JlKGZy
YWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRd
LCBmYWxzZSk7Ci0gICAgICAgIH0gICAgICAgIAotICAgIH0gZWxzZSB7Ci0gICAgICAgIERPTURv
Y3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFz
dGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWluVGV4dDphbGxvd1Bs
YWluVGV4dF07Ci0gICAgICAgIGlmIChmcmFnbWVudCAmJiBbc2VsZiBfc2hvdWxkSW5zZXJ0RnJh
Z21lbnQ6ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZ2l2ZW5BY3Rpb246V2ViVmll
d0luc2VydEFjdGlvblBhc3RlZF0pCi0gICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnBh
c3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQ
YXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7Ci0gICAgfQotI2VuZGlmCisKICAgICBbd2Vi
VmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVib2FyZDpuaWxdOwogICAgIFt3ZWJWaWV3IHJlbGVhc2Vd
OwogfQpAQCAtMjgzMiwxMSArMjgxNyw5IEBAIC0gKHZvaWQpcmVtb3ZlTW91c2VNb3ZlZE9ic2Vy
dmVyCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgLy8gTGVnYWN5IHNjcm9sbGJhcnMgcmVxdWlyZSB0cmFj
a2luZyB0aGUgbW91c2UgYXQgYWxsIHRpbWVzLgogICAgIGlmIChXS1JlY29tbWVuZGVkU2Nyb2xs
ZXJTdHlsZSgpID09IE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeSkKICAgICAgICAgcmV0dXJuOwotI2Vu
ZGlmCiAKICAgICBbW3NlbGYgX3dlYlZpZXddIF9tb3VzZURpZE1vdmVPdmVyRWxlbWVudDpuaWwg
bW9kaWZpZXJGbGFnczowXTsKICAgICBbc2VsZiBfcmVtb3ZlTW91c2VNb3ZlZE9ic2VydmVyVW5j
b25kaXRpb25hbGx5XTsKQEAgLTMzODAsMTMgKzMzNjMsMTEgQEAgLSAodm9pZCl3aW5kb3dEaWRC
ZWNvbWVLZXk6KE5TTm90aWZpY2F0aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaWYgKF9wcml2YXRlLT50
cmFja2luZ0FyZWFGb3JOb25LZXlXaW5kb3cpIHsKICAgICAgICAgW3NlbGYgcmVtb3ZlVHJhY2tp
bmdBcmVhOl9wcml2YXRlLT50cmFja2luZ0FyZWFGb3JOb25LZXlXaW5kb3ddOwogICAgICAgICBb
X3ByaXZhdGUtPnRyYWNraW5nQXJlYUZvck5vbktleVdpbmRvdyByZWxlYXNlXTsKICAgICAgICAg
X3ByaXZhdGUtPnRyYWNraW5nQXJlYUZvck5vbktleVdpbmRvdyA9IG5pbDsKICAgICB9Ci0jZW5k
aWYKIAogICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07CiAK
QEAgLTM0MTMsNyArMzM5NCw2IEBAIC0gKHZvaWQpd2luZG93RGlkUmVzaWduS2V5OihOU05vdGlm
aWNhdGkKICAgICAgICAgW19wcml2YXRlLT5jb21wbGV0aW9uQ29udHJvbGxlciBlbmRSZXZlcnRp
bmdDaGFuZ2U6Tk8gbW92ZUxlZnQ6Tk9dOwogICAgIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmIChXS1JlY29tbWVuZGVkU2Nyb2xsZXJTdHls
ZSgpID09IE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeSkgewogICAgICAgICAvLyBMZWdhY3kgc3R5bGUg
c2Nyb2xsYmFycyBoYXZlIGRlc2lnbiBkZXRhaWxzIHRoYXQgcmVseSBvbiB0cmFja2luZyB0aGUg
bW91c2UgYWxsIHRoZSB0aW1lLgogICAgICAgICAvLyBJdCdzIGVhc2llc3QgdG8gZG8gdGhpcyB3
aXRoIGEgdHJhY2tpbmcgYXJlYSwgd2hpY2ggd2Ugd2lsbCByZW1vdmUgd2hlbiB0aGUgd2luZG93
IGlzIGtleQpAQCAtMzQyNCw3ICszNDA0LDYgQEAgLSAodm9pZCl3aW5kb3dEaWRSZXNpZ25LZXk6
KE5TTm90aWZpY2F0aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVzZXJJbmZvOm5pbF07CiAgICAgICAgIFtzZWxmIGFkZFRyYWNraW5nQXJlYTpf
cHJpdmF0ZS0+dHJhY2tpbmdBcmVhRm9yTm9uS2V5V2luZG93XTsKICAgICB9Ci0jZW5kaWYKIH0K
IAogLSAodm9pZCl3aW5kb3dXaWxsT3JkZXJPblNjcmVlbjooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDE1NDI4OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjYwLDE0ICs2NjAsNiBAQCAtICh2b2lkKV9yZWdpc3RlckRyYWdnZWRUeXBl
cwogICAgIFt0eXBlcyByZWxlYXNlXTsKIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPT0gMTA2MAotLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB3
ZSBubyBsb25nZXIgd2FudCB0byBrZWVwIFNhZmFyaSA1LjAueCB3b3JraW5nIHdpdGggbmlnaHRs
eSBidWlsZHMuCi0tIChCT09MKV91c2VzRG9jdW1lbnRWaWV3cwotewotICAgIHJldHVybiB0cnVl
OwotfQotI2VuZGlmCi0KIHN0YXRpYyBib29sIG5lZWRzT3V0bG9va1F1aXJrc1NjcmlwdCgpCiB7
CiAgICAgc3RhdGljIGJvb2wgaXNPdXRsb29rTmVlZGluZ1F1aXJrc1NjcmlwdCA9ICFXZWJLaXRM
aW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9IVE1MNV9QQVJTRVIpCkBA
IC01ODk0LDE5ICs1ODg2LDExIEBAIC0gKGZsb2F0KV9kZXZpY2VTY2FsZUZhY3RvcgogCiAgICAg
TlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAgTlNXaW5kb3cgKmhvc3RXaW5k
b3cgPSBbc2VsZiBob3N0V2luZG93XTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKICAgICBpZiAod2luZG93KQogICAgICAgICByZXR1cm4gW3dpbmRvdyBiYWNr
aW5nU2NhbGVGYWN0b3JdOwogICAgIGlmIChob3N0V2luZG93KQogICAgICAgICByZXR1cm4gW2hv
c3RXaW5kb3cgYmFja2luZ1NjYWxlRmFjdG9yXTsKICAgICByZXR1cm4gW1tOU1NjcmVlbiBtYWlu
U2NyZWVuXSBiYWNraW5nU2NhbGVGYWN0b3JdOwotI2Vsc2UKLSAgICBpZiAod2luZG93KQotICAg
ICAgICByZXR1cm4gW3dpbmRvdyB1c2VyU3BhY2VTY2FsZUZhY3Rvcl07Ci0gICAgaWYgKGhvc3RX
aW5kb3cpCi0gICAgICAgIHJldHVybiBbaG9zdFdpbmRvdyB1c2VyU3BhY2VTY2FsZUZhY3Rvcl07
Ci0gICAgcmV0dXJuIFtbTlNTY3JlZW4gbWFpblNjcmVlbl0gdXNlclNwYWNlU2NhbGVGYWN0b3Jd
OwotI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxpbmUgdWludDY0X3Qgcm91bmRVcFRvUG93ZXJPZjIo
dWludDY0X3QgbnVtKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzEwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTMtMDgtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDA0OT4gRGVs
ZXRlIGNvZGUgZm9yIFNub3cgTGVvcGFyZAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0NoZWNrZWRNYWxsb2MuY3Bw
OgorICAgICAgICAocHJvdGVjdGlvbk9mUmVnaW9uKToKKyAgICAgICAgKG1ha2VMYXJnZU1hbGxv
Y0ZhaWxTaWxlbnRseSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tOgor
ICAgICAgICAoLVtEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBlbnVtZXJhdGVEcmFnZ2luZ0l0
ZW1zV2l0aE9wdGlvbnM6Zm9yVmlldzpjbGFzc2VzOnNlYXJjaE9wdGlvbnM6dXNpbmdCbG9jazpd
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06Cisg
ICAgICAgICh0ZXN0UGF0aEZyb21VUkwpOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3
ZWJWaWV3OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RIZWxwZXIubToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbToKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tOgorICAgICAg
ICAoV1RSOjp0ZXN0UGF0aEZyb21VUkwpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBh
Z2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisKIDIwMTMtMDgt
MTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTkxNQpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0NoZWNrZWRNYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9DaGVja2VkTWFsbG9jLmNwcAkocmV2aXNpb24gMTU0Mjg4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0NoZWNrZWRNYWxsb2MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw3ICs1NCw2IEBAIHN0YXRpYyB2b2lkKiBjaGVja2VkUmVhbGxvYyhtYWxsb2Nfem9u
ZV8KICAgICByZXR1cm4gc2F2ZWRSZWFsbG9jKHpvbmUsIHB0ciwgc2l6ZSk7CiB9CiAKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIHN0YXRpYyB2bV9wcm90X3Qg
cHJvdGVjdGlvbk9mUmVnaW9uKG1hY2hfdm1fYWRkcmVzc190IGFkZHJlc3MpCiB7CiAgICAgbWFj
aF92bV9zaXplX3QgcmVnaW9uU2l6ZSA9IDA7CkBAIC02NSwyOCArNjQsMjMgQEAgc3RhdGljIHZt
X3Byb3RfdCBwcm90ZWN0aW9uT2ZSZWdpb24obWFjaAogICAgICAgICBDUkFTSCgpOwogICAgIHJl
dHVybiByZWdpb25JbmZvLnByb3RlY3Rpb247CiB9Ci0jZW5kaWYKIAogdm9pZCBtYWtlTGFyZ2VN
YWxsb2NGYWlsU2lsZW50bHkoKQogewogICAgIG1hbGxvY196b25lX3QqIHpvbmUgPSBtYWxsb2Nf
ZGVmYXVsdF96b25lKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKICAgICBtYWNoX3ZtX2FkZHJlc3NfdCBwYWdlU3RhcnQgPSByZWludGVycHJldF9jYXN0
PHZtX2FkZHJlc3NfdD4oem9uZSkgJiBzdGF0aWNfY2FzdDx2bV9zaXplX3Q+KH4oZ2V0cGFnZXNp
emUoKSAtIDEpKTsKICAgICB2bV9wcm90X3QgaW5pdGlhbFByb3RlY3Rpb24gPSBwcm90ZWN0aW9u
T2ZSZWdpb24ocGFnZVN0YXJ0KTsKIAogICAgIHZtX3NpemVfdCBsZW4gPSByZWludGVycHJldF9j
YXN0PHZtX2FkZHJlc3NfdD4oem9uZSkgLSBwYWdlU3RhcnQgKyBzaXplb2YobWFsbG9jX3pvbmVf
dCk7CiAgICAgaWYgKG1hY2hfdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCBwYWdlU3RhcnQs
IGxlbiwgMCwgaW5pdGlhbFByb3RlY3Rpb24gfCBWTV9QUk9UX1dSSVRFKSkKICAgICAgICAgQ1JB
U0goKTsKLSNlbmRpZgogCiAgICAgc2F2ZWRNYWxsb2MgPSB6b25lLT5tYWxsb2M7CiAgICAgc2F2
ZWRSZWFsbG9jID0gem9uZS0+cmVhbGxvYzsKICAgICB6b25lLT5tYWxsb2MgPSBjaGVja2VkTWFs
bG9jOwogICAgIHpvbmUtPnJlYWxsb2MgPSBjaGVja2VkUmVhbGxvYzsKIAotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmIChtYWNoX3ZtX3Byb3RlY3Qo
bWFjaF90YXNrX3NlbGYoKSwgcGFnZVN0YXJ0LCBsZW4sIDAsIGluaXRpYWxQcm90ZWN0aW9uKSkK
ICAgICAgICAgQ1JBU0goKTsKLSNlbmRpZgogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MTUsNyAr
NjE1LDYgQEAgc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbAogICAgIFtk
ZWZhdWx0cyBzZXRCb29sOllFUyBmb3JLZXk6V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJl
bmNlS2V5XTsKICAgICBbZGVmYXVsdHMgc2V0Qm9vbDpZRVMgZm9yS2V5OkAiVXNlV2ViS2l0V2Vi
SW5zcGVjdG9yIl07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzAKICAgICBbZGVmYXVsdHMgc2V0T2JqZWN0OltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3RzQW5kS2V5czoKICAgICAgICAgQCJub3RhdGlvbmFsIiwgQCJub3RhdGlvbmwiLAogICAg
ICAgICBAIm1lc3NhZ2UiLCBAIm1lc2FnZSIsCkBAIC02MjMsNyArNjIyLDYgQEAgc3RhdGljIHZv
aWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbAogICAgICAgICBAIndlbGNvbWUiLCBAIndl
bGxjb21lIiwKICAgICAgICAgQCJoZWxsb1xud29ybGQiLCBAImhlbGxvbGZ3b3JsZCIsCiAgICAg
ICAgIG5pbF0gZm9yS2V5OkAiTlNUZXN0Q29ycmVjdGlvbkRpY3Rpb25hcnkiXTsKLSNlbmRpZgog
CiAgICAgLy8gU2Nyb2xsYmFycyBhcmUgZHJhd24gZWl0aGVyIHVzaW5nIEFwcEtpdCAod2hpY2gg
dXNlcyBOU1VzZXJEZWZhdWx0cykgb3IgdXNpbmcgSElUb29sYm94ICh3aGljaCB1c2VzIENGUHJl
ZmVyZW5jZXMgLyBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uIC8ga0NGUHJlZmVyZW5jZXND
dXJyZW50VXNlciAvIGtDRlByZWZlcmVuY2VzQW55SG9zdCkKICAgICBbZGVmYXVsdHMgc2V0T2Jq
ZWN0OkAiRG91YmxlTWF4IiBmb3JLZXk6QCJBcHBsZVNjcm9sbEJhclZhcmlhbnQiXTsKQEAgLTcw
Myw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsCiAg
ICAgLy8gU28sIHR1cm4gaXQgb2ZmIGZvciBub3csIGJ1dCB3ZSBtaWdodCB3YW50IHRvIHR1cm4g
aXQgYmFjayBvbiBzb21lIGRheS4KICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlc1BhZ2VDYWNoZTpO
T107CiAgICAgW3ByZWZlcmVuY2VzIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOllF
U107Ci0jaWYgVVNFKENBKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzAKKyNpZiBVU0UoQ0EpCiAgICAgW3ByZWZlcmVuY2VzIHNldENhbnZhc1VzZXNBY2NlbGVyYXRl
ZERyYXdpbmc6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZDpOT107CiAjZW5kaWYKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZURyYWdnaW5nSW5mby5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0JKHJldmlzaW9uIDE1NDI4OCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBAIC0gKE5TQXJyYXkgKiluYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWQKICAgICByZXR1cm4gbmlsOwogfQogCi0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAtIChOU0RyYWdnaW5nRm9ybWF0aW9uKWRyYWdn
aW5nRm9ybWF0aW9uCiB7CiAgICAgcmV0dXJuIE5TRHJhZ2dpbmdGb3JtYXRpb25EZWZhdWx0OwpA
QCAtMTQwLDcgKzEzOSw2IEBAIC0gKHZvaWQpZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRp
b24KIHsKICAgICAvLyBJZ25vcmVkLgogfQotI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogCiBAZW5kCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDE1NDI4OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTU1LDcgKzE1NSw2IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKWMgbG9jYXRpb25D
aGEKICAgICB9CiB9CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzAKIHN0YXRpYyBOU1N0cmluZyAqdGVzdFBhdGhGcm9tVVJMKE5TVVJMKiB1cmwpCiB7CiAgICAg
aWYgKFt1cmwgaXNGaWxlVVJMXSkgewpAQCAtMTc2LDE5ICsxNzUsMTYgQEAgc3RhdGljIE5TU3Ry
aW5nICp0ZXN0UGF0aEZyb21VUkwoTlNVUkwqIAogCiAgICAgcmV0dXJuIG5pbDsKIH0KLSNlbmRp
ZgogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIEFTU0VSVChbZnJhbWUgcHJv
dmlzaW9uYWxEYXRhU291cmNlXSk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKICAgICBpZiAoIWRvbmUgJiYgW1tzZW5kZXIgbWFpbkZyYW1lXSBpc0VxdWFs
OmZyYW1lXSkgewogICAgICAgICBOU1VSTCAqcHJvdmlzaW9uYWxMb2FkVVJMID0gW1tbZnJhbWUg
cHJvdmlzaW9uYWxEYXRhU291cmNlXSBpbml0aWFsUmVxdWVzdF0gVVJMXTsKICAgICAgICAgaWYg
KE5TU3RyaW5nICp0ZXN0UGF0aCA9IHRlc3RQYXRoRnJvbVVSTChwcm92aXNpb25hbExvYWRVUkwp
KQogICAgICAgICAgICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1h
dGlvbigoQ0ZTdHJpbmdSZWYpW0AiQ1JBU0hJTkcgVEVTVDogIiBzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzp0ZXN0UGF0aF0pOwogICAgIH0KLSNlbmRpZgogCiAgICAgaWYgKCFkb25lICYmIGdUZXN0
UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgTlNTdHJpbmcgKnN0
cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHRdXTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVy
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RIZWxw
ZXIubQkocmV2aXNpb24gMTU0Mjg4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RIZWxwZXIubQkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsNiBAQAogLy8gdGVzdCBz
Y3JpcHQsIHNvIGl0IGNhbiBkbyB0aGUgam9iIGZvciBtdWx0aXBsZSBEdW1wUmVuZGVyVHJlZSB3
aGlsZSB0aGV5IGFyZQogLy8gcnVubmluZyBsYXlvdXQgdGVzdHMuCiAKLSNpZiBNQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0KIHN0YXRpYyBDRlVSTFJlZiBzVXNlckNvbG9y
UHJvZmlsZVVSTDsKIAogc3RhdGljIHZvaWQgaW5zdGFsbExheW91dFRlc3RDb2xvclByb2ZpbGUo
KQpAQCAtMTI0LDU5ICsxMjIsNiBAQCBzdGF0aWMgdm9pZCByZXN0b3JlVXNlckNvbG9yUHJvZmls
ZSh2b2lkCiAgICAgQ0ZSZWxlYXNlKHByb2ZpbGVJbmZvKTsKIH0KIAotI2Vsc2UgLy8gRm9yIFNu
b3cgTGVvcGFyZCBhbmQgYmVmb3JlLCB1c2Ugb2xkZXIgQ00qIEFQSS4KLQotY29uc3QgY2hhciBj
b2xvclByb2ZpbGVQYXRoW10gPSAiL1N5c3RlbS9MaWJyYXJ5L0NvbG9yU3luYy9Qcm9maWxlcy9H
ZW5lcmljIFJHQiBQcm9maWxlLmljYyI7Ci0KLUNNUHJvZmlsZUxvY2F0aW9uIGluaXRpYWxDb2xv
clByb2ZpbGVMb2NhdGlvbjsgLy8gVGhlIGxvY1R5cGUgZmllbGQgaXMgaW5pdGlhbGl6ZWQgdG8g
MCB3aGljaCBpcyB0aGUgc2FtZSBhcyBjbU5vUHJvZmlsZUJhc2UuCi0KLXN0YXRpYyB2b2lkIGlu
c3RhbGxMYXlvdXRUZXN0Q29sb3JQcm9maWxlKCkKLXsKLSAgICAvLyBUbyBtYWtlIHN1cmUgd2Ug
Z2V0IGNvbnNpc3RlbnQgY29sb3JzIChub3QgZGVwZW5kZW50IG9uIHRoZSBjaG9zZW4gY29sb3IK
LSAgICAvLyBzcGFjZSBvZiB0aGUgbWFpbiBkaXNwbGF5KSwgd2UgZm9yY2UgdGhlIGdlbmVyaWMg
UkdCIGNvbG9yIHByb2ZpbGUuCi0gICAgLy8gVGhpcyBjYXVzZXMgYSBjaGFuZ2UgdGhlIHVzZXIg
Y2FuIHNlZS4KLSAgICAKLSAgICBjb25zdCBDTURldmljZVNjb3BlIHNjb3BlID0geyBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRIb3N0IH07Ci0KLSAgICBD
TVByb2ZpbGVSZWYgcHJvZmlsZSA9IDA7Ci0gICAgaW50IGVycm9yID0gQ01HZXRQcm9maWxlQnlB
VklEKChDTURpc3BsYXlJRFR5cGUpa0NHRGlyZWN0TWFpbkRpc3BsYXksICZwcm9maWxlKTsKLSAg
ICBpZiAoIWVycm9yKSB7Ci0gICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKGluaXRpYWxDb2xv
clByb2ZpbGVMb2NhdGlvbik7Ci0gICAgICAgIGVycm9yID0gTkNNR2V0UHJvZmlsZUxvY2F0aW9u
KHByb2ZpbGUsICZpbml0aWFsQ29sb3JQcm9maWxlTG9jYXRpb24sICZzaXplKTsKLSAgICAgICAg
Q01DbG9zZVByb2ZpbGUocHJvZmlsZSk7Ci0gICAgfQotICAgIGlmIChlcnJvcikgewotICAgICAg
ICBOU0xvZyhAIkZhaWxlZCB0byBnZXQgdGhlIGN1cnJlbnQgY29sb3IgcHJvZmlsZS4gTWFueSBw
aXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3VsdC4gRXJyb3I6ICVkIiwgKGludCllcnJvcik7
Ci0gICAgICAgIGluaXRpYWxDb2xvclByb2ZpbGVMb2NhdGlvbi5sb2NUeXBlID0gY21Ob1Byb2Zp
bGVCYXNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ01Qcm9maWxlTG9jYXRpb24g
bG9jYXRpb247Ci0gICAgbG9jYXRpb24ubG9jVHlwZSA9IGNtUGF0aEJhc2VkUHJvZmlsZTsKLSAg
ICBzdHJuY3B5KGxvY2F0aW9uLnUucGF0aExvYy5wYXRoLCBjb2xvclByb2ZpbGVQYXRoLCBzaXpl
b2YobG9jYXRpb24udS5wYXRoTG9jLnBhdGgpKTsKLSAgICBlcnJvciA9IENNU2V0RGV2aWNlUHJv
ZmlsZShjbURpc3BsYXlEZXZpY2VDbGFzcywgKENNRGV2aWNlSUQpa0NHRGlyZWN0TWFpbkRpc3Bs
YXksICZzY29wZSwgY21EZWZhdWx0UHJvZmlsZUlELCAmbG9jYXRpb24pOwotICAgIGlmIChlcnJv
cikgewotICAgICAgICBOU0xvZyhAIkZhaWxlZCBpbnN0YWxsIHRoZSBHZW5lcmljUkdCIGNvbG9y
IHByb2ZpbGUuIE1hbnkgcGl4ZWwgdGVzdHMgbWF5IGZhaWwgYXMgYSByZXN1bHQuIEVycm9yOiAl
ZCIsIChpbnQpZXJyb3IpOwotICAgICAgICBpbml0aWFsQ29sb3JQcm9maWxlTG9jYXRpb24ubG9j
VHlwZSA9IGNtTm9Qcm9maWxlQmFzZTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc3RvcmVV
c2VyQ29sb3JQcm9maWxlKHZvaWQpCi17Ci0gICAgLy8gVGhpcyBpcyB1c2VkIGFzIGEgc2lnbmFs
IGhhbmRsZXIsIGFuZCB0aHVzIHRoZSBjYWxscyBpbnRvIENvbG9yU3luYyBhcmUgdW5zYWZlLgot
ICAgIC8vIEJ1dCB3ZSBtaWdodCBhcyB3ZWxsIHRyeSB0byByZXN0b3JlIHRoZSB1c2VyJ3MgY29s
b3IgcHJvZmlsZSwgd2UncmUgZ29pbmcgZG93biBhbnl3YXkuLi4KLSAgICBpZiAoaW5pdGlhbENv
bG9yUHJvZmlsZUxvY2F0aW9uLmxvY1R5cGUgIT0gY21Ob1Byb2ZpbGVCYXNlKSB7Ci0gICAgICAg
IGNvbnN0IENNRGV2aWNlU2NvcGUgc2NvcGUgPSB7IGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIs
IGtDRlByZWZlcmVuY2VzQ3VycmVudEhvc3QgfTsKLSAgICAgICAgaW50IGVycm9yID0gQ01TZXRE
ZXZpY2VQcm9maWxlKGNtRGlzcGxheURldmljZUNsYXNzLCAoQ01EZXZpY2VJRClrQ0dEaXJlY3RN
YWluRGlzcGxheSwgJnNjb3BlLCBjbURlZmF1bHRQcm9maWxlSUQsICZpbml0aWFsQ29sb3JQcm9m
aWxlTG9jYXRpb24pOwotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIE5TTG9nKEAi
RmFpbGVkIHRvIHJlc3RvcmUgY29sb3IgcHJvZmlsZSwgdXNlIFN5c3RlbSBQcmVmZXJlbmNlcyAt
PiBEaXNwbGF5cyAtPiBDb2xvciB0byByZXNldC4gRXJyb3I6ICVkIiwgKGludCllcnJvcik7Ci0g
ICAgICAgIH0KLSAgICAgICAgaW5pdGlhbENvbG9yUHJvZmlsZUxvY2F0aW9uLmxvY1R5cGUgPSBj
bU5vUHJvZmlsZUJhc2U7Ci0gICAgfQotfQotCi0jZW5kaWYKLQogc3RhdGljIHZvaWQgc2ltcGxl
U2lnbmFsSGFuZGxlcihpbnQgc2lnKQogewogICAgIC8vIFRyeSB0byByZXN0b3JlIHRoZSBjb2xv
ciBwcm9maWxlIGFuZCB0cnkgdG8gZ28gZG93biBjbGVhbmx5CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMTU0Mjg4KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTky
MywxMSArOTIzLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbAog
CiBzdGF0aWMgTlNTdHJpbmcgKlN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGUgPSBAIkR1bXBS
ZW5kZXJUcmVlU3luY2hyb25vdXNMb2FkZXJSdW5Mb29wTW9kZSI7CiAKLSNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLUBwcm90b2NvbCBOU1VSTENvbm5lY3Rpb25E
ZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1AZW5kCi0jZW5kaWYKLQogQGludGVyZmFjZSBTeW5jaHJvbm91
c0xvYWRlciA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4KIHsKICAgICBOU1N0
cmluZyAqbV91c2VybmFtZTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCShyZXZp
c2lvbiAxNTQyODgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9JbmplY3RlZEJ1bmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUoCiAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDpOT10sICAgICBAIk5TT3ZlcmxheVNjcm9sbGVyc0VuYWJsZWQiLAog
ICAgICAgICBAIkFsd2F5cyIsICAgICAgICAgICAgICAgICAgICAgICAgQCJBcHBsZVNob3dTY3Jv
bGxCYXJzIiwKICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OkAiZW4iXSwgIEAiQXBw
bGVMYW5ndWFnZXMiLAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6QCJu
b3RhdGlvbmFsIiwgQCJub3RhdGlvbmwiLCBuaWxdLCBAIk5TVGVzdENvcnJlY3Rpb25EaWN0aW9u
YXJ5IiwKLSNlbmRpZgogICAgICAgICBuaWxdOwogCiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46ZGljdCBmb3JOYW1lOk5TQXJndW1l
bnREb21haW5dOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQkocmV2
aXNpb24gMTU0Mjg4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2
IEBAIG5hbWVzcGFjZSBXVFIgewogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCi0jaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBzdGF0aWMgU3RyaW5nIHRlc3RQYXRo
RnJvbVVSTChXS1VSTFJlZiB1cmwpCiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9
IGFkb3B0Q0YoV0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CkBAIC03
MCwxMSArNjksOSBAQCBzdGF0aWMgU3RyaW5nIHRlc3RQYXRoRnJvbVVSTChXS1VSTFJlZiB1CiAK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lKQogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC04Nyw3ICs4NCw2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9y
bURpZFN0YXIKICAgICAgICAgYnVpbGRlci5hcHBlbmQodGVzdFBhdGgpOwogICAgICAgICBXS1Nl
dENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGJ1aWxkZXIudG9TdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209153</attachid>
            <date>2013-08-19 20:38:41 -0700</date>
            <delta_ts>2013-08-19 20:55:37 -0700</delta_ts>
            <desc>Removes ifdefs</desc>
            <filename>bug-120049-20130819203841.patch</filename>
            <type>text/plain</type>
            <size>104012</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwNDk+IERl
bGV0ZSBjb2RlIGZvciBTbm93IExlb3BhcmQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKFdURjo6
VENNYWxsb2NfVGhyZWFkQ2FjaGU6OkNyZWF0ZUNhY2hlSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHd0Zi9GZWF0dXJlRGVmaW5lcy5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEz
LTA4LTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDAzNj4gW2lPU10gVXBzdHJlYW0gU291cmNlL1dURiBY
Y29kZSBwcm9qZWN0IGZvciBpT1MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAx
NTQzMTApCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTA5OCw5ICs1MDk4LDcgQEAgZXh0ZXJuICJDIiB7CiBtYWxsb2NfaW50cm9zcGVjdGlvbl90
IGpzY29yZV9mYXN0bWFsbG9jX2ludHJvc3BlY3Rpb24gPSB7ICZGYXN0TWFsbG9jWm9uZTo6ZW51
bWVyYXRlLCAmRmFzdE1hbGxvY1pvbmU6Omdvb2RTaXplLCAmRmFzdE1hbGxvY1pvbmU6OmNoZWNr
LCAmRmFzdE1hbGxvY1pvbmU6OnByaW50LAogICAgICZGYXN0TWFsbG9jWm9uZTo6bG9nLCAmRmFz
dE1hbGxvY1pvbmU6OmZvcmNlTG9jaywgJkZhc3RNYWxsb2Nab25lOjpmb3JjZVVubG9jaywgJkZh
c3RNYWxsb2Nab25lOjpzdGF0aXN0aWNzCiAgICAgLCAwIC8vIHpvbmVfbG9ja2VkIHdpbGwgbm90
IGJlIGNhbGxlZCBvbiB0aGUgem9uZSB1bmxlc3MgaXQgYWR2ZXJ0aXNlcyBpdHNlbGYgYXMgdmVy
c2lvbiBmaXZlIG9yIGhpZ2hlci4KLSNpZiBPUyhJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMDcwCiAgICAgLCAwLCAwLCAwLCAwIC8vIFRoZXNlIG1lbWJlcnMgd2ls
bCBub3QgYmUgdXNlZCB1bmxlc3MgdGhlIHpvbmUgYWR2ZXJ0aXNlcyBpdHNlbGYgYXMgdmVyc2lv
biBzZXZlbiBvciBoaWdoZXIuCi0jZW5kaWYKIAogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxNyArMTcwLDEzIEBACiAjZGVmaW5lIEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSAxCiAjZW5kaWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogI2lmICFkZWZpbmVkKEVOQUJMRV9HRVNUVVJFX0VWRU5UUykK
ICNkZWZpbmUgRU5BQkxFX0dFU1RVUkVfRVZFTlRTIDEKICNlbmRpZgotI2VuZGlmCiAKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICNpZiAhZGVmaW5lZChFTkFC
TEVfUlVCQkVSX0JBTkRJTkcpCiAjZGVmaW5lIEVOQUJMRV9SVUJCRVJfQkFORElORyAxCiAjZW5k
aWYKLSNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1NNT09USF9TQ1JPTExJTkcpCiAjZGVm
aW5lIEVOQUJMRV9TTU9PVEhfU0NST0xMSU5HIDEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1
NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc5IEBACisyMDEzLTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwNDk+IERlbGV0ZSBjb2RlIGZvciBT
bm93IExlb3BhcmQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZWxldGUgYWxsIHRoZSBjb2RlIGZvciBNYWMgT1MgMTAuNi4gTm9ib2R5IGJ1aWxkcyBv
biBTbm93IExlb3BhcmQgYXQgdGhpcyBwb2ludC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBh
c3RlV2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgICogcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9CdXNNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFu
aW1hdGlvbnNGcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUxheWVyTWFjLm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjphY2NlbGVyYXRl
c0RyYXdpbmcpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXRBY2NlbGVyYXRlc0RyYXdp
bmcpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1NjYWxlKToKKyAgICAgICAg
KFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChQbGF0Zm9ybUNB
TGF5ZXI6OnN5bmNocm9ub3VzbHlEaXNwbGF5VGlsZXNJblJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyOjpzZXRTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJv
bGxlcjo6c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250
cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhdGg6OnBsYXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldEZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvd0dseXBoc1dpdGhB
ZHZhbmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4
dE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JE
b2N1bWVudE1hcmtlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OmNyZWF0ZVFUTW92aWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmxheWVySG9zdENoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbToKKyAgICAgICAgKGRyYXdMYXllckNvbnRlbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpl
bnN1cmVQbGF0Zm9ybUN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0VtcHR5UHJvdG9j
b2xEZWZpbml0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnJlbGVhc2VNZW1vcnkpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9OU1Njcm9sbGVy
SW1wRGV0YWlscy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vbWVudHVtUGhhc2VGb3JFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpwaGFzZUZvckV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NoYXJlZFRpbWVyTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvbWFjL0h5cGhlbmF0aW9uTWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50ZWRDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
c2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQpOgorCiAyMDEzLTA4LTE5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xMTk5MzA+IGlucHV0W3R5cGU9cmFuZ2VdOiBGaXggYSBjcmFzaCBieSBjaGFuZ2luZyBpbnB1
dCB0eXBlIGluICdpbnB1dCcgZXZlbnQgaGFuZGxlcgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzA1LDIzICsyMzA1LDE3IEBAIF9fWk43V2ViQ29yZTdJbnRTaXplQzFF
Uks3X05TU2l6ZQogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y3X05TU2l6ZUV2CiAjZW5kaWYKIAot
I2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0g
MTA2MAotX3drR2V0TlNFdmVudE1vbWVudHVtUGhhc2UKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0o
SU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIF93a0NBTGF5
ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2sKIF93a0NGVVJMUmVxdWVzdEFsbG93
QWxsUG9zdENhY2hpbmcKIF93a0NHUGF0aEFkZFJvdW5kZWRSZWN0CiBfd2tDcmVhdGVDVFR5cGVz
ZXR0ZXJXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9ucwotI2VuZGlmCiAKLSNpZiAoUExBVEZP
Uk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzApICYmICFQ
TEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogX3dr
SU9TdXJmYWNlQ29udGV4dENyZWF0ZQogX3drSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlCiAj
ZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA3MAorI2lmICFQTEFURk9STShJT1MpCiBfd2tBVkFzc2V0UmVzb2x2ZWRVUkwK
IF93a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZQogX3drU2V0Q3Jhc2hSZXBv
cnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDMxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtOTYyLDcgKzk2Miw2IEBACiAJCTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3
NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzcyQzAwRDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzc0NDU3MEYwREIw
NUZBNTAwQUUwOTkyIC8qIFNWR0dseXBoTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzQ0NTcwRTBEQjA1RkE1MDBBRTA5OTIgLyogU1ZHR2x5cGhN
YXAuaCAqLzsgfTsKIAkJMzc1Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTEx
OUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLzsgfTsKLQkJMzc1Q0QyM0IxMTlENDRF
QTAwQTJBODU5IC8qIEh5cGhlbmF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0
aW9uTWFjLm1tICovOyB9OwogCQkzNzZEQ0NFMTEzQjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzZEQ0NF
MDEzQjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi87IH07CiAJCTM3NzRBQkE1MEZBMjFF
QjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAv
KiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0bWFw
SW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgKi87IH07CkBA
IC0xNjc2LDcgKzE2NzUsNiBAQAogCQk1REE5N0VDRTE2OEU3ODdCMDAwRTM2NzYgLyogU3lzdGVt
VmVyc2lvbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVEQTk3RUNDMTY4RTc4N0IwMDBFMzY3NiAvKiBTeXN0ZW1WZXJzaW9uTWFjLm1tICovOyB9
OwogCQk1REIxQkM2QTEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REIxQkM2ODEwNzE1QTY0
MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggKi87IH07CiAJCTVEQjFCQzZCMTA3MTVBNjQw
MEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEQjFCQzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBU
cmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLzsgfTsKLQkJNURDODdFRjAxMTcxNkRGMjAwMUMw
RTZEIC8qIEVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURDODdFRUYxMTcxNkRGMjAwMUMwRTZEIC8qIEVtcHR5
UHJvdG9jb2xEZWZpbml0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTVERjdGNUMyMEYwMUY5MkEwMDUyNkI0QiAvKiBDU1NQcm9wZXJ0eU5h
bWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTY1ODBFRjA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5o
ICovOyB9OwogCQk1REZFOEY1NjBEMTY0NzdCMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3OEJB
MEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwICovOyB9OwogCQk1REZFOEY1
NzBEMTY0NzdDMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyog
U2NoZWR1bGVkQWN0aW9uLmggKi87IH07CkBAIC03MjYyLDcgKzcyNjAsNiBAQAogCQkzNzU2OUUw
MDEzQUYxNzJDMDBDREJBOEUgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzU2OUUwMjEzQUYxNzJDMDBDREJBOEUg
LyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEh5cGhlbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3NUNEMjM5MTE5RDQ0RUEwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbk1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEh5cGhlbmF0aW9uTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzZEQ0NFMDEzQjRGOTY2MDAyRUJF
RkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3MkIwOTUxNjUzNTg1
NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRlc3RSZXF1
ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDQ1LDcgKzgwNDIs
NiBAQAogCQk1REE5N0VDQzE2OEU3ODdCMDAwRTM2NzYgLyogU3lzdGVtVmVyc2lvbk1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVZlcnNpb25NYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0
OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VHJhbnNmb3JtU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQjFCQzY5
MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1REM4N0VFRjExNzE2REYyMDAxQzBFNkQgLyog
RW1wdHlQcm90b2NvbERlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RkM3REMyNkNGRTI1NjMyMDBCODVBRTUgLyogSlNFdmVudFRhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2MjZDREUwQzExNDA0MjRDMDAxRTVBNjggLyogU3BhdGlhbE5hdmln
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhdGlhbE5h
dmlnYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MjZDREUwRDExNDA0
MjRDMDAxRTVBNjggLyogU3BhdGlhbE5hdmlnYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3BhdGlhbE5hdmlnYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0NTM4LDcgKzE0NTM0LDYgQEAKIAkJCQlBNzk1NDYzRDBCNUM0QzgwMDA3QjQzOEYg
LyogRHJhZ0RhdGFNYWMubW0gKi8sCiAJCQkJQTdDRkIzRDQwQjdFRDExODAwNzBDMzJEIC8qIERy
YWdJbWFnZU1hYy5tbSAqLywKIAkJCQlFMUJBNjZGMDE3NDJCRDg2MDBDMjAyNTEgLyogRHluYW1p
Y0xpbmtlckludGVycG9zaW5nLmggKi8sCi0JCQkJNURDODdFRUYxMTcxNkRGMjAwMUMwRTZEIC8q
IEVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oICovLAogCQkJCTFDQTE5RTAzMERDMjU1OTUwMDY1
QTk5NCAvKiBFdmVudExvb3BNYWMubW0gKi8sCiAJCQkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERG
IC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8sCiAJCQkJOTM1QzQ3NkMwOUFDNEQ2MzAwQTZBQUI0IC8q
IEZvdW5kYXRpb25FeHRyYXMuaCAqLywKQEAgLTE4NTEzLDcgKzE4NTA4LDYgQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUIyQUZGQzg1MEQwMEE1REYwMDMwMDc0RCAvKiBjaGFyYWN0ZXItc2V0cy50
eHQgKi8sCiAJCQkJQjJDM0Q5RkEwRDAwNkMxRDAwRUY2RjI2IC8qIENoYXJzZXREYXRhLmggKi8s
Ci0JCQkJMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0aW9uTWFjLm1tICovLAog
CQkJCUY1OTczRERFMTVDRkIyMDMwMDI3RjgwNCAvKiBMb2NhbGVNYWMuaCAqLywKIAkJCQlGNTk3
M0RERjE1Q0ZCMjAzMDAyN0Y4MDQgLyogTG9jYWxlTWFjLm1tICovLAogCQkJCUIyQUZGQzg2MEQw
MEE1REYwMDMwMDc0RCAvKiBtYWMtZW5jb2RpbmdzLnR4dCAqLywKQEAgLTIxNjc5LDcgKzIxNjcz
LDYgQEAKIAkJCQlBOENGRjZCRTBBMTU2MTE4MDAwQTQyMzQgLyogRWxsaXBzaXNCb3guaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI1NTk5QTUwRDAwRDhCQTAwQkI4MjVDIC8qIEVtcHR5
Q2xpZW50cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNURDODdFRjAxMTcxNkRGMjAwMUMwRTZEIC8q
IEVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQzIw
QTE5NDVEMDAwQThFRjVGIC8qIEVudGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQzAw
QTE5NDVEMDAwQThFRjVGIC8qIEVudGl0eVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODk4Nzg1NUExMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJpZXNDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTE4OSw3ICsyNTE4Miw2IEBACiAJCQkJMEI4QzU2RDQwRjI4NjI3RjAwMDUwMkUx
IC8qIEhUVFBIZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzIwQ0U5MjNB
MTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MUE2N0NC
MTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTM3NUNEMjNCMTE5RDQ0RUEwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbk1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3RTQwMjhGMTNBNjk2RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTI2RTZCQjBBMkUzQjEyMDA1QzI5RkEgLyogSWNvbkRhdGFi
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjk1Mzk3MTMyOUEzQzgwMEI5MkQwNCAvKiBJ
Y29uRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyNSArNzgs
OSBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvCiAgICAgYm9vbCBj
aG9vc2VQbGFpblRleHQ7CiAgICAgCiAgICAgbV9mcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChOU0dlbmVyYWxQYm9hcmQpOwotI2lmIFBMQVRGT1JNKElPUykg
fHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudCgm
bV9mcmFtZSwgcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9vc2VQbGFpblRleHQpOwogICAgIGlm
IChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRv
ckluc2VydEFjdGlvblBhc3RlZCkpCiAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwg
Y2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCksIGZhbHNlKTsKLSNlbHNl
Ci0gICAgLy8gTWFpbCBpcyBpZ25vcmluZyB0aGUgZnJhbWVudCBwYXNzZWQgdG8gdGhlIGRlbGVn
YXRlIGFuZCBjcmVhdGVzIGEgbmV3IG9uZS4KLSAgICAvLyBXZSB3YW50IHRvIGF2b2lkIGNyZWF0
aW5nIHRoZSBmcmFnbWVudCB0d2ljZS4KLSAgICBpZiAoYXBwbGljYXRpb25Jc0FwcGxlTWFpbCgp
KSB7Ci0gICAgICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudChOVUxMLCByYW5nZSwgRWRpdG9y
SW5zZXJ0QWN0aW9uUGFzdGVkKSkgewotICAgICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudCgmbV9mcmFtZSwgcmFu
Z2UsIGFsbG93UGxhaW5UZXh0LCBjaG9vc2VQbGFpblRleHQpOwotICAgICAgICAgICAgaWYgKGZy
YWdtZW50KQotICAgICAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwgY2FuU21h
cnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCksIGZhbHNlKTsKLSAgICAgICAgfSAg
ICAgICAgCi0gICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+ZnJh
Z21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KCZtX2ZyYW1lLCByYW5nZSwgYWxs
b3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4dCk7Ci0gICAgICAgIGlmIChmcmFnbWVudCAmJiBz
aG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvblBh
c3RlZCkpCi0gICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVw
bGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxzZSk7Ci0gICAgfQotI2VuZGlmCiAg
ICAgbV9mcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJp
bmcoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMyLDE0ICs3MzIsNiBA
QCBzdGF0aWMgYm9vbCBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yCiB9CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCi0j
ZGVmaW5lIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNIDEKLSNlbHNlCi0jZGVm
aW5lIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNIDAKLSNlbmRpZgotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFNVUFBPUlRTX1RPR0dMRV9WSURFT19GVUxM
U0NSRUVOIDEKICNlbHNlCiAjZGVmaW5lIFNVUFBPUlRTX1RPR0dMRV9WSURFT19GVUxMU0NSRUVO
IDAKQEAgLTg5MCwyMiArODgyLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1l
LT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rl
ZFRleHQoKSk7CiAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRp
Y3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlv
bmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5n
KSk7CiAKLSNpZiBJTkNMVURFX1NQT1RMSUdIVF9DT05URVhUX01FTlVfSVRFTQotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKFNlYXJjaFNwb3RsaWdodEl0ZW0sIG1fY29udGV4dE1lbnUu
Z2V0KCkpOwotI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRp
Y3Rpb25hcnlJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgotI2VuZGlmCiAKICNp
ZiAhUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNlYXJjaFdl
Ykl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShNQUMpICYmIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNCi0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oTG9va1VwSW5EaWN0aW9uYXJ5SXRlbSwgbV9j
b250ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFy
YXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0jZW5kaWYKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKENvcHlJdGVtLCBtX2NvbnRleHRNZW51
LmdldCgpKTsKQEAgLTEwMzAsMjIgKzEwMTMsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1l
LT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rl
ZFRleHQoKSk7CiAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5
SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNv
bnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCi0j
aWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVYVF9NRU5VX0lURU0KLSAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oU2VhcmNoU3BvdGxpZ2h0SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0jZWxzZQog
ICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRleHRN
ZW51LmdldCgpKTsKICNlbmRpZgotI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oR1RLKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShTZWFyY2hXZWJJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQo
KSk7CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykgJiYgSU5DTFVERV9TUE9UTElHSFRfQ09O
VEVYVF9NRU5VX0lURU0KLSAgICAgICAgICAgIGFwcGVuZEl0ZW0oTG9va1VwSW5EaWN0aW9uYXJ5
SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBh
cmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwotI2VuZGlmCiAgICAgICAgIH0KIAog
ICAgICAgICBhcHBlbmRJdGVtKEN1dEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9u
IDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw2IEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFN0cmkKICNlbmRpZgogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIHN0
YXRpYyBTdHJpbmcgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oY29uc3QgU3RyaW5n
JiBvcmlnaW5hbCkKIHsKICAgICBpZiAob3JpZ2luYWwuaXNFbXB0eSgpKQpAQCAtODUsNyArODQs
NiBAQCBzdGF0aWMgU3RyaW5nIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lCiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyh0
cmltbWVkLCBtYXhOdW1iZXJPZkdyYXBoZW1lQ2x1c3RlcnNJbkxvb2t1cE1lbnVJdGVtKTsKICAg
ICByZXR1cm4gbnVtYmVyT2ZDaGFyYWN0ZXJzID09IHRyaW1tZWQubGVuZ3RoKCkgPyB0cmltbWVk
IDogdHJpbW1lZC5sZWZ0KG51bWJlck9mQ2hhcmFjdGVycykgKyBlbGxpcHNpczsKIH0KLSNlbmRp
ZgogCiBTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpCiB7CkBAIC0yNDMsNyArMjQxLDcgQEAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZwogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKIHsKLSNpZiBQTEFURk9STShNQUMpICYmIChQTEFURk9S
TShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MCkKKyNpZiBQ
TEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzZWFyY2hQcm92aWRlck5h
bWUgPSBhZG9wdENGKHdrQ29weURlZmF1bHRTZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKCkpOwog
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiU2VhcmNoIHdp
dGggJUAiLCAiU2VhcmNoIHdpdGggc2VhcmNoIHByb3ZpZGVyIGNvbnRleHQgbWVudSBpdGVtIHdp
dGggcHJvdmlkZXIgbmFtZSBpbnNlcnRlZCIpLCBzZWFyY2hQcm92aWRlck5hbWUuZ2V0KCkpOwog
I2Vsc2UKQEAgLTI1MywxNyArMjUxLDEyIEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFy
Y2hXZWIoKQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNv
bnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExB
VEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZWN0ZWRTdHJpbmcpOwotICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQg
bWVudSBpdGVtIik7Ci0jZWxzZQogI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShz
ZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250
ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQo
KSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnDxzZWxlY3Rp
b24+4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiku
cmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShz
ZWxlY3RlZFN0cmluZykpOwogI2VuZGlmCi0jZW5kaWYKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ09wZW5MaW5rKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsMTQgKzQzLDQgQEAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhh
bgogewogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLQotdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6Omluc3RhbGwoKSB7IH0KLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3Rh
bGwoKSB7IH0KLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkKSB7
IH0KLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgp
IHsgfQotdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkgeyB9
Ci0KLSNlbmRpZgotIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvQnVzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0J1c01hYy5tbQkocmV2aXNpb24gMTU0
MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvQnVzTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMSArNDksNyBAQCBQYXNzUmVmUHRyPEF1ZGlvQnVzPiBB
dWRpb0J1czo6bG9hZFBsYXRmCiAgICAgCiAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRs
ZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZUF1ZGlvQnVuZGxlQ2xhc3MgY2xhc3NdXTsKICAgICBO
U1VSTCAqYXVkaW9GaWxlVVJMID0gW2J1bmRsZSBVUkxGb3JSZXNvdXJjZTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6bmFtZV0gd2l0aEV4dGVuc2lvbjpAIndhdiIgc3ViZGlyZWN0b3J5
OkAiYXVkaW8iXTsKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID09IDEwNjAKLSAgICBOU0RhdGFSZWFkaW5nT3B0aW9ucyBvcHRpb25zID0gTlNE
YXRhUmVhZGluZ01hcHBlZDsKLSNlbHNlCiAgICAgTlNEYXRhUmVhZGluZ09wdGlvbnMgb3B0aW9u
cyA9IE5TRGF0YVJlYWRpbmdNYXBwZWRJZlNhZmU7Ci0jZW5kaWYKICAgICBOU0RhdGEgKmF1ZGlv
RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmF1ZGlvRmlsZVVSTCBvcHRpb25z
Om9wdGlvbnMgZXJyb3I6bmlsXTsKIAogICAgIGlmIChhdWRpb0RhdGEpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwNiw3ICsy
MTA2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaQogICAgIGlu
dCBudW1BbmltYXRpb25zID0gaXNNYXRyaXhBbmltYXRpb24gPyAxIDogb3BlcmF0aW9ucy0+c2l6
ZSgpOwogCiAgICAgYm9vbCByZXZlcnNlQW5pbWF0aW9uTGlzdCA9IHRydWU7Ci0jaWYgIVBMQVRG
T1JNKElPUykgJiYgIVBMQVRGT1JNKFdJTikgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDcwCisjaWYgIVBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKFdJTikKICAgICAg
ICAgLy8gT2xkIHZlcnNpb25zIG9mIENvcmUgQW5pbWF0aW9uIGFwcGx5IGFuaW1hdGlvbnMgaW4g
cmV2ZXJzZSBvcmRlciAoPHJkYXI6Ly9wcm9ibGVtLzcwOTU2Mzg+KSBzbyB3ZSBuZWVkIHRvIGZs
aXAgdGhlIGxpc3QuCiAgICAgICAgIC8vIHRvIGJlIG5vbi1hZGRpdGl2ZS4gRm9yIGJpbmFyeSBj
b21wYXRpYmlsaXR5LCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIENvcmUgQW5pbWF0aW9uIHByZXNl
cnZlcyB0aGlzIGJlaGF2aW9yIGZvciBhcHBsaWNhdGlvbnMgbGlua2VkCiAgICAgICAgIC8vIG9u
IG9yIGJlZm9yZSBTbm93IExlb3BhcmQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gMTU0MzEw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
cmludFRyZWUoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAoUExBVEZP
Uk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzApCisjaWYg
UExBVEZPUk0oTUFDKQogICAgIHZvaWQgc3luY2hyb25vdXNseURpc3BsYXlUaWxlc0luUmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
bW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMCwyMCAr
MTAwLDE2IEBAIC0gKHZvaWQpc2V0T3duZXI6KFBsYXRmb3JtQ0FMYXllciopb3duZXIKIAogQGVu
ZAogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKIEBpbnRlcmZhY2UgQ0FUaWxlZExheWVyKEdyYXBoaWNzTGF5ZXJDQVByaXZhdGUp
CiAtICh2b2lkKWRpc3BsYXlJblJlY3Q6KENHUmVjdClyIGxldmVsT2ZEZXRhaWw6KGludClsb2Qg
b3B0aW9uczooTlNEaWN0aW9uYXJ5ICopZGljdDsKIC0gKEJPT0wpY2FuRHJhd0NvbmN1cnJlbnRs
eTsKIC0gKHZvaWQpc2V0Q2FuRHJhd0NvbmN1cnJlbnRseTooQk9PTClmbGFnOwogQGVuZAotI2Vu
ZGlmCiAKIEBpbnRlcmZhY2UgQ0FMYXllcihQcml2YXRlKQogLSAodm9pZClzZXRDb250ZW50c0No
YW5nZWQ7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKIC0gKHZvaWQpc2V0QWNjZWxlcmF0ZXNEcmF3aW5nOihCT09MKWZsYWc7CiAt
IChCT09MKWFjY2VsZXJhdGVzRHJhd2luZzsKLSNlbmRpZgogQGVuZAogCiBzdGF0aWMgTlNTdHJp
bmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7
CkBAIC02MDEsMjIgKzU5NywxNCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TWFza3NUb0Jv
dW5kcyhiCiAKIGJvb2wgUGxhdGZvcm1DQUxheWVyOjphY2NlbGVyYXRlc0RyYXdpbmcoKSBjb25z
dAogewotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCiAgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGFjY2VsZXJhdGVzRHJhd2luZ107
Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wgYWNjZWxlcmF0ZXNEcmF3aW5nKQogewot
I2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDcwCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgW21fbGF5ZXIuZ2V0KCkg
c2V0QWNjZWxlcmF0ZXNEcmF3aW5nOmFjY2VsZXJhdGVzRHJhd2luZ107CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oYWNjZWxlcmF0ZXNEcmF3
aW5nKTsKLSNlbmRpZgogfQogCiBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyOjpjb250ZW50cygp
IGNvbnN0CkBAIC04MDksMjIgKzc5NywxNCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VGlt
ZU9mZnNldChDRlRpCiAKIGZsb2F0IFBsYXRmb3JtQ0FMYXllcjo6Y29udGVudHNTY2FsZSgpIGNv
bnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKICAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgY29udGVudHNTY2FsZV07Ci0j
ZWxzZQotICAgIHJldHVybiAxOwotI2VuZGlmCiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpz
ZXRDb250ZW50c1NjYWxlKGZsb2F0IHZhbHVlKQogewotI2lmIFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNTY2FsZTp2YWx1ZV07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
dmFsdWUpOwotI2VuZGlmCiB9CiAKIFRpbGVkQmFja2luZyogUGxhdGZvcm1DQUxheWVyOjp0aWxl
ZEJhY2tpbmcoKQpAQCAtODM2LDcgKzgxNiw2IEBAIFRpbGVkQmFja2luZyogUGxhdGZvcm1DQUxh
eWVyOjp0aWxlZEJhY2sKICAgICByZXR1cm4gW3RpbGVkQmFja2luZ0xheWVyIHRpbGVkQmFja2lu
Z107CiB9CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA3MAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnN5bmNocm9ub3VzbHlEaXNwbGF5
VGlsZXNJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2xheWVyVHlw
ZSAhPSBMYXllclR5cGVXZWJUaWxlZExheWVyKQpAQCAtODUxLDcgKzgzMCw2IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzeW5jaHJvbm91c2x5RGlzcGwKICAgICBbdGlsZWRMYXllciBzZXRDYW5E
cmF3Q29uY3VycmVudGx5Om9sZENhbkRyYXdDb25jdXJyZW50bHldOwogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKIH0KLSNlbmRpZgogCiBBVlBsYXllckxheWVyKiBQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXllckxheWVyKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW0JKHJldmlz
aW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDkgQEAKIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBAaW50ZXJmYWNlIENBTGF5ZXIgKFdlYkNBTGF5ZXJE
ZXRhaWxzKQogLSAodm9pZClzZXRBY2NlbGVyYXRlc0RyYXdpbmc6KEJPT0wpZmxhZzsKIEBlbmQK
LSNlbmRpZgogCiBAaW50ZXJmYWNlIFdlYlRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIgOiBD
QUxheWVyIHsKICAgICBXZWJDb3JlOjpUaWxlQ29udHJvbGxlciogX3RpbGVDb250cm9sbGVyOwpA
QCAtMjQzLDcgKzI0MSw2IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldFNjYWxlKENHRmxvYXQg
c2MKICAgICBpZiAobV9zY2FsZSA9PSBzY2FsZSAmJiBtX2RldmljZVNjYWxlRmFjdG9yID09IGRl
dmljZVNjYWxlRmFjdG9yKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShJT1MpIHx8
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIFZlY3RvcjxGbG9h
dFJlY3Q+IGRpcnR5UmVjdHM7CiAKICAgICBtX2RldmljZVNjYWxlRmFjdG9yID0gZGV2aWNlU2Nh
bGVGYWN0b3I7CkBAIC0yNjQsMTIgKzI2MSwxMCBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRT
Y2FsZShDR0Zsb2F0IHNjCiAgICAgfQogCiAgICAgcGxhdGZvcm1MYXllci0+b3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRGlkQ3JlYXRlVGlsZXMoZGlydHlSZWN0cyk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBUaWxlQ29udHJvbGxlcjo6c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wgYWNjZWxlcmF0ZXNE
cmF3aW5nKQogewotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwCiAgICAgaWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nID09IGFjY2VsZXJh
dGVzRHJhd2luZykKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNzksOSArMjc0LDYgQEAgdm9pZCBU
aWxlQ29udHJvbGxlcjo6c2V0QWNjZWxlcmF0ZXNEcmF3aQogICAgICAgICBjb25zdCBUaWxlSW5m
byYgdGlsZUluZm8gPSBpdC0+dmFsdWU7CiAgICAgICAgIFt0aWxlSW5mby5sYXllci5nZXQoKSBz
ZXRBY2NlbGVyYXRlc0RyYXdpbmc6bV9hY2NlbGVyYXRlc0RyYXdpbmddOwogICAgIH0KLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGFjY2VsZXJhdGVzRHJhd2luZyk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBUaWxlQ29udHJvbGxlcjo6c2V0VGlsZXNPcGFxdWUoYm9vbCBvcGFxdWUpCkBAIC0xMDIyLDEw
ICsxMDE0LDggQEAgUmV0YWluUHRyPFdlYlRpbGVMYXllcj4gVGlsZUNvbnRyb2xsZXI6OgogICAg
IFtsYXllci5nZXQoKSBzZXROYW1lOkAiVGlsZSJdOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIFtsYXll
ci5nZXQoKSBzZXRDb250ZW50c1NjYWxlOm1fZGV2aWNlU2NhbGVGYWN0b3JdOwogICAgIFtsYXll
ci5nZXQoKSBzZXRBY2NlbGVyYXRlc0RyYXdpbmc6bV9hY2NlbGVyYXRlc0RyYXdpbmddOwotI2Vu
ZGlmCiAKICAgICBbbGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxOCArNjIs
NiBAQCBJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJCiAKICNpZiBVU0Uo
QUNDRUxFUkFURSkKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDcw
Ci1zdGF0aWMgYm9vbCBoYXZlVkltYWdlUm91bmRpbmdFcnJvckZpeCgpIHsgcmV0dXJuIHRydWU7
IH0KLSNlbHNlCi0vLyBUaGUgdkltYWdlIHVucHJlbXVsdGlwbHkgcm91dGluZSBoYWQgYSByb3Vu
ZGluZyBidWcgYmVmb3JlIDEwLjYuNyA8cmRhcjovL3Byb2JsZW0vODYzMTU0OD4KLXN0YXRpYyBi
b29sIGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KCkKLXsKLSAgICBTSW50MzIgdmVyc2lvbjsK
LSAgICBzdGF0aWMgYm9vbCByZXN1bHQgPSAoR2VzdGFsdChnZXN0YWx0U3lzdGVtVmVyc2lvbiwg
JnZlcnNpb24pID09IG5vRXJyICYmIHZlcnNpb24gPiAweDEwNjYpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0jZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwNzAK
LQogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBzdGF0aWMgdm9pZCBj
b252ZXJ0U2NhbmxpbmUodm9pZCogZGF0YSwgc2l6ZV90IHRpbGVOdW1iZXIsIGJvb2wgcHJlbXVs
dGlwbHkpCiB7CkBAIC0xNzYsNyArMTY0LDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gSW1hZ2VCdWZmZQogICAgICAgICBzcmNSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4obV9kYXRhKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0
OwogICAgICAgICAKICNpZiBVU0UoQUNDRUxFUkFURSkKLSAgICAgICAgaWYgKHVubXVsdGlwbGll
ZCAmJiBoYXZlVkltYWdlUm91bmRpbmdFcnJvckZpeCgpKSB7CisgICAgICAgIGlmICh1bm11bHRp
cGxpZWQpIHsKICAgICAgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwogICAgICAgICAgICAgc3Jj
LmhlaWdodCA9IGhlaWdodC51bnNhZmVHZXQoKTsKICAgICAgICAgICAgIHNyYy53aWR0aCA9IHdp
ZHRoLnVuc2FmZUdldCgpOwpAQCAtMzk5LDcgKzM4Nyw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRh
OjpwdXREYXRhKFVpbnQ4Q2xhbXAKICAgICAgICAgZGVzdFJvd3MgPSByZWludGVycHJldF9jYXN0
PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEpICsgKGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsgZGVz
dHggKiA0KS51bnNhZmVHZXQoKTsKICAgICAgICAgCiAjaWYgIFVTRShBQ0NFTEVSQVRFKQotICAg
ICAgICBpZiAoaGF2ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKSAmJiB1bm11bHRpcGxpZWQpIHsK
KyAgICAgICAgaWYgKHVubXVsdGlwbGllZCkgewogICAgICAgICAgICAgdkltYWdlX0J1ZmZlciBz
cmM7CiAgICAgICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0LnVuc2FmZUdldCgpOwogICAgICAg
ICAgICAgc3JjLndpZHRoID0gd2lkdGgudW5zYWZlR2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgJ
KHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzApKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgVVNF
KENBKQogI2RlZmluZSBXVEZfVVNFX0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAxCiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENH
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXRoQ0cuY3BwCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1LDYgQEAg
dm9pZCBQYXRoOjphZGRBcmNUbyhjb25zdCBGbG9hdFBvaW50JiBwMQogCiB2b2lkIFBhdGg6OnBs
YXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90
dG9tUmlnaHRSYWRpdXMpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBib29sIGVxdWFsV2lkdGhzID0gKHRvcExlZnRS
YWRpdXMud2lkdGgoKSA9PSB0b3BSaWdodFJhZGl1cy53aWR0aCgpICYmIHRvcFJpZ2h0UmFkaXVz
LndpZHRoKCkgPT0gYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpICYmIGJvdHRvbUxlZnRSYWRpdXMu
d2lkdGgoKSA9PSBib3R0b21SaWdodFJhZGl1cy53aWR0aCgpKTsKICAgICBib29sIGVxdWFsSGVp
Z2h0cyA9ICh0b3BMZWZ0UmFkaXVzLmhlaWdodCgpID09IGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0
KCkgJiYgYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSA9PSB0b3BSaWdodFJhZGl1cy5oZWlnaHQo
KSAmJiB0b3BSaWdodFJhZGl1cy5oZWlnaHQoKSA9PSBib3R0b21SaWdodFJhZGl1cy5oZWlnaHQo
KSk7CiAKQEAgLTI2Myw3ICsyNjIsNiBAQCB2b2lkIFBhdGg6OnBsYXRmb3JtQWRkUGF0aEZvclJv
dW5kZWRSZWN0CiAgICAgICAgIHdrQ0dQYXRoQWRkUm91bmRlZFJlY3QoZW5zdXJlUGxhdGZvcm1Q
YXRoKCksIDAsIHJlY3QsIHRvcExlZnRSYWRpdXMud2lkdGgoKSwgdG9wTGVmdFJhZGl1cy5oZWln
aHQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAogICAgIGFkZEJlemllcnNG
b3JSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9t
TGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw4ICs1Niw2IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoTlNG
b24KIAogICAgIENHRm9udFJlZiBjZ0ZvbnQgPSAwOwogICAgIGxvYWRGb250KG5zRm9udCwgc2l6
ZSwgbV9mb250LCBjZ0ZvbnQpOwotICAgIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgewogICAgICAgICBDVEZvbnRTeW1i
b2xpY1RyYWl0cyB0cmFpdHMgPSBDVEZvbnRHZXRTeW1ib2xpY1RyYWl0cyh0b0NURm9udFJlZiht
X2ZvbnQpKTsKICAgICAgICAgbV9pc0NvbG9yQml0bWFwRm9udCA9IHRyYWl0cyAmIGtDVEZvbnRD
b2xvckdseXBoc1RyYWl0OwpAQCAtNjUsNyArNjMsNiBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKE5TRm9uCiAgICAgICAgIG1faXNDb21wb3NpdGVGb250UmVmZXJlbmNlID0g
dHJhaXRzICYga0NURm9udENvbXBvc2l0ZVRyYWl0OwogI2VuZGlmCiAgICAgfQotI2VuZGlmCiAK
ICAgICBpZiAobV9mb250KQogICAgICAgICBDRlJldGFpbihtX2ZvbnQpOwpAQCAtMTI3LDcgKzEy
NCw2IEBAIHZvaWQgRm9udFBsYXRmb3JtRGF0YTo6c2V0Rm9udChOU0ZvbnQgKmYKICAgICBsb2Fk
Rm9udChtX2ZvbnQsIG1fc2l6ZSwgbG9hZGVkRm9udCwgY2dGb250KTsKIAogICAgIG1fY2dGb250
ID0gYWRvcHRDRihjZ0ZvbnQpOwotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgewogICAgICAgICBDVEZvbnRTeW1ib2xpY1Ry
YWl0cyB0cmFpdHMgPSBDVEZvbnRHZXRTeW1ib2xpY1RyYWl0cyh0b0NURm9udFJlZihtX2ZvbnQp
KTsKICAgICAgICAgbV9pc0NvbG9yQml0bWFwRm9udCA9IHRyYWl0cyAmIGtDVEZvbnRDb2xvckds
eXBoc1RyYWl0OwpAQCAtMTM1LDcgKzEzMSw2IEBAIHZvaWQgRm9udFBsYXRmb3JtRGF0YTo6c2V0
Rm9udChOU0ZvbnQgKmYKICAgICAgICAgbV9pc0NvbXBvc2l0ZUZvbnRSZWZlcmVuY2UgPSB0cmFp
dHMgJiBrQ1RGb250Q29tcG9zaXRlVHJhaXQ7CiAjZW5kaWYKICAgICB9Ci0jZW5kaWYKICAgICBt
X0NURm9udCA9IDA7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250TWFjLm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMs
MTggKzUzLDYgQEAgYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5DbwogICAg
IHJldHVybiB0cnVlOwogfQogCi0vLyBDVEZvbnRHZXRWZXJ0aWNhbFRyYW5zbGF0aW9uc0Zvckds
eXBocyBpcyBkaWZmZXJlbnQgb24gU25vdyBMZW9wYXJkLiAgSXQgcmV0dXJucyB2YWx1ZXMgZm9y
IGEgZm9udC1zaXplIG9mIDEKLS8vIHdpdGhvdXQgdW5pdHNQZXJFbSBhcHBsaWVkLiAgV2UgaGF2
ZSB0byBhcHBseSBhIHRyYW5zZm9ybSB0aGF0IHNjYWxlcyB1cCB0byB0aGUgcG9pbnQgc2l6ZSBh
bmQgdGhhdCBhbHNvIAotLy8gZGl2aWRlcyBieSB1bml0c1BlckVtLgotc3RhdGljIGJvb2wgaGFz
QnJva2VuQ1RGb250R2V0VmVydGljYWxUcmFuc2xhdGlvbnNGb3JHbHlwaHMoKQotewotI2lmICFQ
TEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAot
ICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQog
c3RhdGljIHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBDR0dseXBoKiBnbHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkK
IHsKICAgICBpZiAoIWNvdW50KQpAQCAtOTEsMTUgKzc5LDYgQEAgc3RhdGljIHZvaWQgc2hvd0ds
eXBoc1dpdGhBZHZhbmNlcyhjb25zdAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBydW5NYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChzYXZlZE1hdHJpeCwgcm90YXRlTGVmdFRyYW5z
Zm9ybSk7CiAgICAgICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgcnVuTWF0cml4
KTsKIAotICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2xhdGlvbnNUcmFuc2Zvcm07Ci0g
ICAgICAgIGlmIChoYXNCcm9rZW5DVEZvbnRHZXRWZXJ0aWNhbFRyYW5zbGF0aW9uc0ZvckdseXBo
cygpKSB7Ci0gICAgICAgICAgICB0cmFuc2xhdGlvbnNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybU1ha2UocGxhdGZvcm1EYXRhLm1fc2l6ZSwgMCwgMCwgcGxhdGZvcm1EYXRhLm1fc2l6ZSwg
MCwgMCk7Ci0gICAgICAgICAgICB0cmFuc2xhdGlvbnNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybUNvbmNhdCh0cmFuc2xhdGlvbnNUcmFuc2Zvcm0sIHJvdGF0ZUxlZnRUcmFuc2Zvcm0pOwot
ICAgICAgICAgICAgQ0dGbG9hdCB1bml0c1BlckVtID0gQ0dGb250R2V0VW5pdHNQZXJFbShwbGF0
Zm9ybURhdGEuY2dGb250KCkpOwotICAgICAgICAgICAgdHJhbnNsYXRpb25zVHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQodHJhbnNsYXRpb25zVHJhbnNmb3JtLCBDR0FmZmluZVRy
YW5zZm9ybU1ha2VTY2FsZSgxIC8gdW5pdHNQZXJFbSwgMSAvIHVuaXRzUGVyRW0pKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICB0cmFuc2xhdGlvbnNUcmFuc2Zvcm0gPSByb3RhdGVMZWZ0
VHJhbnNmb3JtOwotCiAgICAgICAgIFZlY3RvcjxDR1NpemUsIDI1Nj4gdHJhbnNsYXRpb25zKGNv
dW50KTsKICAgICAgICAgQ1RGb250R2V0VmVydGljYWxUcmFuc2xhdGlvbnNGb3JHbHlwaHMocGxh
dGZvcm1EYXRhLmN0Rm9udCgpLCBnbHlwaHMsIHRyYW5zbGF0aW9ucy5kYXRhKCksIGNvdW50KTsK
IApAQCAtMTA3LDE3ICs4NiwxNSBAQCBzdGF0aWMgdm9pZCBzaG93R2x5cGhzV2l0aEFkdmFuY2Vz
KGNvbnN0CiAKICAgICAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IEZsb2F0UG9pbnQocG9pbnQueCgp
LCBwb2ludC55KCkgKyBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KElkZW9ncmFwaGlj
QmFzZWxpbmUpIC0gZm9udC0+Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBDR1NpemUg
dHJhbnNsYXRpb24gPSBDR1NpemVBcHBseUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0s
IHRyYW5zbGF0aW9uc1RyYW5zZm9ybSk7CisgICAgICAgICAgICBDR1NpemUgdHJhbnNsYXRpb24g
PSBDR1NpemVBcHBseUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0sIHJvdGF0ZUxlZnRU
cmFuc2Zvcm0pOwogICAgICAgICAgICAgcG9zaXRpb25zW2ldID0gQ0dQb2ludEFwcGx5QWZmaW5l
VHJhbnNmb3JtKENHUG9pbnRNYWtlKHBvc2l0aW9uLnggLSB0cmFuc2xhdGlvbi53aWR0aCwgcG9z
aXRpb24ueSArIHRyYW5zbGF0aW9uLmhlaWdodCksIHRyYW5zZm9ybSk7CiAgICAgICAgICAgICBw
b3NpdGlvbi54ICs9IGFkdmFuY2VzW2ldLndpZHRoOwogICAgICAgICAgICAgcG9zaXRpb24ueSAr
PSBhZHZhbmNlc1tpXS5oZWlnaHQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwbGF0Zm9ybURh
dGEuaXNDb2xvckJpdG1hcEZvbnQoKSkKICAgICAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNB
dFBvc2l0aW9ucyhjb250ZXh0LCBnbHlwaHMsIHBvc2l0aW9ucy5kYXRhKCksIGNvdW50KTsKLSNp
ZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBDVEZvbnREcmF3R2x5cGhzKHBsYXRmb3JtRGF0
YS5jdEZvbnQoKSwgZ2x5cGhzLCBwb3NpdGlvbnMuZGF0YSgpLCBjb3VudCwgY29udGV4dCk7Ci0j
ZW5kaWYKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBzYXZlZE1hdHJp
eCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1h
cEZvbnQoKSkKQEAgLTEyNSwxMCArMTAyLDggQEAgc3RhdGljIHZvaWQgc2hvd0dseXBoc1dpdGhB
ZHZhbmNlcyhjb25zdAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVj
YXRlZC1kZWNsYXJhdGlvbnMiCiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFk
dmFuY2VzKGNvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50KTsKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBDVEZvbnREcmF3
R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5cGhzLCBwb3NpdGlvbnMuZGF0YSgpLCBj
b3VudCwgY29udGV4dCk7Ci0jZW5kaWYKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1h
Yy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEz
MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW4KICAgICAgICAg
ICAgIHBhdHRlcm5Db2xvciA9IGdyYW1tYXJQYXR0ZXJuQ29sb3I7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotI2lmIFBMQVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwKQorI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAgICAgLy8gVG8gc3VwcG9ydCBjb3JyZWN0aW9uIHBhbmVsLgogICAgICAgICBjYXNlIERv
Y3VtZW50TWFya2VyQXV0b2NvcnJlY3Rpb25SZXBsYWNlbWVudExpbmVTdHlsZToKICAgICAgICAg
Y2FzZSBEb2N1bWVudE1hcmtlckRpY3RhdGlvbkFsdGVybmF0aXZlc0xpbmVTdHlsZToKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzkzLDEyICszOTMsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpjcmVhdGVRVE1vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxlY3RvcjpAc2VsZWN0b3IoZGlkRW5kOikgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpRVE1vdmllRGlkRW5kTm90aWZp
Y2F0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
YmplY3Q6bV9xdE1vdmllLmdldCgpXTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID09IDEwNjAKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpAc2VsZWN0b3IobGF5ZXJIb3N0Q2hhbmdlZDop
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpA
IldlYktpdExheWVySG9zdENoYW5nZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdDpuaWxdOwotI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIG1h
aW5UaHJlYWRTZXROZWVkc0Rpc3BsYXkoaWQgc2VsZiwgU0VMKQpAQCAtMTIyOCwzOCArMTIyMiw5
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmRpZEVuZCgpCiB9CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA9PSAxMDYwCi1zdGF0aWMgYm9vbCBsYXllcklzRGVzY2VuZGVudE9mKFBsYXRmb3JtTGF5
ZXIqIGNoaWxkLCBQbGF0Zm9ybUxheWVyKiBkZXNjZW5kZW50KQotewotICAgIGlmICghY2hpbGQg
fHwgIWRlc2NlbmRlbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRvIHsKLSAgICAg
ICAgaWYgKGNoaWxkID09IGRlc2NlbmRlbnQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9IHdoaWxlKChjaGlsZCA9IFtjaGlsZCBzdXBlcmxheWVyXSkpOwotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotI2VuZGlmCi0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxheWVySG9z
dENoYW5nZWQoUGxhdGZvcm1MYXllciogcm9vdExheWVyKQogewotI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAotICAgIGlmICghcm9vdExheWVyKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobGF5ZXJJc0Rlc2NlbmRlbnRPZihtX3F0VmlkZW9MYXllci5nZXQo
KSwgcm9vdExheWVyKSkgewotICAgICAgICAvLyBXZSBvd24gYSBjaGlsZCBsYXllciBvZiBhIGxh
eWVyIHdoaWNoIGhhcyBzd2l0Y2hlZCBjb250ZXh0cy4gIAotICAgICAgICAvLyBUZWFyIGRvd24g
b3VyIGxheWVyLCBhbmQgc2V0IG1fdmlzaWJsZSB0byBmYWxzZSwgc28gdGhhdCB0aGUgCi0gICAg
ICAgIC8vIG5leHQgdGltZSBzZXRWaXNpYmxlKHRydWUpIGlzIGNhbGxlZCwgdGhlIGxheWVyIHdp
bGwgYmUgcmUtCi0gICAgICAgIC8vIGNyZWF0ZWQgaW4gdGhlIGNvcnJlY3QgY29udGV4dC4KLSAg
ICAgICAgdGVhckRvd25WaWRlb1JlbmRlcmluZygpOwotICAgICAgICBtX3Zpc2libGUgPSBmYWxz
ZTsKLSAgICB9Ci0jZWxzZQogICAgIFVOVVNFRF9QQVJBTShyb290TGF5ZXIpOwotI2VuZGlmCiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dl
YkxheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4
Nyw2IEBAIHZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnQKICNlbmRpZgog
ICAgIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVjdChmb2N1c1JpbmdDbGlwUmVjdCk7CiAK
LSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA3MAogICAgIGNvbnN0IGZsb2F0IHdhc3RlZFNwYWNlVGhyZXNob2xkID0gMC43NWY7CiAgICAg
Y29uc3QgdW5zaWduZWQgbWF4UmVjdHNUb1BhaW50ID0gNTsKIApAQCAtMTE5LDExICsxMTgsNiBA
QCB2b2lkIGRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250CiAgICAgICAgIGxheWVy
Q29udGVudHMtPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBl
bmNsb3NpbmdJbnRSZWN0KGNsaXBCb3VuZHMpKTsKICAgICB9CiAKLSNlbHNlCi0gICAgSW50UmVj
dCBjbGlwKGVuY2xvc2luZ0ludFJlY3QoY2xpcEJvdW5kcykpOwotICAgIGxheWVyQ29udGVudHMt
PnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjbGlwKTsKLSNl
bmRpZgotCiAgICAgVGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBSZWN0KEZsb2F0UmVjdCgpKTsK
IAogICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHJldmlzaW9uIDE1NDMxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTg0LDEzICs4NCw3IEBAIHZvaWQgQ3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcigp
IGNvbnMKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6SGFuZDoKLSNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1
cnNvciA9IFtOU0N1cnNvciBwb2ludGluZ0hhbmRDdXJzb3JdOwotI2Vsc2UKLSAgICAgICAgLy8g
VGhlIHBvaW50aW5nSGFuZEN1cnNvciBmcm9tIE5TQ3Vyc29yIGRvZXMgbm90IGhhdmUgYSBzaGFk
b3cgb24KLSAgICAgICAgLy8gb2xkZXIgdmVyc2lvbnMgb2YgT1MgWCwgc28gdXNlIG91ciBvd24g
Y3VzdG9tIGN1cnNvci4KLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vy
c29yKCJsaW5rQ3Vyc29yIiwgNiwgMSk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIEN1cnNvcjo6SUJlYW06CkBAIC05OCwxMzMgKzkyLDc1IEBAIHZvaWQgQ3Vyc29yOjplbnN1
cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnMKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNv
cjo6V2FpdDoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAg
ICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJCdXN5QnV0Q2xpY2thYmxlIik7Ci0j
ZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoIndhaXRD
dXJzb3IiLCA3LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29y
OjpIZWxwOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAg
ICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIkhlbHAiKTsKICAgICAgICAgaWYgKG1f
cGxhdGZvcm1DdXJzb3IpCiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImhlbHBDdXJzb3IiLCA4LCA4KTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6TW92ZToKICAgICBjYXNlIEN1cnNvcjo6
TWlkZGxlUGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJNb3ZlIik7Ci0jZWxzZQot
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoIm1vdmVDdXJzb3Ii
LCA3LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpFYXN0
UmVzaXplOgogICAgIGNhc2UgQ3Vyc29yOjpFYXN0UGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdr
Q3Vyc29yKCJSZXNpemVFYXN0Iik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
Y3JlYXRlTmFtZWRDdXJzb3IoImVhc3RSZXNpemVDdXJzb3IiLCAxNCwgNyk7Ci0jZW5kaWYKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhSZXNpemU6CiAgICAgY2FzZSBD
dXJzb3I6Ok5vcnRoUGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJSZXNpemVOb3J0
aCIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29y
KCJub3J0aFJlc2l6ZUN1cnNvciIsIDcsIDEpOwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBDdXJzb3I6Ok5vcnRoRWFzdFJlc2l6ZToKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhF
YXN0UGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
ICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJSZXNpemVOb3J0aGVhc3QiKTsK
LSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigibm9y
dGhFYXN0UmVzaXplQ3Vyc29yIiwgMTQsIDEpOwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBDdXJzb3I6Ok5vcnRoV2VzdFJlc2l6ZToKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhX
ZXN0UGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
ICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJSZXNpemVOb3J0aHdlc3QiKTsK
LSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigibm9y
dGhXZXN0UmVzaXplQ3Vyc29yIiwgMCwgMCk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIEN1cnNvcjo6U291dGhSZXNpemU6CiAgICAgY2FzZSBDdXJzb3I6OlNvdXRoUGFubmlu
ZzoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAgICAg
bV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJSZXNpemVTb3V0aCIpOwotI2Vsc2UKLSAgICAg
ICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJzb3V0aFJlc2l6ZUN1cnNv
ciIsIDcsIDE0KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpT
b3V0aEVhc3RSZXNpemU6CiAgICAgY2FzZSBDdXJzb3I6OlNvdXRoRWFzdFBhbm5pbmc6Ci0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIG1fcGxhdGZv
cm1DdXJzb3IgPSB3a0N1cnNvcigiUmVzaXplU291dGhlYXN0Iik7Ci0jZWxzZQotICAgICAgICBt
X3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoInNvdXRoRWFzdFJlc2l6ZUN1cnNv
ciIsIDE0LCAxNCk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6
U291dGhXZXN0UmVzaXplOgogICAgIGNhc2UgQ3Vyc29yOjpTb3V0aFdlc3RQYW5uaW5nOgotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6ZVNvdXRod2VzdCIpOwotI2Vsc2UKLSAgICAgICAg
bV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJzb3V0aFdlc3RSZXNpemVDdXJz
b3IiLCAxLCAxNCk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6
V2VzdFJlc2l6ZToKICAgICBjYXNlIEN1cnNvcjo6V2VzdFBhbm5pbmc6Ci0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSB3a0N1cnNvcigiUmVzaXplV2VzdCIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNv
ciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJ3ZXN0UmVzaXplQ3Vyc29yIiwgMSwgNyk7Ci0jZW5kaWYK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhTb3V0aFJlc2l6ZToKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0
Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJSZXNpemVOb3J0aFNvdXRoIik7Ci0jZWxzZQotICAgICAg
ICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoIm5vcnRoU291dGhSZXNpemVD
dXJzb3IiLCA3LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29y
OjpFYXN0V2VzdFJlc2l6ZToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJSZXNpemVFYXN0V2Vz
dCIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29y
KCJlYXN0V2VzdFJlc2l6ZUN1cnNvciIsIDcsIDcpOwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBDdXJzb3I6Ok5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZToKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNv
ciA9IHdrQ3Vyc29yKCJSZXNpemVOb3J0aGVhc3RTb3V0aHdlc3QiKTsKLSNlbHNlCi0gICAgICAg
IG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigibm9ydGhFYXN0U291dGhXZXN0
UmVzaXplQ3Vyc29yIiwgNywgNyk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEN1cnNvcjo6Tm9ydGhXZXN0U291dGhFYXN0UmVzaXplOgotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJz
b3IoIlJlc2l6ZU5vcnRod2VzdFNvdXRoZWFzdCIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJz
b3IiLCA3LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpD
b2x1bW5SZXNpemU6CkBAIC0yMzYsMTkgKzE3MiwxMyBAQCB2b2lkIEN1cnNvcjo6ZW5zdXJlUGxh
dGZvcm1DdXJzb3IoKSBjb25zCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OlZl
cnRpY2FsVGV4dDoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
ICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IFtOU0N1cnNvciBJQmVhbUN1cnNvckZvclZlcnRp
Y2FsTGF5b3V0XTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1l
ZEN1cnNvcigidmVydGljYWxUZXh0Q3Vyc29yIiwgNywgNyk7Ci0jZW5kaWYKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Q2VsbDoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJD
ZWxsIik7CiAgICAgICAgIGlmIChtX3BsYXRmb3JtQ3Vyc29yKQogICAgICAgICAgICAgYnJlYWs7
Ci0jZW5kaWYKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJj
ZWxsQ3Vyc29yIiwgNywgNyk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0yNTcsMTkgKzE4NywxMSBA
QCB2b2lkIEN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3IoKSBjb25zCiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBDdXJzb3I6OkFsaWFzOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIk1h
a2VBbGlhcyIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVk
Q3Vyc29yKCJhbGlhc0N1cnNvciIsIDExLCAzKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgQ3Vyc29yOjpQcm9ncmVzczoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJCdXN5
QnV0Q2xpY2thYmxlIik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRl
TmFtZWRDdXJzb3IoInByb2dyZXNzQ3Vyc29yIiwgMywgMik7Ci0jZW5kaWYKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Tm9Ecm9wOgpAQCAtMjg5LDIwICsyMTEsMTYgQEAgdm9p
ZCBDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29ucwogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgQ3Vyc29yOjpab29tSW46Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDcwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSB3a0N1cnNvcigiWm9vbUlu
Iik7CiAgICAgICAgIGlmIChtX3BsYXRmb3JtQ3Vyc29yKQogICAgICAgICAgICAgYnJlYWs7Ci0j
ZW5kaWYKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJ6b29t
SW5DdXJzb3IiLCA3LCA3KTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Wm9v
bU91dDoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAg
ICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJab29tT3V0Iik7CiAgICAgICAgIGlmICht
X3BsYXRmb3JtQ3Vyc29yKQogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICAgICAgbV9w
bGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJ6b29tT3V0Q3Vyc29yIiwgNywgNyk7
CiAgICAgICAgIGJyZWFrOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRW1w
dHlQcm90b2NvbERlZmluaXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0VtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oCShyZXZpc2lvbiAxNTQzMTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBkZWZpbmVkKF9fT0JKQ19fKQotCi0jZGVm
aW5lIEVNUFRZX1BST1RPQ09MKE5BTUUpIFwKLUBwcm90b2NvbCBOQU1FIDxOU09iamVjdD4gXAot
QGVuZAotCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID09IDEwNjAKLQotRU1Q
VFlfUFJPVE9DT0woTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUpCi1FTVBUWV9QUk9UT0NPTChOU1VS
TERvd25sb2FkRGVsZWdhdGUpCi0KLSNlbmRpZgotCi0jdW5kZWYgRU1QVFlfUFJPVE9DT0wKLQot
I2VuZGlmIC8qIGRlZmluZWQoX19PQkpDX18pICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0JKHJldmlz
aW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbXBvcnQg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb25hbC5oPgogCi0jaWYgIVBM
QVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCisj
aWYgIVBMQVRGT1JNKElPUykKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNp
bXBvcnQgPG5vdGlmeS5oPgogI2VuZGlmCkBAIC00OCw4ICs0OCw2IEBAIHVzaW5nIHN0ZDo6bWF4
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotCiAjaWYgIVBMQVRGT1JNKElPUykKIHN0
YXRpYyBkaXNwYXRjaF9zb3VyY2VfdCBfY2FjaGVfZXZlbnRfc291cmNlID0gMDsKIHN0YXRpYyBk
aXNwYXRjaF9zb3VyY2VfdCBfdGltZXJfZXZlbnRfc291cmNlID0gMDsKQEAgLTE3Nyw2ICsxNzUs
NSBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yCiAjZW5kaWYKICAg
ICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwogfQotI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Nj
cm9sbGVySW1wRGV0YWlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksMjYgKzI5LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogLy8gUHVibGljIEFQ
SXMgbm90IGF2YWlsYWJsZSBvbiB2ZXJzaW9ucyBvZiBNYWMgb24gd2hpY2ggd2UgYnVpbGQKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPT0gMTA2MAotZW51bSB7Ci0gICAgTlNT
Y3JvbGxlclN0eWxlTGVnYWN5ICAgICAgID0gMCwKLSAgICBOU1Njcm9sbGVyU3R5bGVPdmVybGF5
ICAgICAgPSAxCi19OwotdHlwZWRlZiBOU0ludGVnZXIgTlNTY3JvbGxlclN0eWxlOwotCi1lbnVt
IHsKLSAgICBOU1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdCA9IDAsCi0gICAgTlNTY3JvbGxlcktu
b2JTdHlsZURhcmsgPSAxLAotICAgIE5TU2Nyb2xsZXJLbm9iU3R5bGVMaWdodCA9IDIKLX07Ci10
eXBlZGVmIE5TSW50ZWdlciBOU1Njcm9sbGVyS25vYlN0eWxlOwotI2VuZGlmCi0KLSNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPT0gMTA2MAotQGludGVyZmFjZSBOU1Njcm9sbGVy
KE5TT2JqZWN0KQotKyAoTlNTY3JvbGxlclN0eWxlKXByZWZlcnJlZFNjcm9sbGVyU3R5bGU7Ci1A
ZW5kCi0jZW5kaWYKIAogQGludGVyZmFjZSBOU09iamVjdCAoU2Nyb2xsYmFyUGFpbnRlcikKICsg
KGlkKXNjcm9sbGVySW1wV2l0aFN0eWxlOihOU1Njcm9sbGVyU3R5bGUpbmV3U2Nyb2xsZXJTdHls
ZSBjb250cm9sU2l6ZTooTlNDb250cm9sU2l6ZSluZXdDb250cm9sU2l6ZSBob3Jpem9udGFsOihC
T09MKWhvcml6b250YWwgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6KGlkKXByZXZpb3VzOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFj
dG9yeU1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyAr
MTU3LDYgQEAgc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUAogewogICAg
IHVpbnQzMl90IHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOwogCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaWYgKFtldmVudCBtb21l
bnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQogICAgICAgICBwaGFzZSB8PSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwogICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBO
U0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQpAQCAtMTY4LDI5ICsxNjcsMTIgQEAgc3RhdGljIFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUAogICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZUVuZGVkOwogICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2
ZW50UGhhc2VDYW5jZWxsZWQpCiAgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlQ2FuY2VsbGVkOwotI2Vsc2UKLSAgICBzd2l0Y2ggKHdrR2V0TlNFdmVudE1vbWVudHVtUGhh
c2UoZXZlbnQpKSB7Ci0gICAgY2FzZSB3a0V2ZW50UGhhc2VOb25lOgotICAgICAgICBwaGFzZSA9
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSB3
a0V2ZW50UGhhc2VCZWdhbjoKLSAgICAgICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZUJlZ2FuOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZUNoYW5nZWQ6Ci0g
ICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZUVuZGVkOgotICAgICAgICBwaGFzZSA9IFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSNlbmRpZgog
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFzZSk7
CiB9CiAKIHN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZUZvckV2ZW50KE5TRXZl
bnQgKmV2ZW50KQogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgIHVpbnQzMl90IHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOyAKICAg
ICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQogICAgICAgICBwaGFzZSB8
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwpAQCAtMjA4LDEwICsxOTAsNiBAQCBzdGF0
aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2VGb3JFCiAjZW5kaWYKIAogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2UpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIHJldHVybiBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZU5vbmU7Ci0jZW5kaWYKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHJl
dmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdG9yTWFjLmgiCiAKICNpbmNsdWRlICJCbG9ja0V4Y2VwdGlvbnMuaCIKLSNpbmNs
dWRlICJFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CiAjaW5jbHVkZSAiTlNTY3JvbGxlckltcERldGFpbHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUdl
c3R1cmVFdmVudC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NoYXJlZFRp
bWVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFy
ZWRUaW1lck1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NoYXJlZFRpbWVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksNiBA
QCBzdGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVkVGltZXI7CiBzdGF0aWMgdm9pZCAoKnNo
YXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5M
b29wVGltZXJSZWYsIHZvaWQqKTsKIAotI2lmICFkZWZpbmVkKElPS0lUX1dJVEhPVVRfTElCRElT
UEFUQ0gpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dF
RCA9PSAxMDYwCi1leHRlcm4gIkMiIHZvaWQgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hR
dWV1ZShJT05vdGlmaWNhdGlvblBvcnRSZWYgbm90aWZ5LCBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVl
KTsKLSNlbmRpZgotCiBjbGFzcyBQb3dlck9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShQb3dlck9ic2VydmVyKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNpb24gMTU0MzEw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB0eXBlZGVmIFVJbnQzMiBGTUZvbnQ7
CiB0eXBlZGVmIEZNRm9udCBBVFNVRm9udElEOwogdHlwZWRlZiBVSW50MTYgQVRTR2x5cGhSZWY7
CiAKLSNpZiBQTEFURk9STShNQUMpICYmIFVTRShDQSkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwCisjaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoQ0EpCiB0eXBlZGVm
IHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOwogI2VuZGlmCiAKQEAgLTExMSw5ICsx
MTEsNyBAQCBleHRlcm4gIkMiIHsKIC8vIEluIGFscGhhYmV0aWNhbCBvcmRlci4KIAogZXh0ZXJu
IHZvaWQgKCp3a0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24pKE5TQnV0dG9uQ2Vs
bCAqKTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIGV4dGVy
biB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxh
eWVyICosIENHQ29udGV4dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkpOwotI2VuZGlm
CiAKIGV4dGVybiBCT09MICgqd2tDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250cykoQ0dDb250
ZXh0UmVmKTsKIHR5cGVkZWYgZW51bSB7CkBAIC0yMjIsMjAgKzIyMCw3IEBAIGV4dGVybiBib29s
ICgqd2tHZXRWZXJ0aWNhbEdseXBoc0ZvckNoYXIKIAogZXh0ZXJuIEJPT0wgKCp3a1VzZVNoYXJl
ZE1lZGlhVUkpKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzAKIGV4dGVybiB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleDsKLSNl
bHNlCi1leHRlcm4gQ0ZJbmRleCAoKndrR2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4
KShDRlN0cmluZ1JlZiBzdHJpbmcsIENGSW5kZXggaW5kZXgpOwotCi10eXBlZGVmIGVudW0gewot
ICAgIHdrRXZlbnRQaGFzZU5vbmUgPSAwLAotICAgIHdrRXZlbnRQaGFzZUJlZ2FuID0gMSwKLSAg
ICB3a0V2ZW50UGhhc2VDaGFuZ2VkID0gMiwKLSAgICB3a0V2ZW50UGhhc2VFbmRlZCA9IDMsCi19
IHdrRXZlbnRQaGFzZTsKLQotZXh0ZXJuIGludCAoKndrR2V0TlNFdmVudE1vbWVudHVtUGhhc2Up
KE5TRXZlbnQgKik7Ci0jZW5kaWYKIAogZXh0ZXJuIENUTGluZVJlZiAoKndrQ3JlYXRlQ1RMaW5l
V2l0aFVuaUNoYXJQcm92aWRlcikoY29uc3QgVW5pQ2hhciogKCpwcm92aWRlKShDRkluZGV4IHN0
cmluZ0luZGV4LCBDRkluZGV4KiBjaGFyQ291bnQsIENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRl
cywgdm9pZCopLCB2b2lkICgqZGlzcG9zZSkoY29uc3QgVW5pQ2hhciogY2hhcnMsIHZvaWQqKSwg
dm9pZCopOwogCkBAIC0yNTAsOCArMjM1LDYgQEAgdHlwZWRlZiBpbnQgd2tDVEZvbnRUcmFuc2Zv
cm1PcHRpb25zOwogZXh0ZXJuIGJvb2wgKCp3a0NURm9udFRyYW5zZm9ybUdseXBocykoQ1RGb250
UmVmIGZvbnQsIENHR2x5cGggZ2x5cGhzW10sIENHU2l6ZSBhZHZhbmNlc1tdLCBDRkluZGV4IGNv
dW50LCB3a0NURm9udFRyYW5zZm9ybU9wdGlvbnMgb3B0aW9ucyk7CiAjZW5kaWYKIAotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotCiBleHRlcm4gQ1RUeXBlc2V0
dGVyUmVmICgqd2tDcmVhdGVDVFR5cGVzZXR0ZXJXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9u
cykoY29uc3QgVW5pQ2hhciogKCpwcm92aWRlKShDRkluZGV4IHN0cmluZ0luZGV4LCBDRkluZGV4
KiBjaGFyQ291bnQsIENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRlcywgdm9pZCopLCB2b2lkICgq
ZGlzcG9zZSkoY29uc3QgVW5pQ2hhciogY2hhcnMsIHZvaWQqKSwgdm9pZCosIENGRGljdGlvbmFy
eVJlZiBvcHRpb25zKTsKIAogZXh0ZXJuIENHU2l6ZSAoKndrQ1RSdW5HZXRJbml0aWFsQWR2YW5j
ZSkoQ1RSdW5SZWYpOwpAQCAtMjcxLDggKzI1NCw2IEBAIGV4dGVybiB2b2lkICgqd2tTZXRDcmFz
aFJlcG9ydEFwcGxpY2F0aW8KIGV4dGVybiBOU1VSTCAqKCp3a0FWQXNzZXRSZXNvbHZlZFVSTCko
QVZBc3NldCopOwogCiBleHRlcm4gTlNDdXJzb3IgKigqd2tDdXJzb3IpKGNvbnN0IGNoYXIqKTsK
LQotI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogZXh0ZXJuIE5TQXJyYXkgKigqd2tT
cGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKSh2b2lkKTsKQEAgLTI5MCwxMSArMjcx
LDcgQEAgZXh0ZXJuIENGVHlwZVJlZiAoKndrQ3JlYXRlQVhUZXh0TWFya2VyKQogZXh0ZXJuIEJP
T0wgKCp3a0dldEJ5dGVzRnJvbUFYVGV4dE1hcmtlcikoQ0ZUeXBlUmVmIHRleHRNYXJrZXIsIHZv
aWQgKmJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIGV4dGVybiBBWFVJRWxlbWVudFJlZiAoKndrQ3Jl
YXRlQVhVSUVsZW1lbnRSZWYpKGlkIGVsZW1lbnQpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA9PSAxMDYwCi10eXBlZGVmIHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Np
b24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7Ci0jZWxzZQogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwotI2VuZGlmCiBl
eHRlcm4gQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiAoKndrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKShDRlN0cmluZ1JlZik7CiBleHRlcm4gTlNVUkxSZXF1ZXN0KiAoKndrQ29weVJlcXVlc3RX
aXRoU3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIE5TVVJMUmVxdWVzdCop
OwogCkBAIC0zMjUsMTQgKzMwMiwxMSBAQCBleHRlcm4gdm9pZCAoKndrQ0ZVUkxSZXF1ZXN0U2V0
SFRUUFJlcXVlCiBleHRlcm4gdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKICNlbmRpZgogZXh0
ZXJuIHZvaWQgKCp3a1NldE1ldGFkYXRhVVJMKShOU1N0cmluZyAqdXJsU3RyaW5nLCBOU1N0cmlu
ZyAqcmVmZXJyZXIsIE5TU3RyaW5nICpwYXRoKTsKLSAgICAKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzAKKwogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4K
IAogZXh0ZXJuIGRpc3BhdGNoX3NvdXJjZV90ICgqd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hP
bk1haW5RdWV1ZSkodm9pZCk7CiAKLSNlbmRpZgotCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwCiBleHRlcm4gZGlzcGF0Y2hfc291cmNlX3QgKCp3a0NyZWF0ZU1l
bW9yeVN0YXR1c1ByZXNzdXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1ZXVlKSh2b2lkKTsKICNl
bmRpZgpAQCAtMzQxLDEzICszMTUsOSBAQCBleHRlcm4gZGlzcGF0Y2hfc291cmNlX3QgKCp3a0Ny
ZWF0ZU1lbW9yCiBleHRlcm4gYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVM
aW9uKSh2b2lkKTsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCiBleHRlcm4gdm9pZCAoKndrQ0dQYXRoQWRkUm91bmRlZFJlY3QpKENHTXV0YWJs
ZVBhdGhSZWYgcGF0aCwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0qIG1hdHJpeCwgQ0dSZWN0IHJl
Y3QsIENHRmxvYXQgY29ybmVyV2lkdGgsIENHRmxvYXQgY29ybmVySGVpZ2h0KTsKLSNlbmRpZgog
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBleHRlcm4gdm9p
ZCAoKndrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZykoQ0ZVUkxSZXF1ZXN0UmVmKTsK
LSNlbmRpZgogCiAjaWYgVVNFKENPTlRFTlRfRklMVEVSSU5HKQogZXh0ZXJuIEJPT0wgKCp3a0Zp
bHRlcklzTWFuYWdlZFNlc3Npb24pKHZvaWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDE1
NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw3IEBACiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAogdm9pZCAoKndrQWR2YW5jZURlZmF1bHRCdXR0b25QdWxzZUFu
aW1hdGlvbikoTlNCdXR0b25DZWxsICopOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA3MAogdm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldp
dGhCbG9jaykoQ0FMYXllciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShD
R1JlY3QgcmVjdCkpOwotI2VuZGlmCiBCT09MICgqd2tDR0NvbnRleHRHZXRTaG91bGRTbW9vdGhG
b250cykoQ0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3a0NHQ29udGV4dFJlc2V0Q2xpcCkoQ0dDb250
ZXh0UmVmKTsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKQEAg
LTEzMCwxMiArMTI4LDcgQEAgdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVS
TAogdm9pZCAoKndrR2V0R2x5cGhzRm9yQ2hhcmFjdGVycykoQ0dGb250UmVmLCBjb25zdCBVbmlD
aGFyW10sIENHR2x5cGhbXSwgc2l6ZV90KTsKIGJvb2wgKCp3a0dldFZlcnRpY2FsR2x5cGhzRm9y
Q2hhcmFjdGVycykoQ1RGb250UmVmLCBjb25zdCBVbmlDaGFyW10sIENHR2x5cGhbXSwgc2l6ZV90
KTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogdm9pZCog
d2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7Ci0jZWxzZQotQ0ZJbmRleCAoKndr
R2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4KShDRlN0cmluZ1JlZiBzdHJpbmcsIENG
SW5kZXggaW5kZXgpOwotaW50ICgqd2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZSkoTlNFdmVudCAq
KTsKLSNlbmRpZgogCiBDVExpbmVSZWYgKCp3a0NyZWF0ZUNUTGluZVdpdGhVbmlDaGFyUHJvdmlk
ZXIpKGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRl
eCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAo
KmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqKTsKICNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKQEAgLTE0NCw3ICsxMzcsNiBAQCBi
b29sICgqd2tDVEZvbnRUcmFuc2Zvcm1HbHlwaHMpKENURm9udFJlCiAKIENHU2l6ZSAoKndrQ1RS
dW5HZXRJbml0aWFsQWR2YW5jZSkoQ1RSdW5SZWYpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDcwCiBDVFR5cGVzZXR0ZXJSZWYgKCp3a0NyZWF0ZUNUVHlwZXNl
dHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKShjb25zdCBVbmlDaGFyKiAoKnByb3Zp
ZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5
UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBj
aGFycywgdm9pZCopLCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogCiBDR0NvbnRl
eHRSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUpKElPU3VyZmFjZVJlZiBzdXJmYWNlLCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSk7CkBAIC0xNjEsOCArMTUzLDYgQEAgTlNVUkwgKigqd2tBVkFzc2V0UmVzb2x2ZWRVUkwpKEFW
QXNzZXQqKQogCiBOU0N1cnNvciAqKCp3a0N1cnNvcikoY29uc3QgY2hhciopOwogCi0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKE1BQykKIE5TQXJyYXkgKigqd2tTcGVlY2hTeW50aGVzaXNHZXRWb2lj
ZUlkZW50aWZpZXJzKSh2b2lkKTsKIE5TU3RyaW5nICooKndrU3BlZWNoU3ludGhlc2lzR2V0RGVm
YXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSkoTlNMb2NhbGUgKik7CkBAIC0xOTksOSArMTg5
LDcgQEAgdm9pZCAoKndrU2V0TWV0YWRhdGFVUkwpKE5TU3RyaW5nICp1cmxTdAogCiB2b2lkKCp3
a0Rlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMpKHZvaWQpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBkaXNwYXRjaF9zb3VyY2VfdCAoKndrQ3JlYXRlVk1Q
cmVzc3VyZURpc3BhdGNoT25NYWluUXVldWUpKHZvaWQpOwotI2VuZGlmCiAKICNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIGRpc3BhdGNoX3NvdXJjZV90ICgqd2tD
cmVhdGVNZW1vcnlTdGF0dXNQcmVzc3VyZUNyaXRpY2FsRGlzcGF0Y2hPbk1haW5RdWV1ZSkodm9p
ZCk7CkBAIC0yMTEsMTMgKzE5OSw5IEBAIGRpc3BhdGNoX3NvdXJjZV90ICgqd2tDcmVhdGVNZW1v
cnlTdGF0dXMKIGJvb2wgKCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlTGlvbikodm9p
ZCk7CiAjZW5kaWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogdm9pZCAoKndrQ0dQYXRoQWRkUm91bmRlZFJlY3QpKENHTXV0YWJsZVBhdGhSZWYgcGF0aCwg
Y29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0qIG1hdHJpeCwgQ0dSZWN0IHJlY3QsIENHRmxvYXQgY29y
bmVyV2lkdGgsIENHRmxvYXQgY29ybmVySGVpZ2h0KTsKLSNlbmRpZgogCi0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiB2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxv
d0FsbFBvc3RDYWNoaW5nKShDRlVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCiAKICNpZiBVU0UoQ09O
VEVOVF9GSUxURVJJTkcpCiBCT09MICgqd2tGaWx0ZXJJc01hbmFnZWRTZXNzaW9uKSh2b2lkKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNiBAQAogI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgogI2ltcG9ydCAi
Q3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0j
aW1wb3J0ICJFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3Ry
ZWFtTWFjLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZVJlcXVlc3RNYWMubW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtODgsMTAgKzg4LDggQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VSZQogICAgICAgICBtX2h0dHBNZXRob2QgPSBtZXRob2Q7CiAgICAgbV9hbGxvd0Nvb2tpZXMg
PSBbbV9uc1JlcXVlc3QuZ2V0KCkgSFRUUFNob3VsZEhhbmRsZUNvb2tpZXNdOwogCi0jaWYgUExB
VEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAg
ICBpZiAoUmVzb3VyY2VSZXF1ZXN0OjpodHRwUGlwZWxpbmluZ0VuYWJsZWQoKSkKICAgICAgICAg
bV9wcmlvcml0eSA9IHRvUmVzb3VyY2VMb2FkUHJpb3JpdHkod2tHZXRIVFRQUGlwZWxpbmluZ1By
aW9yaXR5KFttX25zUmVxdWVzdC5nZXQoKSBfQ0ZVUkxSZXF1ZXN0XSkpOwotI2VuZGlmCiAKICAg
ICBOU0RpY3Rpb25hcnkgKmhlYWRlcnMgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgYWxsSFRUUEhlYWRl
ckZpZWxkc107CiAgICAgTlNFbnVtZXJhdG9yICplID0gW2hlYWRlcnMga2V5RW51bWVyYXRvcl07
CkBAIC0xNDQsMTYgKzE0MiwxMSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0
Zm9ybVJlCiAgICAgZWxzZQogICAgICAgICBuc1JlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVl
c3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybCgpXTsKIAotCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBpZiAoUmVzb3VyY2VS
ZXF1ZXN0OjpodHRwUGlwZWxpbmluZ0VuYWJsZWQoKSkKICAgICAgICAgd2tTZXRIVFRQUGlwZWxp
bmluZ1ByaW9yaXR5KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0sIHRvSFRUUFBpcGVsaW5pbmdQ
cmlvcml0eShtX3ByaW9yaXR5KSk7Ci0jZW5kaWYKIAogICAgIFtuc1JlcXVlc3Qgc2V0Q2FjaGVQ
b2xpY3k6KE5TVVJMUmVxdWVzdENhY2hlUG9saWN5KWNhY2hlUG9saWN5KCldOwotI2lmIFBMQVRG
T1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAg
d2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVz
dF0pOwotI2VuZGlmCiAKICAgICBkb3VibGUgdGltZW91dEludGVydmFsID0gUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCk7CiAgICAgaWYgKHRpbWVvdXRJbnRlcnZhbCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNG
LmNwcAkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9j
Zi9IeXBoZW5hdGlvbkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCiAKLSNpZiAhUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAotCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oIgogI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KQEAgLTc1LDUgKzczLDMgQEAgc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihj
b25zdCBVQ2hhciogYwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAh
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA3MApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
SHlwaGVuYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvSHlwaGVuYXRpb25NYWMubW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0h5cGhlbmF0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkh5cGhlbmF0aW9uLmgiCi0KLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLQotI2ltcG9ydCAiQXRvbWljU3RyaW5nS2V5ZWRN
UlVDYWNoZS5oIgotI2ltcG9ydCAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotI2lt
cG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4KLWJvb2wgQXRvbWljU3RyaW5n
S2V5ZWRNUlVDYWNoZTxib29sPjo6Y3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkKLXsKLSAgICByZXR1
cm4gIXN0cmNtcChjdXJyZW50U2VhcmNoTG9jYWxlSUQoKSwgImVuIik7Ci19Ci0KLXRlbXBsYXRl
PD4KLWJvb2wgQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxib29sPjo6Y3JlYXRlVmFsdWVGb3JL
ZXkoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQotewotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gY2ZMb2NhbGVJZGVudGlmaWVyID0gYWRvcHRDRihsb2NhbGVJZGVudGlm
aWVyLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNv
bXBvbmVudHMgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlQ29tcG9uZW50c0Zyb21Mb2NhbGVJZGVu
dGlmaWVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNmTG9jYWxlSWRlbnRpZmllci5nZXQoKSkpOwot
ICAgIENGU3RyaW5nUmVmIGxhbmd1YWdlID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY29tcG9uZW50cy5nZXQoKSwga0NGTG9jYWxlTGFuZ3VhZ2VD
b2RlKSk7Ci0gICAgc3RhdGljIENGU3RyaW5nUmVmIGVuZ2xpc2hMYW5ndWFnZSA9IENGU1RSKCJl
biIpOwotICAgIHJldHVybiBsYW5ndWFnZSAmJiBDRkVxdWFsKGxhbmd1YWdlLCBlbmdsaXNoTGFu
Z3VhZ2UpOwotfQotCi1ib29sIGNhbkh5cGhlbmF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZUlkZW50aWZpZXIpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmdLZXll
ZE1SVUNhY2hlPGJvb2w+LCBpc0VuZ2xpc2hDYWNoZSwgKCkpOwotICAgIHJldHVybiBpc0VuZ2xp
c2hDYWNoZS5nZXQobG9jYWxlSWRlbnRpZmllcik7Ci19Ci0KLXNpemVfdCBsYXN0SHlwaGVuTG9j
YXRpb24oY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBiZWZv
cmVJbmRleCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQotewotICAgIEFT
U0VSVF9VTlVTRUQobG9jYWxlSWRlbnRpZmllciwgY2FuSHlwaGVuYXRlKGxvY2FsZUlkZW50aWZp
ZXIpKTsKLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJh
Y3RlcnMsIGxlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIHJldHVybiB3a0dldEh5cGhl
bmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleChzdHJpbmcuZ2V0KCksIGJlZm9yZUluZGV4KTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMTU0
MzEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2ODQsNyArMTY4NCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb250YWluc1BhaW50ZWQKICAgICBpZiAocmVuZGVyZXIoKS0+aXNWaWRlbygpICYmIHRv
UmVuZGVyVmlkZW8ocmVuZGVyZXIoKSktPnNob3VsZERpc3BsYXlWaWRlbygpKQogICAgICAgICBy
ZXR1cm4gbV9vd25pbmdMYXllci0+aGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmQoKTsKICNl
bmRpZgotI2lmIFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzApCisjaWYgUExBVEZPUk0oTUFD
KSAmJiBVU0UoQ0EpCiAjZWxpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDYW52YXMocmVuZGVyZXIoKSkpCiAgICAg
ICAgIHJldHVybiBtX293bmluZ0xheWVyLT5oYXNCb3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2
aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIyLDExICsyMTIyLDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZU1hYzo6YWRqdXN0U2xpZGVyVGh1bWJTaQogCiBib29sIFJlbmRlclRoZW1lTWFjOjpzaG91bGRT
aG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpIGNvbnN0CiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBOU1BvcFVwQnV0dG9uQ2VsbCogUmVuZGVyVGhlbWVN
YWM6OnBvcHVwQnV0dG9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDMxMCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEzLTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwNDk+IERlbGV0ZSBjb2RlIGZvciBTbm93IExl
b3BhcmQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6b3ZlcnJpZGVTeXN0ZW1Qcm94aWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJLaXQy
UHJlZml4Lmg6CisKIDIwMTMtMDgtMTkgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwMjc+IEFYT2JqZWN0Q2FjaGUncyAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDJQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQAog
CiAjaWZkZWYgX19PQkpDX18KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2lt
cG9ydCA8V2ViQ29yZS9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaD4KICNpZiBVU0UoQVBQS0lU
KQogI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkocmV2
aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmEKICAgICBXS1NldFZpc2libGVBcHBsaWNh
dGlvbk5hbWUoKENGU3RyaW5nUmVmKWFwcGxpY2F0aW9uTmFtZSk7CiB9CiAKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lz
dGVtUHJveGllcyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3RyaW5nJiBodHRwc1By
b3h5KQogewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnByb3h5U2V0dGluZ3MgPSBbTlNNdXRh
YmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKQEAgLTEwNyw3ICsxMDYsNiBAQCBzdGF0aWMgdm9p
ZCBvdmVycmlkZVN5c3RlbVByb3hpZXMoY29uc3QgCiAgICAgaWYgKFtwcm94eVNldHRpbmdzIGNv
dW50XSA+IDApCiAgICAgICAgIFdLQ0ZOZXR3b3JrU2V0T3ZlcnJpZGVTeXN0ZW1Qcm94eVNldHRp
bmdzKChDRkRpY3Rpb25hcnlSZWYpcHJveHlTZXR0aW5ncyk7CiB9Ci0jZW5kaWYgLy8gX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewpAQCAtMTI1LDEwICsxMjMsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgU2VjSXRlbVNoaW06OnNo
YXJlZCgpLmluaXRpYWxpemUodGhpcyk7CiAjZW5kaWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmICghcGFyYW1ldGVycy5odHRwUHJveHkuaXNO
dWxsKCkgfHwgIXBhcmFtZXRlcnMuaHR0cHNQcm94eS5pc051bGwoKSkKICAgICAgICAgb3ZlcnJp
ZGVTeXN0ZW1Qcm94aWVzKHBhcmFtZXRlcnMuaHR0cFByb3h5LCBwYXJhbWV0ZXJzLmh0dHBzUHJv
eHkpOwotI2VuZGlmCiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2FjaGUgPSBhZG9wdENGKENGVVJMQ2Fj
aGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NTQzMTApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzOCBAQAorMjAxMy0wOC0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KKworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIwMDQ5PiBEZWxldGUgY29kZSBm
b3IgU25vdyBMZW9wYXJkCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRl
Lm1tOgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0ZSBtZW51SXRlbVdpdGhUYWc6dGFy
Z2V0OnJlcHJlc2VudGVkT2JqZWN0Ol0pOgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0
ZSB3ZWJWaWV3OmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50OmRlZmF1bHRNZW51SXRlbXM6XSk6
CisgICAgICAgICogTWlzYy9XZWJOU0NvbnRyb2xFeHRyYXMubToKKyAgICAgICAgKC1bTlNDb250
cm9sIHNpemVUb0ZpdEFuZEFkanVzdFdpbmRvd0hlaWdodF0pOgorICAgICAgICAqIE1pc2MvV2Vi
TlNGaWxlTWFuYWdlckV4dHJhcy5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vy
c0FmdGVyQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vl
c3Nlc0ZvcldvcmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVk
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAg
ICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2ViS2l0UHJlZml4
Lmg6CisgICAgICAgICogV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW06CisgICAg
ICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzY3JvbGxXaGVlbDpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoY29udmVydFJl
Y3RUb1NjcmVlbik6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVk
RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXZWJGdWxsU2NyZWVuQ29u
dHJvbGxlciBleGl0RnVsbFNjcmVlbl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcu
bW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9wYXN0ZVdpdGhQYXN0ZWJvYXJkOmFsbG93UGxh
aW5UZXh0Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyByZW1vdmVNb3VzZU1vdmVkT2JzZXJ2
ZXJdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgd2luZG93RGlkQmVjb21lS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJIVE1MVmlldyB3aW5kb3dEaWRSZXNpZ25LZXk6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9kZXZpY2VTY2FsZUZhY3Rvcl0p
OgorCiAyMDEzLTA4LTE5ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTE5OTE4PiBGcmFtZTo6c2VsZWN0aW9uKCkg
c2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViS2l0
UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgJ
KHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNp
bmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1h
Y3Jvcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0VtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oPgogCiAvKiBXb3JrIGFyb3Vu
ZCBidWcgd2l0aCBDKysgbGlicmFyeSB0aGF0IHNjcmV3cyB1cCBPYmplY3RpdmUtQysrIHdoZW4g
ZXhjZXB0aW9uIHN1cHBvcnQgaXMgZGlzYWJsZWQuICovCiAjdW5kZWYgdHJ5CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0ZXMv
V2ViRGVmYXVsdENvbnRleHRNZW51RGVsZWdhdGUubW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdENvbnRleHRNZW51RGVs
ZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDEyICs4OSw4IEBAIC0gKE5TTWVudUl0ZW0g
KiltZW51SXRlbVdpdGhUYWc6KGludCl0YWcKICAgICAgICAgICAgIGFjdGlvbiA9IEBzZWxlY3Rv
cihfc2VhcmNoV2l0aFNwb3RsaWdodEZyb21NZW51Oik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBXZWJNZW51SXRlbVRhZ1NlYXJjaFdlYjogewotI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBzZWFyY2hQcm92aWRlck5hbWUgPSBhZG9wdENGKFdLQ29weURlZmF1bHRTZWFyY2hQcm92
aWRlckRpc3BsYXlOYW1lKCkpOwogICAgICAgICAgICAgdGl0bGUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpVSV9TVFJJTkdfSU5URVJOQUwoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3
aXRoIHNlYXJjaCBwcm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUg
aW5zZXJ0ZWQiKSwgc2VhcmNoUHJvdmlkZXJOYW1lLmdldCgpXTsKLSNlbHNlCi0gICAgICAgICAg
ICB0aXRsZSA9IFVJX1NUUklOR19JTlRFUk5BTCgiU2VhcmNoIHdpdGggR29vZ2xlIiwgIlNlYXJj
aCB3aXRoIEdvb2dsZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotI2VuZGlmCiAgICAgICAgICAgICBh
Y3Rpb24gPSBAc2VsZWN0b3IoX3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudTopOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEzNiwxMiArMTMyLDYgQEAgLSAodm9pZClhcHBlbmRE
ZWZhdWx0SXRlbXM6KE5TQXJyYXkgKilkZQogICAgIH0KIH0KIAotI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAotI2RlZmluZSBJTkNMVURFX1NQT1RMSUdIVF9DT05U
RVhUX01FTlVfSVRFTSAxCi0jZWxzZQotI2RlZmluZSBJTkNMVURFX1NQT1RMSUdIVF9DT05URVhU
X01FTlVfSVRFTSAwCi0jZW5kaWYKLQogLSAoTlNBcnJheSAqKXdlYlZpZXc6KFdlYlZpZXcgKil3
diBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudDooTlNEaWN0aW9uYXJ5ICopZWxlbWVudCAgZGVm
YXVsdE1lbnVJdGVtczooTlNBcnJheSAqKWRlZmF1bHRNZW51SXRlbXMKIHsKICAgICAvLyBUaGUg
ZGVmYXVsdE1lbnVJdGVtcyBoZXJlIGFyZSBvbmVzIHN1cHBsaWVkIGJ5IHRoZSBXZWJEb2N1bWVu
dFZpZXcgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIFdlYlBERlZpZXcgaXMKQEAgLTE2MSwyMiAr
MTUxLDEzIEBAIC0gKE5TQXJyYXkgKil3ZWJWaWV3OihXZWJWaWV3ICopd3YgY29udGUKICAgICAg
ICAgLy8gZXhpc3RpbmcgY2xpZW50cyB0aGF0IGhhdmUgY29kZSB0aGF0IHJlbGllcyBvbiBpdCBi
ZWluZyBwcmVzZW50ICh1bmxpa2VseSBmb3IgY2xpZW50cyBvdXRzaWRlIG9mIEFwcGxlLCAKICAg
ICAgICAgLy8gYnV0IFNhZmFyaSBoYXMgc3VjaCBjb2RlKS4KIAotI2lmIElOQ0xVREVfU1BPVExJ
R0hUX0NPTlRFWFRfTUVOVV9JVEVNCi0gICAgICAgIFttZW51SXRlbXMgYWRkT2JqZWN0OltzZWxm
IG1lbnVJdGVtV2l0aFRhZzpXZWJNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0IHRhcmdldDpu
aWwgcmVwcmVzZW50ZWRPYmplY3Q6ZWxlbWVudF1dOwotI2Vsc2UKICAgICAgICAgTlNNZW51SXRl
bSAqbG9va3VwTWVudUl0ZW0gPSBbc2VsZiBtZW51SXRlbVdpdGhUYWc6V2ViTWVudUl0ZW1UYWdM
b29rVXBJbkRpY3Rpb25hcnkgdGFyZ2V0Om5pbCByZXByZXNlbnRlZE9iamVjdDplbGVtZW50XTsK
ICAgICAgICAgTlNTdHJpbmcgKnNlbGVjdGVkU3RyaW5nID0gWyhpZCA8V2ViRG9jdW1lbnRUZXh0
PilbW3dlYkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBzZWxlY3RlZFN0cmluZ107CiAg
ICAgICAgIFtsb29rdXBNZW51SXRlbSBzZXRUaXRsZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpVSV9TVFJJTkdfSU5URVJOQUwoIkxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250ZXh0
IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRTdHJpbmddXTsKICAgICAg
ICAgW21lbnVJdGVtcyBhZGRPYmplY3Q6bG9va3VwTWVudUl0ZW1dOwotI2VuZGlmCiAKICAgICAg
ICAgW21lbnVJdGVtcyBhZGRPYmplY3Q6W3NlbGYgbWVudUl0ZW1XaXRoVGFnOldlYk1lbnVJdGVt
VGFnU2VhcmNoV2ViIHRhcmdldDpuaWwgcmVwcmVzZW50ZWRPYmplY3Q6ZWxlbWVudF1dOwogCi0j
aWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVYVF9NRU5VX0lURU0KLSAgICAgICAgW21lbnVJdGVt
cyBhZGRPYmplY3Q6W05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV1dOwotICAgICAgICBbbWVudUl0
ZW1zIGFkZE9iamVjdDpbc2VsZiBtZW51SXRlbVdpdGhUYWc6V2ViTWVudUl0ZW1UYWdMb29rVXBJ
bkRpY3Rpb25hcnkgdGFyZ2V0Om5pbCByZXByZXNlbnRlZE9iamVjdDplbGVtZW50XV07Ci0jZW5k
aWYKLQogICAgICAgICBbbWVudUl0ZW1zIGFkZE9iamVjdDpbTlNNZW51SXRlbSBzZXBhcmF0b3JJ
dGVtXV07CiAgICAgICAgIFttZW51SXRlbXMgYWRkT2JqZWN0OltzZWxmIG1lbnVJdGVtV2l0aFRh
ZzpXZWJNZW51SXRlbVRhZ0NvcHkgdGFyZ2V0Om5pbCByZXByZXNlbnRlZE9iamVjdDplbGVtZW50
XV07CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNDb250
cm9sRXh0cmFzLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0Nv
bnRyb2xFeHRyYXMubQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJOU0NvbnRyb2xFeHRyYXMubQkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDcgQEAg
LSAodm9pZClzaXplVG9GaXRBbmRBZGp1c3RXaW5kb3dIZWlnaHQKICAgICBOU1JlY3Qgd2luZG93
RnJhbWUgPSBbd2luZG93IGZyYW1lXTsKIAogICAgIENHRmxvYXQgYmFja2luZ1NjYWxlRmFjdG9y
OwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGJhY2tp
bmdTY2FsZUZhY3RvciA9IFt3aW5kb3cgYmFja2luZ1NjYWxlRmFjdG9yXTsKLSNlbHNlCi0gICAg
YmFja2luZ1NjYWxlRmFjdG9yID0gW3dpbmRvdyB1c2VyU3BhY2VTY2FsZUZhY3Rvcl07Ci0jZW5k
aWYKIAogICAgIHdpbmRvd0ZyYW1lLnNpemUuaGVpZ2h0ICs9IGhlaWdodERlbHRhICogYmFja2lu
Z1NjYWxlRmFjdG9yOwogICAgIFt3aW5kb3cgc2V0RnJhbWU6d2luZG93RnJhbWUgZGlzcGxheTpO
T107CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
Yk5TRmlsZU1hbmFnZXJFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiw2IEBA
CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCi1leHRlcm4gIkMiIERBRGlz
a1JlZiBEQURpc2tDcmVhdGVGcm9tVm9sdW1lUGF0aChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IERBU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlVSTFJlZiBwYXRoKTsKLSNlbmRpZgotCiBAaW1wbGVt
ZW50YXRpb24gTlNGaWxlTWFuYWdlciAoV2ViTlNGaWxlTWFuYWdlckV4dHJhcykKIAogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTc3LDExICs3Nyw5IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBAaW50ZXJmYWNl
IE5TU3BlbGxDaGVja2VyIChXZWJOU1NwZWxsQ2hlY2tlckRldGFpbHMpCiAtIChOU1N0cmluZyAq
KWxhbmd1YWdlRm9yV29yZFJhbmdlOihOU1JhbmdlKXJhbmdlIGluU3RyaW5nOihOU1N0cmluZyAq
KXN0cmluZyBvcnRob2dyYXBoeTooTlNPcnRob2dyYXBoeSAqKW9ydGhvZ3JhcGh5OwogQGVuZAot
I2VuZGlmCiAKIEBpbnRlcmZhY2UgTlNBdHRyaWJ1dGVkU3RyaW5nIChXZWJOU0F0dHJpYnV0ZWRT
dHJpbmdEZXRhaWxzKQogLSAoaWQpX2luaXRXaXRoRE9NUmFuZ2U6KERPTVJhbmdlKilyYW5nZTsK
QEAgLTcyMCwxMSArNzE4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHREaWRDaGFuZ2VJ
blRleAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdl
U2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUgdHlwZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIHBy
ZXZlbnRzIGVyYXNpbmcgc3BlbGxpbmcgbWFya2VycyBvbiBPUyBYIExpb24gb3IgbGF0ZXIgdG8g
bWF0Y2ggQXBwS2l0IG9uIHRoZXNlIE1hYyBPUyBYIHZlcnNpb25zLgotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIHJldHVybiB0eXBlICE9IFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZzsKLSNlbHNlCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKIH0KIAog
dm9pZCBXZWJFZGl0b3JDbGllbnQ6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiB0ZXh0KQpAQCAtOTEzLDcgKzkwNyw2IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzcGVs
bGluZ1VJSXNTaG93aW4KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldEd1ZXNzZXNGb3JXb3Jk
KGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5n
PiYgZ3Vlc3NlcykgewogICAgIGd1ZXNzZXMuY2xlYXIoKTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBOU1N0cmluZyogbGFuZ3VhZ2UgPSBuaWw7CiAg
ICAgTlNPcnRob2dyYXBoeSogb3J0aG9ncmFwaHkgPSBuaWw7CiAgICAgTlNTcGVsbENoZWNrZXIg
KmNoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKQEAgLTkyMiw5
ICs5MTUsNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vlc3Nlc0ZvcldvcmQoCiAgICAg
ICAgIGxhbmd1YWdlID0gW2NoZWNrZXIgbGFuZ3VhZ2VGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgY29udGV4dC5sZW5ndGgoKSkgaW5TdHJpbmc6Y29udGV4dCBvcnRob2dyYXBoeTpvcnRob2dy
YXBoeV07CiAgICAgfQogICAgIE5TQXJyYXkqIHN0cmluZ3NBcnJheSA9IFtjaGVja2VyIGd1ZXNz
ZXNGb3JXb3JkUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgd29yZC5sZW5ndGgoKSkgaW5TdHJpbmc6d29y
ZCBsYW5ndWFnZTpsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnKCldOwotI2Vsc2UKLSAgICBOU0FycmF5KiBzdHJpbmdzQXJyYXkgPSBbW05TU3Bl
bGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gZ3Vlc3Nlc0ZvcldvcmQ6d29yZF07Ci0jZW5k
aWYKICAgICB1bnNpZ25lZCBjb3VudCA9IFtzdHJpbmdzQXJyYXkgY291bnRdOwogCiAgICAgaWYg
KGNvdW50ID4gMCkgewpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDE1NDMxMCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC03MDgsMTAgKzcwOCw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkTGEKICAgICAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpz
Y3JvbGxWaWV3ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX3Njcm9sbFZp
ZXddOwogICAgICAgICBpZiAoW2dldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkgZHJhd3NCYWNr
Z3JvdW5kXSkKICAgICAgICAgICAgIFtzY3JvbGxWaWV3IHNldERyYXdzQmFja2dyb3VuZDpZRVNd
OwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBb
c2Nyb2xsVmlldyBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk6TlNTY3JvbGxFbGFzdGljaXR5
QXV0b21hdGljXTsKICAgICAgICAgW3Njcm9sbFZpZXcgc2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHk6TlNTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljXTsKLSNlbmRpZgogICAgIH0KIAogICAg
IGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KSB7CkBAIC0x
MTQ4LDEwICsxMTQ2LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxM
bwogCiAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxWaWV3ID0gW21fd2ViRnJh
bWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX3Njcm9sbFZpZXddOwogICAgIFtzY3JvbGxWaWV3
IHNldERyYXdzQmFja2dyb3VuZDpOT107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDcwCiAgICAgW3Njcm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5
Ok5TU2Nyb2xsRWxhc3RpY2l0eU5vbmVdOwogICAgIFtzY3JvbGxWaWV3IHNldEhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eU5vbmVdOwotI2VuZGlmCiB9CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWQoKQpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5t
bQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw3IEBAIHZv
aWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgSU5JVChBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uKTsKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBJTklUKENBTGF5ZXJFbnVtZXJh
dGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spOwotI2VuZGlmCiAgICAgSU5JVChDR0NvbnRleHRH
ZXRTaG91bGRTbW9vdGhGb250cyk7CiAgICAgSU5JVChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VB
bmRUcmFuc2Zvcm0pOwogICAgIElOSVQoQ0dDb250ZXh0UmVzZXRDbGlwKTsKQEAgLTEyNSwxNCAr
MTIzLDggQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQo
R2V0R2x5cGhzRm9yQ2hhcmFjdGVycyk7CiAgICAgSU5JVChHZXRWZXJ0aWNhbEdseXBoc0ZvckNo
YXJhY3RlcnMpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYw
Ci0gICAgSU5JVChHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXgpOwotICAgIElOSVQo
R2V0TlNFdmVudE1vbWVudHVtUGhhc2UpOwotI2VuZGlmCi0KICAgICBJTklUKENyZWF0ZUNUTGlu
ZVdpdGhVbmlDaGFyUHJvdmlkZXIpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDcwCiAgICAgSU5JVChJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKTsKICAgICBJTklU
KElPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSk7CiAgICAgSU5JVChDcmVhdGVDVFR5cGVzZXR0
ZXJXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9ucyk7CkBAIC0xNDMsNyArMTM1LDcgQEAgdm9p
ZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoQ29weURlZmF1bHRT
ZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKTsKICAgICBJTklUKEFWQXNzZXRSZXNvbHZlZFVSTCk7
CiAgICAgSU5JVChDdXJzb3IpOwotI2VuZGlmCisKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIElO
SVQoR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKTsKICAgICBJTklUKENvcHlDcmVkZW50aWFs
RnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpOwpAQCAtMTk0LDEwICsxODYsOCBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAKICAgICBJTklUKERlc3Ryb3lSZW5kZXJpbmdS
ZXNvdXJjZXMpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcw
CiAgICAgSU5JVChDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hPbk1haW5RdWV1ZSk7Ci0jZW5kaWYK
LSAgICAKKwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAg
IElOSVQoQ3JlYXRlTWVtb3J5U3RhdHVzUHJlc3N1cmVDcml0aWNhbERpc3BhdGNoT25NYWluUXVl
dWUpOwogI2VuZGlmCkBAIC0yMDYsMTMgKzE5Niw5IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2Uodm9pZCkKICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlTGlv
bik7CiAjZW5kaWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgIElOSVQoQ0dQYXRoQWRkUm91bmRlZFJlY3QpOwotI2VuZGlmCiAKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBJTklUKENGVVJMUmVxdWVzdEFs
bG93QWxsUG9zdENhY2hpbmcpOwotI2VuZGlmCiAKICNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcp
CiAgICAgSU5JVChGaWx0ZXJJc01hbmFnZWRTZXNzaW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCShyZXZp
c2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3Jv
bGxCYXJzVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTQyLDEzICs1NDIsOCBAQCAtICh2b2lk
KXNjcm9sbFdoZWVsOihOU0V2ZW50ICopZXZlbnQKICAgICBCT09MIGlzQ29udGludW91czsKICAg
ICBXS0dldFdoZWVsRXZlbnREZWx0YXMoZXZlbnQsICZkZWx0YVgsICZkZWx0YVksICZpc0NvbnRp
bnVvdXMpOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAg
ICAgTlNFdmVudFBoYXNlIG1vbWVudHVtUGhhc2UgPSBbZXZlbnQgbW9tZW50dW1QaGFzZV07CiAg
ICAgQk9PTCBpc0xhdGNoaW5nRXZlbnQgPSBtb21lbnR1bVBoYXNlICYgTlNFdmVudFBoYXNlQmVn
YW4gfHwgbW9tZW50dW1QaGFzZSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnk7Ci0jZWxzZQotICAg
IGludCBtb21lbnR1bVBoYXNlID0gV0tHZXROU0V2ZW50TW9tZW50dW1QaGFzZShldmVudCk7Ci0g
ICAgQk9PTCBpc0xhdGNoaW5nRXZlbnQgPSBtb21lbnR1bVBoYXNlID09IFdLRXZlbnRQaGFzZUJl
Z2FuIHx8IG1vbWVudHVtUGhhc2UgPT0gV0tFdmVudFBoYXNlQ2hhbmdlZDsKLSNlbmRpZgogCiAg
ICAgaWYgKGZhYnNmKGRlbHRhWSkgPiBmYWJzZihkZWx0YVgpKSB7CiAgICAgICAgIGlmICghW3Nl
bGYgYWxsb3dzVmVydGljYWxTY3JvbGxpbmddKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE1
NDMxMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDIwICs3MSwxMCBAQCAtICh2b2lkKV9zdGFydEVu
dGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpCiAtICh2b2lkKV9zdGFydEV4aXRGdWxsU2NyZWVuQW5p
bWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbjsKIEBlbmQKIAotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogc3RhdGljIE5TUmVjdCBj
b252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCByZWN0KQogewogICAg
IHJldHVybiBbd2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46cmVjdF07CiB9Ci0jZWxzZQotc3Rh
dGljIE5TUmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCBy
ZWN0KQotewotICAgIE5TUmVjdCBmcmFtZSA9IFt3aW5kb3cgZnJhbWVdOwotICAgIHJlY3Qub3Jp
Z2luLnggKz0gZnJhbWUub3JpZ2luLng7Ci0gICAgcmVjdC5vcmlnaW4ueSArPSBmcmFtZS5vcmln
aW4ueTsKLSAgICByZXR1cm4gcmVjdDsKLX0KLSNlbmRpZgogCiBAaW50ZXJmYWNlIE5TV2luZG93
KElzT25BY3RpdmVTcGFjZUFkZGl0aW9uRm9yVGlnZXJBbmRMZW9wYXJkKQogLSAoQk9PTClpc09u
QWN0aXZlU3BhY2U7CkBAIC0yNzgsMTYgKzI2OCwxMiBAQCAtICh2b2lkKWZpbmlzaGVkRW50ZXJG
dWxsU2NyZWVuQW5pbWF0aW9uCiAgICAgICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2lu
ZG93XSwgd2luZG93Qm91bmRzKTsKICAgICAgICAgCiAgICAgICAgIE5TV2luZG93ICp3ZWJXaW5k
b3cgPSBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICAvLyBJbiBMaW9uLCBOU1dpbmRv
dyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1cHBy
ZXNzIHRoYXQKICAgICAgICAgLy8gYmVoYXZpb3IgaGVyZSwgbWFraW5nIHN1cmUgdG8gcmVzZXQg
dGhlIGFuaW1hdGlvbiBiZWhhdmlvciBhZnRlcndhcmQuCiAgICAgICAgIE5TV2luZG93QW5pbWF0
aW9uQmVoYXZpb3IgYW5pbWF0aW9uQmVoYXZpb3IgPSBbd2ViV2luZG93IGFuaW1hdGlvbkJlaGF2
aW9yXTsKICAgICAgICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjpOU1dpbmRvd0Fu
aW1hdGlvbkJlaGF2aW9yTm9uZV07Ci0jZW5kaWYKICAgICAgICAgW3dlYldpbmRvdyBvcmRlck91
dDpzZWxmXTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAg
ICAgICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjphbmltYXRpb25CZWhhdmlvcl07
Ci0jZW5kaWYKICAgICAgICAgCiAgICAgICAgIFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzdG9wQW5p
bWF0aW9uXTsKICAgICAgICAgW19mYWRlQW5pbWF0aW9uLmdldCgpIHNldFdpbmRvdzpuaWxdOwpA
QCAtMzI4LDEyICszMTQsMTAgQEAgLSAodm9pZClleGl0RnVsbFNjcmVlbgogICAgIFtzZWxmIF91
cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOwogICAgIAogICAgIE5TV2luZG93KiB3ZWJX
aW5kb3cgPSBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIC8vIEluIExpb24sIE5TV2luZG93
IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJl
c3MgdGhhdAogICAgIC8vIGJlaGF2aW9yIGhlcmUsIG1ha2luZyBzdXJlIHRvIHJlc2V0IHRoZSBh
bmltYXRpb24gYmVoYXZpb3IgYWZ0ZXJ3YXJkLgogICAgIE5TV2luZG93QW5pbWF0aW9uQmVoYXZp
b3IgYW5pbWF0aW9uQmVoYXZpb3IgPSBbd2ViV2luZG93IGFuaW1hdGlvbkJlaGF2aW9yXTsKICAg
ICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVoYXZp
b3JOb25lXTsKLSNlbmRpZgogICAgIC8vIElmIHRoZSB1c2VyIGhhcyBtb3ZlZCB0aGUgZnVsbFNj
cmVlbiB3aW5kb3cgaW50byBhIG5ldyBzcGFjZSwgdGVtcG9yYXJpbHkgY2hhbmdlCiAgICAgLy8g
dGhlIGNvbGxlY3Rpb25CZWhhdmlvciBvZiB0aGUgd2ViVmlldydzIHdpbmRvdyBzbyB0aGF0IGl0
IGlzIHB1bGxlZCBpbnRvIHRoZSBhY3RpdmUgc3BhY2U6CiAgICAgaWYgKCEoW3dlYldpbmRvdyBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlzT25BY3RpdmVTcGFjZSldID8gW3dlYldpbmRv
dyBpc09uQWN0aXZlU3BhY2VdIDogWUVTKSkgewpAQCAtMzQzLDkgKzMyNyw3IEBAIC0gKHZvaWQp
ZXhpdEZ1bGxTY3JlZW4KICAgICAgICAgW3dlYldpbmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6
YmVoYXZpb3JdOwogICAgIH0gZWxzZQogICAgICAgICBbd2ViV2luZG93IG9yZGVyV2luZG93Ok5T
V2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBbd2ViV2luZG93
IHNldEFuaW1hdGlvbkJlaGF2aW9yOmFuaW1hdGlvbkJlaGF2aW9yXTsKLSNlbmRpZgogCiAgICAg
W3NlbGYgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZGVmYXVsdEFu
aW1hdGlvbkR1cmF0aW9uXTsKICAgICBfaXNFeGl0aW5nRnVsbFNjcmVlbiA9IFlFUzsgICAgCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDE1
NDMxMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTg2MCwyNiArODYwLDExIEBAIC0gKHZvaWQpX3Bhc3RlV2l0aFBhc3RlYm9h
cmQ6KE5TUGFzdGVib2EKIAogICAgIERPTVJhbmdlICpyYW5nZSA9IFtzZWxmIF9zZWxlY3RlZFJh
bmdlXTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKKwogICAgIERPTURv
Y3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFz
dGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWluVGV4dDphbGxvd1Bs
YWluVGV4dF07CiAgICAgaWYgKGZyYWdtZW50ICYmIFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVu
dDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBnaXZlbkFjdGlvbjpXZWJWaWV3SW5z
ZXJ0QWN0aW9uUGFzdGVkXSkKICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJh
Z21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2Fy
ZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwotI2Vsc2UKLSAgICAvLyBNYWlsIGlzIGlnbm9yaW5nIHRo
ZSBmcmFtZW50IHBhc3NlZCB0byB0aGUgZGVsZWdhdGUgYW5kIGNyZWF0ZXMgYSBuZXcgb25lLgot
ICAgIC8vIFdlIHdhbnQgdG8gYXZvaWQgY3JlYXRpbmcgdGhlIGZyYWdtZW50IHR3aWNlLgotICAg
IGlmIChhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCkpIHsKLSAgICAgICAgaWYgKFtzZWxmIF9zaG91
bGRJbnNlcnRGcmFnbWVudDpuaWwgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZ2l2ZW5BY3Rpb246
V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pIHsKLSAgICAgICAgICAgIERPTURvY3VtZW50RnJh
Z21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpw
YXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWluVGV4dDphbGxvd1BsYWluVGV4dF07
Ci0gICAgICAgICAgICBpZiAoZnJhZ21lbnQpCi0gICAgICAgICAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJl
cGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwotICAgICAgICB9ICAgICAg
ICAKLSAgICB9IGVsc2UgewotICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9
IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRl
eHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwotICAgICAgICBpZiAoZnJh
Z21lbnQgJiYgW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RP
TVJhbmdlOnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKQotICAg
ICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVu
dCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFs
c2UpOwotICAgIH0KLSNlbmRpZgorCiAgICAgW3dlYlZpZXcgX3NldEluc2VydGlvblBhc3RlYm9h
cmQ6bmlsXTsKICAgICBbd2ViVmlldyByZWxlYXNlXTsKIH0KQEAgLTI4MzIsMTEgKzI4MTcsOSBA
QCAtICh2b2lkKXJlbW92ZU1vdXNlTW92ZWRPYnNlcnZlcgogICAgICAgICByZXR1cm47CiAjZW5k
aWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIC8v
IExlZ2FjeSBzY3JvbGxiYXJzIHJlcXVpcmUgdHJhY2tpbmcgdGhlIG1vdXNlIGF0IGFsbCB0aW1l
cy4KICAgICBpZiAoV0tSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUoKSA9PSBOU1Njcm9sbGVyU3R5
bGVMZWdhY3kpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogCiAgICAgW1tzZWxmIF93ZWJWaWV3
XSBfbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6bmlsIG1vZGlmaWVyRmxhZ3M6MF07CiAgICAgW3Nl
bGYgX3JlbW92ZU1vdXNlTW92ZWRPYnNlcnZlclVuY29uZGl0aW9uYWxseV07CkBAIC0zMzgwLDEz
ICszMzYzLDExIEBAIC0gKHZvaWQpd2luZG93RGlkQmVjb21lS2V5OihOU05vdGlmaWNhdGkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAogICAgIGlmIChfcHJpdmF0ZS0+dHJhY2tpbmdBcmVhRm9yTm9uS2V5V2luZG93
KSB7CiAgICAgICAgIFtzZWxmIHJlbW92ZVRyYWNraW5nQXJlYTpfcHJpdmF0ZS0+dHJhY2tpbmdB
cmVhRm9yTm9uS2V5V2luZG93XTsKICAgICAgICAgW19wcml2YXRlLT50cmFja2luZ0FyZWFGb3JO
b25LZXlXaW5kb3cgcmVsZWFzZV07CiAgICAgICAgIF9wcml2YXRlLT50cmFja2luZ0FyZWFGb3JO
b25LZXlXaW5kb3cgPSBuaWw7CiAgICAgfQotI2VuZGlmCiAKICAgICBOU1dpbmRvdyAqa2V5V2lu
ZG93ID0gW25vdGlmaWNhdGlvbiBvYmplY3RdOwogCkBAIC0zNDEzLDcgKzMzOTQsNiBAQCAtICh2
b2lkKXdpbmRvd0RpZFJlc2lnbktleTooTlNOb3RpZmljYXRpCiAgICAgICAgIFtfcHJpdmF0ZS0+
Y29tcGxldGlvbkNvbnRyb2xsZXIgZW5kUmV2ZXJ0aW5nQ2hhbmdlOk5PIG1vdmVMZWZ0Ok5PXTsK
ICAgICB9CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAg
ICBpZiAoV0tSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUoKSA9PSBOU1Njcm9sbGVyU3R5bGVMZWdh
Y3kpIHsKICAgICAgICAgLy8gTGVnYWN5IHN0eWxlIHNjcm9sbGJhcnMgaGF2ZSBkZXNpZ24gZGV0
YWlscyB0aGF0IHJlbHkgb24gdHJhY2tpbmcgdGhlIG1vdXNlIGFsbCB0aGUgdGltZS4KICAgICAg
ICAgLy8gSXQncyBlYXNpZXN0IHRvIGRvIHRoaXMgd2l0aCBhIHRyYWNraW5nIGFyZWEsIHdoaWNo
IHdlIHdpbGwgcmVtb3ZlIHdoZW4gdGhlIHdpbmRvdyBpcyBrZXkKQEAgLTM0MjQsNyArMzQwNCw2
IEBAIC0gKHZvaWQpd2luZG93RGlkUmVzaWduS2V5OihOU05vdGlmaWNhdGkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySW5mbzpuaWxdOwog
ICAgICAgICBbc2VsZiBhZGRUcmFja2luZ0FyZWE6X3ByaXZhdGUtPnRyYWNraW5nQXJlYUZvck5v
bktleVdpbmRvd107CiAgICAgfQotI2VuZGlmCiB9CiAKIC0gKHZvaWQpd2luZG93V2lsbE9yZGVy
T25TY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2MCwxNCArNjYwLDYg
QEAgLSAodm9pZClfcmVnaXN0ZXJEcmFnZ2VkVHlwZXMKICAgICBbdHlwZXMgcmVsZWFzZV07CiB9
CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLS8vIFRoaXMg
bWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2Ugbm8gbG9uZ2VyIHdhbnQgdG8ga2VlcCBT
YWZhcmkgNS4wLnggd29ya2luZyB3aXRoIG5pZ2h0bHkgYnVpbGRzLgotLSAoQk9PTClfdXNlc0Rv
Y3VtZW50Vmlld3MKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiBzdGF0aWMgYm9v
bCBuZWVkc091dGxvb2tRdWlya3NTY3JpcHQoKQogewogICAgIHN0YXRpYyBib29sIGlzT3V0bG9v
a05lZWRpbmdRdWlya3NTY3JpcHQgPSAhV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJT
VF9WRVJTSU9OX1dJVEhfSFRNTDVfUEFSU0VSKQpAQCAtNTg5NCwxOSArNTg4NiwxMSBAQCAtIChm
bG9hdClfZGV2aWNlU2NhbGVGYWN0b3IKIAogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3
aW5kb3ddOwogICAgIE5TV2luZG93ICpob3N0V2luZG93ID0gW3NlbGYgaG9zdFdpbmRvd107Ci0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaWYgKHdpbmRv
dykKICAgICAgICAgcmV0dXJuIFt3aW5kb3cgYmFja2luZ1NjYWxlRmFjdG9yXTsKICAgICBpZiAo
aG9zdFdpbmRvdykKICAgICAgICAgcmV0dXJuIFtob3N0V2luZG93IGJhY2tpbmdTY2FsZUZhY3Rv
cl07CiAgICAgcmV0dXJuIFtbTlNTY3JlZW4gbWFpblNjcmVlbl0gYmFja2luZ1NjYWxlRmFjdG9y
XTsKLSNlbHNlCi0gICAgaWYgKHdpbmRvdykKLSAgICAgICAgcmV0dXJuIFt3aW5kb3cgdXNlclNw
YWNlU2NhbGVGYWN0b3JdOwotICAgIGlmIChob3N0V2luZG93KQotICAgICAgICByZXR1cm4gW2hv
c3RXaW5kb3cgdXNlclNwYWNlU2NhbGVGYWN0b3JdOwotICAgIHJldHVybiBbW05TU2NyZWVuIG1h
aW5TY3JlZW5dIHVzZXJTcGFjZVNjYWxlRmFjdG9yXTsKLSNlbmRpZgogfQogCiBzdGF0aWMgaW5s
aW5lIHVpbnQ2NF90IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2NF90IG51bSkKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDMx
MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisy
MDEzLTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xMjAwNDk+IERlbGV0ZSBjb2RlIGZvciBTbm93IExlb3BhcmQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9DaGVja2VkTWFsbG9jLmNwcDoKKyAgICAgICAgKHByb3RlY3Rpb25PZlJl
Z2lvbik6CisgICAgICAgIChtYWtlTGFyZ2VNYWxsb2NGYWlsU2lsZW50bHkpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJlc2V0RGVm
YXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbToKKyAgICAgICAgKC1bRHVtcFJlbmRlclRyZWVE
cmFnZ2luZ0luZm8gZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOmZvclZpZXc6Y2xh
c3NlczpzZWFyY2hPcHRpb25zOnVzaW5nQmxvY2s6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAodGVzdFBhdGhGcm9tVVJMKToK
KyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
SGVscGVyLm06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRC
dW5kbGVNYWMubW06CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0lu
amVjdGVkQnVuZGxlUGFnZU1hYy5tbToKKyAgICAgICAgKFdUUjo6dGVzdFBhdGhGcm9tVVJMKToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOgorCiAyMDEzLTA4LTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTk5MTUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9DaGVja2VkTWFs
bG9jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQ2hlY2tlZE1h
bGxvYy5jcHAJKHJldmlzaW9uIDE1NDMxMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9D
aGVja2VkTWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBzdGF0aWMg
dm9pZCogY2hlY2tlZFJlYWxsb2MobWFsbG9jX3pvbmVfCiAgICAgcmV0dXJuIHNhdmVkUmVhbGxv
Yyh6b25lLCBwdHIsIHNpemUpOwogfQogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDcwCiBzdGF0aWMgdm1fcHJvdF90IHByb3RlY3Rpb25PZlJlZ2lvbihtYWNoX3Zt
X2FkZHJlc3NfdCBhZGRyZXNzKQogewogICAgIG1hY2hfdm1fc2l6ZV90IHJlZ2lvblNpemUgPSAw
OwpAQCAtNjUsMjggKzY0LDIzIEBAIHN0YXRpYyB2bV9wcm90X3QgcHJvdGVjdGlvbk9mUmVnaW9u
KG1hY2gKICAgICAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gcmVnaW9uSW5mby5wcm90ZWN0aW9u
OwogfQotI2VuZGlmCiAKIHZvaWQgbWFrZUxhcmdlTWFsbG9jRmFpbFNpbGVudGx5KCkKIHsKICAg
ICBtYWxsb2Nfem9uZV90KiB6b25lID0gbWFsbG9jX2RlZmF1bHRfem9uZSgpOwogCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgbWFjaF92bV9hZGRyZXNz
X3QgcGFnZVN0YXJ0ID0gcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KHpvbmUpICYgc3Rh
dGljX2Nhc3Q8dm1fc2l6ZV90Pih+KGdldHBhZ2VzaXplKCkgLSAxKSk7CiAgICAgdm1fcHJvdF90
IGluaXRpYWxQcm90ZWN0aW9uID0gcHJvdGVjdGlvbk9mUmVnaW9uKHBhZ2VTdGFydCk7CiAKICAg
ICB2bV9zaXplX3QgbGVuID0gcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KHpvbmUpIC0g
cGFnZVN0YXJ0ICsgc2l6ZW9mKG1hbGxvY196b25lX3QpOwogICAgIGlmIChtYWNoX3ZtX3Byb3Rl
Y3QobWFjaF90YXNrX3NlbGYoKSwgcGFnZVN0YXJ0LCBsZW4sIDAsIGluaXRpYWxQcm90ZWN0aW9u
IHwgVk1fUFJPVF9XUklURSkpCiAgICAgICAgIENSQVNIKCk7Ci0jZW5kaWYKIAogICAgIHNhdmVk
TWFsbG9jID0gem9uZS0+bWFsbG9jOwogICAgIHNhdmVkUmVhbGxvYyA9IHpvbmUtPnJlYWxsb2M7
CiAgICAgem9uZS0+bWFsbG9jID0gY2hlY2tlZE1hbGxvYzsKICAgICB6b25lLT5yZWFsbG9jID0g
Y2hlY2tlZFJlYWxsb2M7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKICAgICBpZiAobWFjaF92bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHBhZ2VTdGFy
dCwgbGVuLCAwLCBpbml0aWFsUHJvdGVjdGlvbikpCiAgICAgICAgIENSQVNIKCk7Ci0jZW5kaWYK
IH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJl
dmlzaW9uIDE1NDMxMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjE1LDcgKzYxNSw2IEBAIHN0YXRpYyB2b2lkIHJlc2V0
RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWwKICAgICBbZGVmYXVsdHMgc2V0Qm9vbDpZRVMgZm9yS2V5
OldlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07CiAgICAgW2RlZmF1bHRzIHNl
dEJvb2w6WUVTIGZvcktleTpAIlVzZVdlYktpdFdlYkluc3BlY3RvciJdOwogCi0jaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgW2RlZmF1bHRzIHNldE9iamVj
dDpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgIEAi
bm90YXRpb25hbCIsIEAibm90YXRpb25sIiwKICAgICAgICAgQCJtZXNzYWdlIiwgQCJtZXNhZ2Ui
LApAQCAtNjIzLDcgKzYyMiw2IEBAIHN0YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3Rl
bnRWYWwKICAgICAgICAgQCJ3ZWxjb21lIiwgQCJ3ZWxsY29tZSIsCiAgICAgICAgIEAiaGVsbG9c
bndvcmxkIiwgQCJoZWxsb2xmd29ybGQiLAogICAgICAgICBuaWxdIGZvcktleTpAIk5TVGVzdENv
cnJlY3Rpb25EaWN0aW9uYXJ5Il07Ci0jZW5kaWYKIAogICAgIC8vIFNjcm9sbGJhcnMgYXJlIGRy
YXduIGVpdGhlciB1c2luZyBBcHBLaXQgKHdoaWNoIHVzZXMgTlNVc2VyRGVmYXVsdHMpIG9yIHVz
aW5nIEhJVG9vbGJveCAod2hpY2ggdXNlcyBDRlByZWZlcmVuY2VzIC8ga0NGUHJlZmVyZW5jZXNB
bnlBcHBsaWNhdGlvbiAvIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIgLyBrQ0ZQcmVmZXJlbmNl
c0FueUhvc3QpCiAgICAgW2RlZmF1bHRzIHNldE9iamVjdDpAIkRvdWJsZU1heCIgZm9yS2V5OkAi
QXBwbGVTY3JvbGxCYXJWYXJpYW50Il07CkBAIC03MDMsNyArNzAxLDcgQEAgc3RhdGljIHZvaWQg
cmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbAogICAgIC8vIFNvLCB0dXJuIGl0IG9mZiBmb3Ig
bm93LCBidXQgd2UgbWlnaHQgd2FudCB0byB0dXJuIGl0IGJhY2sgb24gc29tZSBkYXkuCiAgICAg
W3ByZWZlcmVuY2VzIHNldFVzZXNQYWdlQ2FjaGU6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDpZRVNdOwotI2lmIFVTRShDQSkgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCisjaWYgVVNFKENBKQogICAgIFtwcmVm
ZXJlbmNlcyBzZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nOllFU107CiAgICAgW3ByZWZl
cmVuY2VzIHNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ6Tk9dOwogI2VuZGlmCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dp
bmdJbmZvLm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsx
MDUsNiBAQCAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkCiAgICAgcmV0
dXJuIG5pbDsKIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogLSAoTlNEcmFnZ2luZ0Zvcm1hdGlvbilkcmFnZ2luZ0Zvcm1hdGlvbgogewogICAgIHJldHVy
biBOU0RyYWdnaW5nRm9ybWF0aW9uRGVmYXVsdDsKQEAgLTE0MCw3ICsxMzksNiBAQCAtICh2b2lk
KWVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uCiB7CiAgICAgLy8gSWdub3JlZC4KIH0K
LSNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIAogQGVu
ZAogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRl
Lm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVM
b2FkRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNiBAQCAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKiljIGxvY2F0aW9uQ2hhCiAgICAgfQogfQogCi0jaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBzdGF0aWMgTlNTdHJpbmcgKnRlc3RQ
YXRoRnJvbVVSTChOU1VSTCogdXJsKQogewogICAgIGlmIChbdXJsIGlzRmlsZVVSTF0pIHsKQEAg
LTE3NiwxOSArMTc1LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAqdGVzdFBhdGhGcm9tVVJMKE5TVVJM
KiAKIAogICAgIHJldHVybiBuaWw7CiB9Ci0jZW5kaWYKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICop
ZnJhbWUKIHsKICAgICBBU1NFUlQoW2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0pOwogCi0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaWYgKCFkb25l
ICYmIFtbc2VuZGVyIG1haW5GcmFtZV0gaXNFcXVhbDpmcmFtZV0pIHsKICAgICAgICAgTlNVUkwg
KnByb3Zpc2lvbmFsTG9hZFVSTCA9IFtbW2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0gaW5p
dGlhbFJlcXVlc3RdIFVSTF07CiAgICAgICAgIGlmIChOU1N0cmluZyAqdGVzdFBhdGggPSB0ZXN0
UGF0aEZyb21VUkwocHJvdmlzaW9uYWxMb2FkVVJMKSkKICAgICAgICAgICAgIFdLU2V0Q3Jhc2hS
ZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oKENGU3RyaW5nUmVmKVtAIkNSQVNI
SU5HIFRFU1Q6ICIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6dGVzdFBhdGhdKTsKICAgICB9Ci0j
ZW5kaWYKIAogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxi
YWNrcygpKSB7CiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiVAIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSIsIFtmcmFtZSBf
ZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdEhlbHBlci5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVyLm0JKHJldmlzaW9uIDE1NDMxMCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0SGVscGVyLm0JKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDggKzQwLDYgQEAKIC8vIHRlc3Qgc2NyaXB0LCBzbyBpdCBjYW4gZG8gdGhlIGpv
YiBmb3IgbXVsdGlwbGUgRHVtcFJlbmRlclRyZWUgd2hpbGUgdGhleSBhcmUKIC8vIHJ1bm5pbmcg
bGF5b3V0IHRlc3RzLgogCi0jaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAotCiBzdGF0aWMgQ0ZVUkxSZWYgc1VzZXJDb2xvclByb2ZpbGVVUkw7CiAKIHN0YXRpYyB2b2lk
IGluc3RhbGxMYXlvdXRUZXN0Q29sb3JQcm9maWxlKCkKQEAgLTEyNCw1OSArMTIyLDYgQEAgc3Rh
dGljIHZvaWQgcmVzdG9yZVVzZXJDb2xvclByb2ZpbGUodm9pZAogICAgIENGUmVsZWFzZShwcm9m
aWxlSW5mbyk7CiB9CiAKLSNlbHNlIC8vIEZvciBTbm93IExlb3BhcmQgYW5kIGJlZm9yZSwgdXNl
IG9sZGVyIENNKiBBUEkuCi0KLWNvbnN0IGNoYXIgY29sb3JQcm9maWxlUGF0aFtdID0gIi9TeXN0
ZW0vTGlicmFyeS9Db2xvclN5bmMvUHJvZmlsZXMvR2VuZXJpYyBSR0IgUHJvZmlsZS5pY2MiOwot
Ci1DTVByb2ZpbGVMb2NhdGlvbiBpbml0aWFsQ29sb3JQcm9maWxlTG9jYXRpb247IC8vIFRoZSBs
b2NUeXBlIGZpZWxkIGlzIGluaXRpYWxpemVkIHRvIDAgd2hpY2ggaXMgdGhlIHNhbWUgYXMgY21O
b1Byb2ZpbGVCYXNlLgotCi1zdGF0aWMgdm9pZCBpbnN0YWxsTGF5b3V0VGVzdENvbG9yUHJvZmls
ZSgpCi17Ci0gICAgLy8gVG8gbWFrZSBzdXJlIHdlIGdldCBjb25zaXN0ZW50IGNvbG9ycyAobm90
IGRlcGVuZGVudCBvbiB0aGUgY2hvc2VuIGNvbG9yCi0gICAgLy8gc3BhY2Ugb2YgdGhlIG1haW4g
ZGlzcGxheSksIHdlIGZvcmNlIHRoZSBnZW5lcmljIFJHQiBjb2xvciBwcm9maWxlLgotICAgIC8v
IFRoaXMgY2F1c2VzIGEgY2hhbmdlIHRoZSB1c2VyIGNhbiBzZWUuCi0gICAgCi0gICAgY29uc3Qg
Q01EZXZpY2VTY29wZSBzY29wZSA9IHsga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJl
ZmVyZW5jZXNDdXJyZW50SG9zdCB9OwotCi0gICAgQ01Qcm9maWxlUmVmIHByb2ZpbGUgPSAwOwot
ICAgIGludCBlcnJvciA9IENNR2V0UHJvZmlsZUJ5QVZJRCgoQ01EaXNwbGF5SURUeXBlKWtDR0Rp
cmVjdE1haW5EaXNwbGF5LCAmcHJvZmlsZSk7Ci0gICAgaWYgKCFlcnJvcikgewotICAgICAgICBV
SW50MzIgc2l6ZSA9IHNpemVvZihpbml0aWFsQ29sb3JQcm9maWxlTG9jYXRpb24pOwotICAgICAg
ICBlcnJvciA9IE5DTUdldFByb2ZpbGVMb2NhdGlvbihwcm9maWxlLCAmaW5pdGlhbENvbG9yUHJv
ZmlsZUxvY2F0aW9uLCAmc2l6ZSk7Ci0gICAgICAgIENNQ2xvc2VQcm9maWxlKHByb2ZpbGUpOwot
ICAgIH0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTlNMb2coQCJGYWlsZWQgdG8gZ2V0IHRo
ZSBjdXJyZW50IGNvbG9yIHByb2ZpbGUuIE1hbnkgcGl4ZWwgdGVzdHMgbWF5IGZhaWwgYXMgYSBy
ZXN1bHQuIEVycm9yOiAlZCIsIChpbnQpZXJyb3IpOwotICAgICAgICBpbml0aWFsQ29sb3JQcm9m
aWxlTG9jYXRpb24ubG9jVHlwZSA9IGNtTm9Qcm9maWxlQmFzZTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENNUHJvZmlsZUxvY2F0aW9uIGxvY2F0aW9uOwotICAgIGxvY2F0aW9uLmxv
Y1R5cGUgPSBjbVBhdGhCYXNlZFByb2ZpbGU7Ci0gICAgc3RybmNweShsb2NhdGlvbi51LnBhdGhM
b2MucGF0aCwgY29sb3JQcm9maWxlUGF0aCwgc2l6ZW9mKGxvY2F0aW9uLnUucGF0aExvYy5wYXRo
KSk7Ci0gICAgZXJyb3IgPSBDTVNldERldmljZVByb2ZpbGUoY21EaXNwbGF5RGV2aWNlQ2xhc3Ms
IChDTURldmljZUlEKWtDR0RpcmVjdE1haW5EaXNwbGF5LCAmc2NvcGUsIGNtRGVmYXVsdFByb2Zp
bGVJRCwgJmxvY2F0aW9uKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTlNMb2coQCJGYWls
ZWQgaW5zdGFsbCB0aGUgR2VuZXJpY1JHQiBjb2xvciBwcm9maWxlLiBNYW55IHBpeGVsIHRlc3Rz
IG1heSBmYWlsIGFzIGEgcmVzdWx0LiBFcnJvcjogJWQiLCAoaW50KWVycm9yKTsKLSAgICAgICAg
aW5pdGlhbENvbG9yUHJvZmlsZUxvY2F0aW9uLmxvY1R5cGUgPSBjbU5vUHJvZmlsZUJhc2U7Ci0g
ICAgfQotfQotCi1zdGF0aWMgdm9pZCByZXN0b3JlVXNlckNvbG9yUHJvZmlsZSh2b2lkKQotewot
ICAgIC8vIFRoaXMgaXMgdXNlZCBhcyBhIHNpZ25hbCBoYW5kbGVyLCBhbmQgdGh1cyB0aGUgY2Fs
bHMgaW50byBDb2xvclN5bmMgYXJlIHVuc2FmZS4KLSAgICAvLyBCdXQgd2UgbWlnaHQgYXMgd2Vs
bCB0cnkgdG8gcmVzdG9yZSB0aGUgdXNlcidzIGNvbG9yIHByb2ZpbGUsIHdlJ3JlIGdvaW5nIGRv
d24gYW55d2F5Li4uCi0gICAgaWYgKGluaXRpYWxDb2xvclByb2ZpbGVMb2NhdGlvbi5sb2NUeXBl
ICE9IGNtTm9Qcm9maWxlQmFzZSkgewotICAgICAgICBjb25zdCBDTURldmljZVNjb3BlIHNjb3Bl
ID0geyBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRIb3N0
IH07Ci0gICAgICAgIGludCBlcnJvciA9IENNU2V0RGV2aWNlUHJvZmlsZShjbURpc3BsYXlEZXZp
Y2VDbGFzcywgKENNRGV2aWNlSUQpa0NHRGlyZWN0TWFpbkRpc3BsYXksICZzY29wZSwgY21EZWZh
dWx0UHJvZmlsZUlELCAmaW5pdGlhbENvbG9yUHJvZmlsZUxvY2F0aW9uKTsKLSAgICAgICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIkZhaWxlZCB0byByZXN0b3JlIGNvbG9yIHBy
b2ZpbGUsIHVzZSBTeXN0ZW0gUHJlZmVyZW5jZXMgLT4gRGlzcGxheXMgLT4gQ29sb3IgdG8gcmVz
ZXQuIEVycm9yOiAlZCIsIChpbnQpZXJyb3IpOwotICAgICAgICB9Ci0gICAgICAgIGluaXRpYWxD
b2xvclByb2ZpbGVMb2NhdGlvbi5sb2NUeXBlID0gY21Ob1Byb2ZpbGVCYXNlOwotICAgIH0KLX0K
LQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHNpbXBsZVNpZ25hbEhhbmRsZXIoaW50IHNpZykKIHsK
ICAgICAvLyBUcnkgdG8gcmVzdG9yZSB0aGUgY29sb3IgcHJvZmlsZSBhbmQgdHJ5IHRvIGdvIGRv
d24gY2xlYW5seQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MjMsMTEgKzkyMyw2IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0V2ViVmlld0VkaXRhYmxlKGJvb2wKIAogc3RhdGljIE5TU3RyaW5nICpTeW5jaHJv
bm91c0xvYWRlclJ1bkxvb3BNb2RlID0gQCJEdW1wUmVuZGVyVHJlZVN5bmNocm9ub3VzTG9hZGVy
UnVuTG9vcE1vZGUiOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAx
MDYwCi1AcHJvdG9jb2wgTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgPE5TT2JqZWN0PgotQGVuZAot
I2VuZGlmCi0KIEBpbnRlcmZhY2UgU3luY2hyb25vdXNMb2FkZXIgOiBOU09iamVjdCA8TlNVUkxD
b25uZWN0aW9uRGVsZWdhdGU+CiB7CiAgICAgTlNTdHJpbmcgKm1fdXNlcm5hbWU7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cGxhdGZv
cm1Jbml0aWFsaXplKAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgICAg
QCJOU092ZXJsYXlTY3JvbGxlcnNFbmFibGVkIiwKICAgICAgICAgQCJBbHdheXMiLCAgICAgICAg
ICAgICAgICAgICAgICAgIEAiQXBwbGVTaG93U2Nyb2xsQmFycyIsCiAgICAgICAgIFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdDpAImVuIl0sICBAIkFwcGxlTGFuZ3VhZ2VzIiwKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOkAibm90YXRpb25hbCIsIEAibm90YXRpb25sIiwg
bmlsXSwgQCJOU1Rlc3RDb3JyZWN0aW9uRGljdGlvbmFyeSIsCi0jZW5kaWYKICAgICAgICAgbmls
XTsKIAogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0
aWxlRG9tYWluOmRpY3QgZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV1RSIHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdURjsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA3MAogc3RhdGljIFN0cmluZyB0ZXN0UGF0aEZyb21VUkwoV0tVUkxSZWYgdXJsKQogewog
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwgPSBhZG9wdENGKFdLVVJMQ29weUNGVVJMKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOwpAQCAtNzAsMTEgKzY5LDkgQEAgc3RhdGljIFN0cmlu
ZyB0ZXN0UGF0aEZyb21VUkwoV0tVUkxSZWYgdQogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQot
I2VuZGlmCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKIHsKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBpZiAoIVdLQnVuZGxlRnJhbWVJ
c01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODcsNyArODQsNiBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6cGxhdGZvcm1EaWRTdGFyCiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHRlc3RQYXRoKTsKICAgICAgICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3Bl
Y2lmaWNJbmZvcm1hdGlvbihidWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>
<flag name="commit-queue"
          id="231145"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209154</attachid>
            <date>2013-08-19 20:55:36 -0700</date>
            <delta_ts>2013-08-19 23:11:31 -0700</delta_ts>
            <desc>Fix non-mac builds</desc>
            <filename>bug-120049-20130819205536.patch</filename>
            <type>text/plain</type>
            <size>103999</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwNDk+IERl
bGV0ZSBjb2RlIGZvciBTbm93IExlb3BhcmQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKFdURjo6
VENNYWxsb2NfVGhyZWFkQ2FjaGU6OkNyZWF0ZUNhY2hlSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHd0Zi9GZWF0dXJlRGVmaW5lcy5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEz
LTA4LTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDAzNj4gW2lPU10gVXBzdHJlYW0gU291cmNlL1dURiBY
Y29kZSBwcm9qZWN0IGZvciBpT1MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAx
NTQzMTApCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTA5OCw5ICs1MDk4LDcgQEAgZXh0ZXJuICJDIiB7CiBtYWxsb2NfaW50cm9zcGVjdGlvbl90
IGpzY29yZV9mYXN0bWFsbG9jX2ludHJvc3BlY3Rpb24gPSB7ICZGYXN0TWFsbG9jWm9uZTo6ZW51
bWVyYXRlLCAmRmFzdE1hbGxvY1pvbmU6Omdvb2RTaXplLCAmRmFzdE1hbGxvY1pvbmU6OmNoZWNr
LCAmRmFzdE1hbGxvY1pvbmU6OnByaW50LAogICAgICZGYXN0TWFsbG9jWm9uZTo6bG9nLCAmRmFz
dE1hbGxvY1pvbmU6OmZvcmNlTG9jaywgJkZhc3RNYWxsb2Nab25lOjpmb3JjZVVubG9jaywgJkZh
c3RNYWxsb2Nab25lOjpzdGF0aXN0aWNzCiAgICAgLCAwIC8vIHpvbmVfbG9ja2VkIHdpbGwgbm90
IGJlIGNhbGxlZCBvbiB0aGUgem9uZSB1bmxlc3MgaXQgYWR2ZXJ0aXNlcyBpdHNlbGYgYXMgdmVy
c2lvbiBmaXZlIG9yIGhpZ2hlci4KLSNpZiBPUyhJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMDcwCiAgICAgLCAwLCAwLCAwLCAwIC8vIFRoZXNlIG1lbWJlcnMgd2ls
bCBub3QgYmUgdXNlZCB1bmxlc3MgdGhlIHpvbmUgYWR2ZXJ0aXNlcyBpdHNlbGYgYXMgdmVyc2lv
biBzZXZlbiBvciBoaWdoZXIuCi0jZW5kaWYKIAogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxNyArMTcwLDEzIEBACiAjZGVmaW5lIEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSAxCiAjZW5kaWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogI2lmICFkZWZpbmVkKEVOQUJMRV9HRVNUVVJFX0VWRU5UUykK
ICNkZWZpbmUgRU5BQkxFX0dFU1RVUkVfRVZFTlRTIDEKICNlbmRpZgotI2VuZGlmCiAKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICNpZiAhZGVmaW5lZChFTkFC
TEVfUlVCQkVSX0JBTkRJTkcpCiAjZGVmaW5lIEVOQUJMRV9SVUJCRVJfQkFORElORyAxCiAjZW5k
aWYKLSNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1NNT09USF9TQ1JPTExJTkcpCiAjZGVm
aW5lIEVOQUJMRV9TTU9PVEhfU0NST0xMSU5HIDEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1
NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc5IEBACisyMDEzLTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwNDk+IERlbGV0ZSBjb2RlIGZvciBT
bm93IExlb3BhcmQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZWxldGUgYWxsIHRoZSBjb2RlIGZvciBNYWMgT1MgMTAuNi4gTm9ib2R5IGJ1aWxkcyBv
biBTbm93IExlb3BhcmQgYXQgdGhpcyBwb2ludC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBh
c3RlV2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgICogcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9CdXNNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFu
aW1hdGlvbnNGcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUxheWVyTWFjLm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjphY2NlbGVyYXRl
c0RyYXdpbmcpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXRBY2NlbGVyYXRlc0RyYXdp
bmcpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1NjYWxlKToKKyAgICAgICAg
KFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChQbGF0Zm9ybUNB
TGF5ZXI6OnN5bmNocm9ub3VzbHlEaXNwbGF5VGlsZXNJblJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyOjpzZXRTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJv
bGxlcjo6c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250
cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhdGg6OnBsYXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldEZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvd0dseXBoc1dpdGhB
ZHZhbmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4
dE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JE
b2N1bWVudE1hcmtlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OmNyZWF0ZVFUTW92aWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmxheWVySG9zdENoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbToKKyAgICAgICAgKGRyYXdMYXllckNvbnRlbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpl
bnN1cmVQbGF0Zm9ybUN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0VtcHR5UHJvdG9j
b2xEZWZpbml0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnJlbGVhc2VNZW1vcnkpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9OU1Njcm9sbGVy
SW1wRGV0YWlscy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vbWVudHVtUGhhc2VGb3JFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpwaGFzZUZvckV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NoYXJlZFRpbWVyTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvbWFjL0h5cGhlbmF0aW9uTWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50ZWRDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
c2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQpOgorCiAyMDEzLTA4LTE5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xMTk5MzA+IGlucHV0W3R5cGU9cmFuZ2VdOiBGaXggYSBjcmFzaCBieSBjaGFuZ2luZyBpbnB1
dCB0eXBlIGluICdpbnB1dCcgZXZlbnQgaGFuZGxlcgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzA1LDIzICsyMzA1LDE3IEBAIF9fWk43V2ViQ29yZTdJbnRTaXplQzFF
Uks3X05TU2l6ZQogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y3X05TU2l6ZUV2CiAjZW5kaWYKIAot
I2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0g
MTA2MAotX3drR2V0TlNFdmVudE1vbWVudHVtUGhhc2UKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0o
SU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIF93a0NBTGF5
ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2sKIF93a0NGVVJMUmVxdWVzdEFsbG93
QWxsUG9zdENhY2hpbmcKIF93a0NHUGF0aEFkZFJvdW5kZWRSZWN0CiBfd2tDcmVhdGVDVFR5cGVz
ZXR0ZXJXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9ucwotI2VuZGlmCiAKLSNpZiAoUExBVEZP
Uk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzApICYmICFQ
TEFURk9STShJT1NfU0lNVUxBVE9SKQorI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogX3dr
SU9TdXJmYWNlQ29udGV4dENyZWF0ZQogX3drSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlCiAj
ZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA3MAorI2lmICFQTEFURk9STShJT1MpCiBfd2tBVkFzc2V0UmVzb2x2ZWRVUkwK
IF93a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZQogX3drU2V0Q3Jhc2hSZXBv
cnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDMxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtOTYyLDcgKzk2Miw2IEBACiAJCTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3
NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzcyQzAwRDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzc0NDU3MEYwREIw
NUZBNTAwQUUwOTkyIC8qIFNWR0dseXBoTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzQ0NTcwRTBEQjA1RkE1MDBBRTA5OTIgLyogU1ZHR2x5cGhN
YXAuaCAqLzsgfTsKIAkJMzc1Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTEx
OUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLzsgfTsKLQkJMzc1Q0QyM0IxMTlENDRF
QTAwQTJBODU5IC8qIEh5cGhlbmF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0
aW9uTWFjLm1tICovOyB9OwogCQkzNzZEQ0NFMTEzQjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzZEQ0NF
MDEzQjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi87IH07CiAJCTM3NzRBQkE1MEZBMjFF
QjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAv
KiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0bWFw
SW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgKi87IH07CkBA
IC0xNjc2LDcgKzE2NzUsNiBAQAogCQk1REE5N0VDRTE2OEU3ODdCMDAwRTM2NzYgLyogU3lzdGVt
VmVyc2lvbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVEQTk3RUNDMTY4RTc4N0IwMDBFMzY3NiAvKiBTeXN0ZW1WZXJzaW9uTWFjLm1tICovOyB9
OwogCQk1REIxQkM2QTEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REIxQkM2ODEwNzE1QTY0
MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggKi87IH07CiAJCTVEQjFCQzZCMTA3MTVBNjQw
MEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEQjFCQzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBU
cmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLzsgfTsKLQkJNURDODdFRjAxMTcxNkRGMjAwMUMw
RTZEIC8qIEVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURDODdFRUYxMTcxNkRGMjAwMUMwRTZEIC8qIEVtcHR5
UHJvdG9jb2xEZWZpbml0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTVERjdGNUMyMEYwMUY5MkEwMDUyNkI0QiAvKiBDU1NQcm9wZXJ0eU5h
bWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTY1ODBFRjA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5o
ICovOyB9OwogCQk1REZFOEY1NjBEMTY0NzdCMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3OEJB
MEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwICovOyB9OwogCQk1REZFOEY1
NzBEMTY0NzdDMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyog
U2NoZWR1bGVkQWN0aW9uLmggKi87IH07CkBAIC03MjYyLDcgKzcyNjAsNiBAQAogCQkzNzU2OUUw
MDEzQUYxNzJDMDBDREJBOEUgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzU2OUUwMjEzQUYxNzJDMDBDREJBOEUg
LyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEh5cGhlbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3NUNEMjM5MTE5RDQ0RUEwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbk1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEh5cGhlbmF0aW9uTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzZEQ0NFMDEzQjRGOTY2MDAyRUJF
RkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3MkIwOTUxNjUzNTg1
NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRlc3RSZXF1
ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDQ1LDcgKzgwNDIs
NiBAQAogCQk1REE5N0VDQzE2OEU3ODdCMDAwRTM2NzYgLyogU3lzdGVtVmVyc2lvbk1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVZlcnNpb25NYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0
OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VHJhbnNmb3JtU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQjFCQzY5
MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1REM4N0VFRjExNzE2REYyMDAxQzBFNkQgLyog
RW1wdHlQcm90b2NvbERlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RkM3REMyNkNGRTI1NjMyMDBCODVBRTUgLyogSlNFdmVudFRhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2MjZDREUwQzExNDA0MjRDMDAxRTVBNjggLyogU3BhdGlhbE5hdmln
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhdGlhbE5h
dmlnYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MjZDREUwRDExNDA0
MjRDMDAxRTVBNjggLyogU3BhdGlhbE5hdmlnYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3BhdGlhbE5hdmlnYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0NTM4LDcgKzE0NTM0LDYgQEAKIAkJCQlBNzk1NDYzRDBCNUM0QzgwMDA3QjQzOEYg
LyogRHJhZ0RhdGFNYWMubW0gKi8sCiAJCQkJQTdDRkIzRDQwQjdFRDExODAwNzBDMzJEIC8qIERy
YWdJbWFnZU1hYy5tbSAqLywKIAkJCQlFMUJBNjZGMDE3NDJCRDg2MDBDMjAyNTEgLyogRHluYW1p
Y0xpbmtlckludGVycG9zaW5nLmggKi8sCi0JCQkJNURDODdFRUYxMTcxNkRGMjAwMUMwRTZEIC8q
IEVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oICovLAogCQkJCTFDQTE5RTAzMERDMjU1OTUwMDY1
QTk5NCAvKiBFdmVudExvb3BNYWMubW0gKi8sCiAJCQkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERG
IC8qIEZpbGVTeXN0ZW1NYWMubW0gKi8sCiAJCQkJOTM1QzQ3NkMwOUFDNEQ2MzAwQTZBQUI0IC8q
IEZvdW5kYXRpb25FeHRyYXMuaCAqLywKQEAgLTE4NTEzLDcgKzE4NTA4LDYgQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUIyQUZGQzg1MEQwMEE1REYwMDMwMDc0RCAvKiBjaGFyYWN0ZXItc2V0cy50
eHQgKi8sCiAJCQkJQjJDM0Q5RkEwRDAwNkMxRDAwRUY2RjI2IC8qIENoYXJzZXREYXRhLmggKi8s
Ci0JCQkJMzc1Q0QyMzkxMTlENDRFQTAwQTJBODU5IC8qIEh5cGhlbmF0aW9uTWFjLm1tICovLAog
CQkJCUY1OTczRERFMTVDRkIyMDMwMDI3RjgwNCAvKiBMb2NhbGVNYWMuaCAqLywKIAkJCQlGNTk3
M0RERjE1Q0ZCMjAzMDAyN0Y4MDQgLyogTG9jYWxlTWFjLm1tICovLAogCQkJCUIyQUZGQzg2MEQw
MEE1REYwMDMwMDc0RCAvKiBtYWMtZW5jb2RpbmdzLnR4dCAqLywKQEAgLTIxNjc5LDcgKzIxNjcz
LDYgQEAKIAkJCQlBOENGRjZCRTBBMTU2MTE4MDAwQTQyMzQgLyogRWxsaXBzaXNCb3guaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI1NTk5QTUwRDAwRDhCQTAwQkI4MjVDIC8qIEVtcHR5
Q2xpZW50cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNURDODdFRjAxMTcxNkRGMjAwMUMwRTZEIC8q
IEVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQzIw
QTE5NDVEMDAwQThFRjVGIC8qIEVudGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQzAw
QTE5NDVEMDAwQThFRjVGIC8qIEVudGl0eVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODk4Nzg1NUExMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJpZXNDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTE4OSw3ICsyNTE4Miw2IEBACiAJCQkJMEI4QzU2RDQwRjI4NjI3RjAwMDUwMkUx
IC8qIEhUVFBIZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzIwQ0U5MjNB
MTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MUE2N0NC
MTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTM3NUNEMjNCMTE5RDQ0RUEwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbk1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3RTQwMjhGMTNBNjk2RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTI2RTZCQjBBMkUzQjEyMDA1QzI5RkEgLyogSWNvbkRhdGFi
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjk1Mzk3MTMyOUEzQzgwMEI5MkQwNCAvKiBJ
Y29uRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyNSArNzgs
OSBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvCiAgICAgYm9vbCBj
aG9vc2VQbGFpblRleHQ7CiAgICAgCiAgICAgbV9mcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChOU0dlbmVyYWxQYm9hcmQpOwotI2lmIFBMQVRGT1JNKElPUykg
fHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudCgm
bV9mcmFtZSwgcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9vc2VQbGFpblRleHQpOwogICAgIGlm
IChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRv
ckluc2VydEFjdGlvblBhc3RlZCkpCiAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwg
Y2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCksIGZhbHNlKTsKLSNlbHNl
Ci0gICAgLy8gTWFpbCBpcyBpZ25vcmluZyB0aGUgZnJhbWVudCBwYXNzZWQgdG8gdGhlIGRlbGVn
YXRlIGFuZCBjcmVhdGVzIGEgbmV3IG9uZS4KLSAgICAvLyBXZSB3YW50IHRvIGF2b2lkIGNyZWF0
aW5nIHRoZSBmcmFnbWVudCB0d2ljZS4KLSAgICBpZiAoYXBwbGljYXRpb25Jc0FwcGxlTWFpbCgp
KSB7Ci0gICAgICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudChOVUxMLCByYW5nZSwgRWRpdG9y
SW5zZXJ0QWN0aW9uUGFzdGVkKSkgewotICAgICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudCgmbV9mcmFtZSwgcmFu
Z2UsIGFsbG93UGxhaW5UZXh0LCBjaG9vc2VQbGFpblRleHQpOwotICAgICAgICAgICAgaWYgKGZy
YWdtZW50KQotICAgICAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwgY2FuU21h
cnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCksIGZhbHNlKTsKLSAgICAgICAgfSAg
ICAgICAgCi0gICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+ZnJh
Z21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KCZtX2ZyYW1lLCByYW5nZSwgYWxs
b3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4dCk7Ci0gICAgICAgIGlmIChmcmFnbWVudCAmJiBz
aG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvblBh
c3RlZCkpCi0gICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVw
bGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxzZSk7Ci0gICAgfQotI2VuZGlmCiAg
ICAgbV9mcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJp
bmcoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMyLDE0ICs3MzIsNiBA
QCBzdGF0aWMgYm9vbCBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yCiB9CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCi0j
ZGVmaW5lIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNIDEKLSNlbHNlCi0jZGVm
aW5lIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNIDAKLSNlbmRpZgotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFNVUFBPUlRTX1RPR0dMRV9WSURFT19GVUxM
U0NSRUVOIDEKICNlbHNlCiAjZGVmaW5lIFNVUFBPUlRTX1RPR0dMRV9WSURFT19GVUxMU0NSRUVO
IDAKQEAgLTg5MCwyMiArODgyLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1l
LT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rl
ZFRleHQoKSk7CiAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRp
Y3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlv
bmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5n
KSk7CiAKLSNpZiBJTkNMVURFX1NQT1RMSUdIVF9DT05URVhUX01FTlVfSVRFTQotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKFNlYXJjaFNwb3RsaWdodEl0ZW0sIG1fY29udGV4dE1lbnUu
Z2V0KCkpOwotI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRp
Y3Rpb25hcnlJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgotI2VuZGlmCiAKICNp
ZiAhUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNlYXJjaFdl
Ykl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShNQUMpICYmIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNCi0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oTG9va1VwSW5EaWN0aW9uYXJ5SXRlbSwgbV9j
b250ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFy
YXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0jZW5kaWYKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKENvcHlJdGVtLCBtX2NvbnRleHRNZW51
LmdldCgpKTsKQEAgLTEwMzAsMjIgKzEwMTMsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1l
LT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rl
ZFRleHQoKSk7CiAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5
SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNv
bnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCi0j
aWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVYVF9NRU5VX0lURU0KLSAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oU2VhcmNoU3BvdGxpZ2h0SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0jZWxzZQog
ICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRleHRN
ZW51LmdldCgpKTsKICNlbmRpZgotI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oR1RLKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShTZWFyY2hXZWJJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQo
KSk7CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykgJiYgSU5DTFVERV9TUE9UTElHSFRfQ09O
VEVYVF9NRU5VX0lURU0KLSAgICAgICAgICAgIGFwcGVuZEl0ZW0oTG9va1VwSW5EaWN0aW9uYXJ5
SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0gICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBh
cmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwotI2VuZGlmCiAgICAgICAgIH0KIAog
ICAgICAgICBhcHBlbmRJdGVtKEN1dEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9u
IDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw2IEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFN0cmkKICNlbmRpZgogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIHN0
YXRpYyBTdHJpbmcgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oY29uc3QgU3RyaW5n
JiBvcmlnaW5hbCkKIHsKICAgICBpZiAob3JpZ2luYWwuaXNFbXB0eSgpKQpAQCAtODUsNyArODQs
NiBAQCBzdGF0aWMgU3RyaW5nIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lCiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyh0
cmltbWVkLCBtYXhOdW1iZXJPZkdyYXBoZW1lQ2x1c3RlcnNJbkxvb2t1cE1lbnVJdGVtKTsKICAg
ICByZXR1cm4gbnVtYmVyT2ZDaGFyYWN0ZXJzID09IHRyaW1tZWQubGVuZ3RoKCkgPyB0cmltbWVk
IDogdHJpbW1lZC5sZWZ0KG51bWJlck9mQ2hhcmFjdGVycykgKyBlbGxpcHNpczsKIH0KLSNlbmRp
ZgogCiBTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpCiB7CkBAIC0yNDMsNyArMjQxLDcgQEAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZwogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKIHsKLSNpZiBQTEFURk9STShNQUMpICYmIChQTEFURk9S
TShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MCkKKyNpZiBQ
TEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzZWFyY2hQcm92aWRlck5h
bWUgPSBhZG9wdENGKHdrQ29weURlZmF1bHRTZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKCkpOwog
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiU2VhcmNoIHdp
dGggJUAiLCAiU2VhcmNoIHdpdGggc2VhcmNoIHByb3ZpZGVyIGNvbnRleHQgbWVudSBpdGVtIHdp
dGggcHJvdmlkZXIgbmFtZSBpbnNlcnRlZCIpLCBzZWFyY2hQcm92aWRlck5hbWUuZ2V0KCkpOwog
I2Vsc2UKQEAgLTI1MywxNyArMjUxLDEyIEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFy
Y2hXZWIoKQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNv
bnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExB
VEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLSAg
ICBVTlVTRURfUEFSQU0oc2VsZWN0ZWRTdHJpbmcpOwotICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQg
bWVudSBpdGVtIik7Ci0jZWxzZQogI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShz
ZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250
ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQo
KSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnDxzZWxlY3Rp
b24+4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiku
cmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShz
ZWxlY3RlZFN0cmluZykpOwogI2VuZGlmCi0jZW5kaWYKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ09wZW5MaW5rKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNyArNDMsNyBAQCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFu
CiB7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAorI2lmICFQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPUykKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKSB7IH0K
IHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7IH0KQEAgLTUyLDUgKzUy
LDUgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbQogdm9pZCBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkgeyB9CiAKICNlbmRpZgotIAor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9CdXNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvQnVzTWFjLm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9CdXNNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDExICs0OSw3IEBAIFBhc3NSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpsb2Fk
UGxhdGYKICAgICAKICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNs
YXNzOltXZWJDb3JlQXVkaW9CdW5kbGVDbGFzcyBjbGFzc11dOwogICAgIE5TVVJMICphdWRpb0Zp
bGVVUkwgPSBbYnVuZGxlIFVSTEZvclJlc291cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0
cmluZzpuYW1lXSB3aXRoRXh0ZW5zaW9uOkAid2F2IiBzdWJkaXJlY3Rvcnk6QCJhdWRpbyJdOwot
I2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0g
MTA2MAotICAgIE5TRGF0YVJlYWRpbmdPcHRpb25zIG9wdGlvbnMgPSBOU0RhdGFSZWFkaW5nTWFw
cGVkOwotI2Vsc2UKICAgICBOU0RhdGFSZWFkaW5nT3B0aW9ucyBvcHRpb25zID0gTlNEYXRhUmVh
ZGluZ01hcHBlZElmU2FmZTsKLSNlbmRpZgogICAgIE5TRGF0YSAqYXVkaW9EYXRhID0gW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6YXVkaW9GaWxlVVJMIG9wdGlvbnM6b3B0aW9ucyBlcnJv
cjpuaWxdOwogCiAgICAgaWYgKGF1ZGlvRGF0YSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZp
c2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA2LDcgKzIxMDYsNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pCiAgICAgaW50IG51bUFuaW1hdGlv
bnMgPSBpc01hdHJpeEFuaW1hdGlvbiA/IDEgOiBvcGVyYXRpb25zLT5zaXplKCk7CiAKICAgICBi
b29sIHJldmVyc2VBbmltYXRpb25MaXN0ID0gdHJ1ZTsKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiAh
UExBVEZPUk0oV0lOKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
KyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKQogICAgICAgICAvLyBPbGQgdmVy
c2lvbnMgb2YgQ29yZSBBbmltYXRpb24gYXBwbHkgYW5pbWF0aW9ucyBpbiByZXZlcnNlIG9yZGVy
ICg8cmRhcjovL3Byb2JsZW0vNzA5NTYzOD4pIHNvIHdlIG5lZWQgdG8gZmxpcCB0aGUgbGlzdC4K
ICAgICAgICAgLy8gdG8gYmUgbm9uLWFkZGl0aXZlLiBGb3IgYmluYXJ5IGNvbXBhdGliaWxpdHks
IHRoZSBjdXJyZW50IHZlcnNpb24gb2YgQ29yZSBBbmltYXRpb24gcHJlc2VydmVzIHRoaXMgYmVo
YXZpb3IgZm9yIGFwcGxpY2F0aW9ucyBsaW5rZWQKICAgICAgICAgLy8gb24gb3IgYmVmb3JlIFNu
b3cgTGVvcGFyZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW50VHJlZSgpIGNv
bnN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIChQTEFURk9STShJT1MpIHx8IF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MCkKKyNpZiBQTEFURk9STShNQUMp
CiAgICAgdm9pZCBzeW5jaHJvbm91c2x5RGlzcGxheVRpbGVzSW5SZWN0KGNvbnN0IEZsb2F0UmVj
dCYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQkocmV2aXNpb24g
MTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRm
b3JtQ0FMYXllck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAwLDIwICsxMDAsMTYgQEAgLSAo
dm9pZClzZXRPd25lcjooUGxhdGZvcm1DQUxheWVyKilvd25lcgogCiBAZW5kCiAKLSNpZiBQTEFU
Rk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogQGlu
dGVyZmFjZSBDQVRpbGVkTGF5ZXIoR3JhcGhpY3NMYXllckNBUHJpdmF0ZSkKIC0gKHZvaWQpZGlz
cGxheUluUmVjdDooQ0dSZWN0KXIgbGV2ZWxPZkRldGFpbDooaW50KWxvZCBvcHRpb25zOihOU0Rp
Y3Rpb25hcnkgKilkaWN0OwogLSAoQk9PTCljYW5EcmF3Q29uY3VycmVudGx5OwogLSAodm9pZClz
ZXRDYW5EcmF3Q29uY3VycmVudGx5OihCT09MKWZsYWc7CiBAZW5kCi0jZW5kaWYKIAogQGludGVy
ZmFjZSBDQUxheWVyKFByaXZhdGUpCiAtICh2b2lkKXNldENvbnRlbnRzQ2hhbmdlZDsKLSNpZiBQ
TEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAog
LSAodm9pZClzZXRBY2NlbGVyYXRlc0RyYXdpbmc6KEJPT0wpZmxhZzsKIC0gKEJPT0wpYWNjZWxl
cmF0ZXNEcmF3aW5nOwotI2VuZGlmCiBAZW5kCiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBs
YXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKQEAgLTYwMSwyMiAr
NTk3LDE0IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRNYXNrc1RvQm91bmRzKGIKIAogYm9v
bCBQbGF0Zm9ybUNBTGF5ZXI6OmFjY2VsZXJhdGVzRHJhd2luZygpIGNvbnN0CiB7Ci0jaWYgUExB
VEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAg
ICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgYWNjZWxlcmF0ZXNEcmF3aW5nXTsKLSNlbHNlCi0gICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRBY2Nl
bGVyYXRlc0RyYXdpbmcoYm9vbCBhY2NlbGVyYXRlc0RyYXdpbmcpCiB7Ci0jaWYgUExBVEZPUk0o
SU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBbbV9sYXllci5nZXQoKSBzZXRBY2NlbGVyYXRl
c0RyYXdpbmc6YWNjZWxlcmF0ZXNEcmF3aW5nXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShhY2NlbGVyYXRlc0RyYXdpbmcpOwotI2VuZGlm
CiB9CiAKIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRzKCkgY29uc3QKQEAgLTgw
OSwyMiArNzk3LDE0IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRUaW1lT2Zmc2V0KENGVGkK
IAogZmxvYXQgUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1NjYWxlKCkgY29uc3QKIHsKLSNpZiBQ
TEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAog
ICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBjb250ZW50c1NjYWxlXTsKLSNlbHNlCi0gICAgcmV0
dXJuIDE7Ci0jZW5kaWYKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzU2Nh
bGUoZmxvYXQgdmFsdWUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
ICAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50c1NjYWxlOnZhbHVlXTsKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5k
aWYKIH0KIAogVGlsZWRCYWNraW5nKiBQbGF0Zm9ybUNBTGF5ZXI6OnRpbGVkQmFja2luZygpCkBA
IC04MzYsNyArODE2LDYgQEAgVGlsZWRCYWNraW5nKiBQbGF0Zm9ybUNBTGF5ZXI6OnRpbGVkQmFj
awogICAgIHJldHVybiBbdGlsZWRCYWNraW5nTGF5ZXIgdGlsZWRCYWNraW5nXTsKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcw
CiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c3luY2hyb25vdXNseURpc3BsYXlUaWxlc0luUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKG1fbGF5ZXJUeXBlICE9IExheWVyVHlw
ZVdlYlRpbGVkTGF5ZXIpCkBAIC04NTEsNyArODMwLDYgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnN5bmNocm9ub3VzbHlEaXNwbAogICAgIFt0aWxlZExheWVyIHNldENhbkRyYXdDb25jdXJyZW50
bHk6b2xkQ2FuRHJhd0NvbmN1cnJlbnRseV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogfQotI2VuZGlmCiAKIEFWUGxheWVyTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcjo6cGxheWVyTGF5
ZXIoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1RpbGVDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5tbQkocmV2aXNpb24gMTU0MzEwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsOSBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKIEBpbnRlcmZhY2UgQ0FMYXllciAoV2ViQ0FMYXllckRldGFpbHMpCiAtICh2
b2lkKXNldEFjY2VsZXJhdGVzRHJhd2luZzooQk9PTClmbGFnOwogQGVuZAotI2VuZGlmCiAKIEBp
bnRlcmZhY2UgV2ViVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllciA6IENBTGF5ZXIgewogICAg
IFdlYkNvcmU6OlRpbGVDb250cm9sbGVyKiBfdGlsZUNvbnRyb2xsZXI7CkBAIC0yNDMsNyArMjQx
LDYgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0U2NhbGUoQ0dGbG9hdCBzYwogICAgIGlmICht
X3NjYWxlID09IHNjYWxlICYmIG1fZGV2aWNlU2NhbGVGYWN0b3IgPT0gZGV2aWNlU2NhbGVGYWN0
b3IpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgVmVjdG9yPEZsb2F0UmVjdD4gZGlydHlS
ZWN0czsKIAogICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKQEAg
LTI2NCwxMiArMjYxLDEwIEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldFNjYWxlKENHRmxvYXQg
c2MKICAgICB9CiAKICAgICBwbGF0Zm9ybUxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJE
aWRDcmVhdGVUaWxlcyhkaXJ0eVJlY3RzKTsKLSNlbmRpZgogfQogCiB2b2lkIFRpbGVDb250cm9s
bGVyOjpzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9vbCBhY2NlbGVyYXRlc0RyYXdpbmcpCiB7Ci0j
aWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzAKICAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcgPT0gYWNjZWxlcmF0ZXNEcmF3aW5nKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTI3OSw5ICsyNzQsNiBAQCB2b2lkIFRpbGVDb250cm9sbGVy
OjpzZXRBY2NlbGVyYXRlc0RyYXdpCiAgICAgICAgIGNvbnN0IFRpbGVJbmZvJiB0aWxlSW5mbyA9
IGl0LT52YWx1ZTsKICAgICAgICAgW3RpbGVJbmZvLmxheWVyLmdldCgpIHNldEFjY2VsZXJhdGVz
RHJhd2luZzptX2FjY2VsZXJhdGVzRHJhd2luZ107CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oYWNjZWxlcmF0ZXNEcmF3aW5nKTsKLSNlbmRpZgogfQogCiB2b2lkIFRpbGVDb250cm9s
bGVyOjpzZXRUaWxlc09wYXF1ZShib29sIG9wYXF1ZSkKQEAgLTEwMjIsMTAgKzEwMTQsOCBAQCBS
ZXRhaW5QdHI8V2ViVGlsZUxheWVyPiBUaWxlQ29udHJvbGxlcjo6CiAgICAgW2xheWVyLmdldCgp
IHNldE5hbWU6QCJUaWxlIl07CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgW2xheWVyLmdldCgpIHNldENv
bnRlbnRzU2NhbGU6bV9kZXZpY2VTY2FsZUZhY3Rvcl07CiAgICAgW2xheWVyLmdldCgpIHNldEFj
Y2VsZXJhdGVzRHJhd2luZzptX2FjY2VsZXJhdGVzRHJhd2luZ107Ci0jZW5kaWYKIAogICAgIFts
YXllciBzZXROZWVkc0Rpc3BsYXldOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCShyZXZpc2lv
biAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckRhdGFDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDE4ICs2Miw2IEBAIEltYWdlQnVm
ZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEkKIAogI2lmIFVTRShBQ0NFTEVSQVRFKQog
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwNzAKLXN0YXRpYyBib29s
IGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KCkgeyByZXR1cm4gdHJ1ZTsgfQotI2Vsc2UKLS8v
IFRoZSB2SW1hZ2UgdW5wcmVtdWx0aXBseSByb3V0aW5lIGhhZCBhIHJvdW5kaW5nIGJ1ZyBiZWZv
cmUgMTAuNi43IDxyZGFyOi8vcHJvYmxlbS84NjMxNTQ4Pgotc3RhdGljIGJvb2wgaGF2ZVZJbWFn
ZVJvdW5kaW5nRXJyb3JGaXgoKQotewotICAgIFNJbnQzMiB2ZXJzaW9uOwotICAgIHN0YXRpYyBi
b29sIHJlc3VsdCA9IChHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0g
bm9FcnIgJiYgdmVyc2lvbiA+IDB4MTA2Nik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRp
ZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTA3MAotCiAjaWYgVVNFKElP
U1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHN0YXRpYyB2b2lkIGNvbnZlcnRTY2FubGlu
ZSh2b2lkKiBkYXRhLCBzaXplX3QgdGlsZU51bWJlciwgYm9vbCBwcmVtdWx0aXBseSkKIHsKQEAg
LTE3Niw3ICsxNjQsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZl
CiAgICAgICAgIHNyY1Jvd3MgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2Rh
dGEpICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CiAgICAgICAgIAog
I2lmIFVTRShBQ0NFTEVSQVRFKQotICAgICAgICBpZiAodW5tdWx0aXBsaWVkICYmIGhhdmVWSW1h
Z2VSb3VuZGluZ0Vycm9yRml4KCkpIHsKKyAgICAgICAgaWYgKHVubXVsdGlwbGllZCkgewogICAg
ICAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CiAgICAgICAgICAgICBzcmMuaGVpZ2h0ID0gaGVp
Z2h0LnVuc2FmZUdldCgpOwogICAgICAgICAgICAgc3JjLndpZHRoID0gd2lkdGgudW5zYWZlR2V0
KCk7CkBAIC0zOTksNyArMzg3LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoVWlu
dDhDbGFtcAogICAgICAgICBkZXN0Um93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hh
cio+KG1fZGF0YSkgKyAoZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQpLnVuc2Fm
ZUdldCgpOwogICAgICAgICAKICNpZiAgVVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIGlmIChoYXZl
VkltYWdlUm91bmRpbmdFcnJvckZpeCgpICYmIHVubXVsdGlwbGllZCkgeworICAgICAgICBpZiAo
dW5tdWx0aXBsaWVkKSB7CiAgICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKICAgICAgICAg
ICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQudW5zYWZlR2V0KCk7CiAgICAgICAgICAgICBzcmMud2lk
dGggPSB3aWR0aC51bnNhZmVHZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAkocmV2aXNpb24gMTU0
MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiAoUExBVEZPUk0oTUFD
KSAmJiBVU0UoQ0EpICYmIChQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA3MCkpCisjaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoQ0EpCiAjZGVmaW5l
IFdURl9VU0VfSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFIDEKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHJl
dmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dGhDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNiBAQCB2b2lkIFBhdGg6OmFk
ZEFyY1RvKGNvbnN0IEZsb2F0UG9pbnQmIHAxCiAKIHZvaWQgUGF0aDo6cGxhdGZvcm1BZGRQYXRo
Rm9yUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRv
cExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0
U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1
cykKIHsKLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAogICAgIGJvb2wgZXF1YWxXaWR0aHMgPSAodG9wTGVmdFJhZGl1cy53aWR0aCgp
ID09IHRvcFJpZ2h0UmFkaXVzLndpZHRoKCkgJiYgdG9wUmlnaHRSYWRpdXMud2lkdGgoKSA9PSBi
b3R0b21MZWZ0UmFkaXVzLndpZHRoKCkgJiYgYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpID09IGJv
dHRvbVJpZ2h0UmFkaXVzLndpZHRoKCkpOwogICAgIGJvb2wgZXF1YWxIZWlnaHRzID0gKHRvcExl
ZnRSYWRpdXMuaGVpZ2h0KCkgPT0gYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSAmJiBib3R0b21M
ZWZ0UmFkaXVzLmhlaWdodCgpID09IHRvcFJpZ2h0UmFkaXVzLmhlaWdodCgpICYmIHRvcFJpZ2h0
UmFkaXVzLmhlaWdodCgpID09IGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgpKTsKIApAQCAtMjYz
LDcgKzI2Miw2IEBAIHZvaWQgUGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QKICAg
ICAgICAgd2tDR1BhdGhBZGRSb3VuZGVkUmVjdChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwgMCwgcmVj
dCwgdG9wTGVmdFJhZGl1cy53aWR0aCgpLCB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgogCiAgICAgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0
KHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBi
b3R0b21SaWdodFJhZGl1cyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1t
CShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2
LDYgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShOU0ZvbgogCiAgICAgQ0dG
b250UmVmIGNnRm9udCA9IDA7CiAgICAgbG9hZEZvbnQobnNGb250LCBzaXplLCBtX2ZvbnQsIGNn
Rm9udCk7Ci0gICAgCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNzAKICAgICB7CiAgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRy
YWl0cyA9IENURm9udEdldFN5bWJvbGljVHJhaXRzKHRvQ1RGb250UmVmKG1fZm9udCkpOwogICAg
ICAgICBtX2lzQ29sb3JCaXRtYXBGb250ID0gdHJhaXRzICYga0NURm9udENvbG9yR2x5cGhzVHJh
aXQ7CkBAIC02NSw3ICs2Myw2IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEo
TlNGb24KICAgICAgICAgbV9pc0NvbXBvc2l0ZUZvbnRSZWZlcmVuY2UgPSB0cmFpdHMgJiBrQ1RG
b250Q29tcG9zaXRlVHJhaXQ7CiAjZW5kaWYKICAgICB9Ci0jZW5kaWYKIAogICAgIGlmIChtX2Zv
bnQpCiAgICAgICAgIENGUmV0YWluKG1fZm9udCk7CkBAIC0xMjcsNyArMTI0LDYgQEAgdm9pZCBG
b250UGxhdGZvcm1EYXRhOjpzZXRGb250KE5TRm9udCAqZgogICAgIGxvYWRGb250KG1fZm9udCwg
bV9zaXplLCBsb2FkZWRGb250LCBjZ0ZvbnQpOwogCiAgICAgbV9jZ0ZvbnQgPSBhZG9wdENGKGNn
Rm9udCk7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKICAgICB7CiAgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9
IENURm9udEdldFN5bWJvbGljVHJhaXRzKHRvQ1RGb250UmVmKG1fZm9udCkpOwogICAgICAgICBt
X2lzQ29sb3JCaXRtYXBGb250ID0gdHJhaXRzICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7CkBA
IC0xMzUsNyArMTMxLDYgQEAgdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRGb250KE5TRm9udCAq
ZgogICAgICAgICBtX2lzQ29tcG9zaXRlRm9udFJlZmVyZW5jZSA9IHRyYWl0cyAmIGtDVEZvbnRD
b21wb3NpdGVUcmFpdDsKICNlbmRpZgogICAgIH0KLSNlbmRpZgogICAgIG1fQ1RGb250ID0gMDsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRNYWMubW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MywxOCArNTMsNiBAQCBi
b29sIEZvbnQ6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLS8vIENURm9udEdldFZlcnRpY2FsVHJhbnNsYXRpb25zRm9yR2x5cGhzIGlzIGRpZmZl
cmVudCBvbiBTbm93IExlb3BhcmQuICBJdCByZXR1cm5zIHZhbHVlcyBmb3IgYSBmb250LXNpemUg
b2YgMQotLy8gd2l0aG91dCB1bml0c1BlckVtIGFwcGxpZWQuICBXZSBoYXZlIHRvIGFwcGx5IGEg
dHJhbnNmb3JtIHRoYXQgc2NhbGVzIHVwIHRvIHRoZSBwb2ludCBzaXplIGFuZCB0aGF0IGFsc28g
Ci0vLyBkaXZpZGVzIGJ5IHVuaXRzUGVyRW0uCi1zdGF0aWMgYm9vbCBoYXNCcm9rZW5DVEZvbnRH
ZXRWZXJ0aWNhbFRyYW5zbGF0aW9uc0ZvckdseXBocygpCi17Ci0jaWYgIVBMQVRGT1JNKElPUykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDYwCi0gICAgcmV0dXJuIHRy
dWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBzdGF0aWMgdm9pZCBz
aG93R2x5cGhzV2l0aEFkdmFuY2VzKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBTaW1w
bGVGb250RGF0YSogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGds
eXBocywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICgh
Y291bnQpCkBAIC05MSwxNSArNzksNiBAQCBzdGF0aWMgdm9pZCBzaG93R2x5cGhzV2l0aEFkdmFu
Y2VzKGNvbnN0CiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIHJ1bk1hdHJpeCA9IENHQWZmaW5l
VHJhbnNmb3JtQ29uY2F0KHNhdmVkTWF0cml4LCByb3RhdGVMZWZ0VHJhbnNmb3JtKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBydW5NYXRyaXgpOwogCi0gICAgICAg
IENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zbGF0aW9uc1RyYW5zZm9ybTsKLSAgICAgICAgaWYgKGhh
c0Jyb2tlbkNURm9udEdldFZlcnRpY2FsVHJhbnNsYXRpb25zRm9yR2x5cGhzKCkpIHsKLSAgICAg
ICAgICAgIHRyYW5zbGF0aW9uc1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZShwbGF0
Zm9ybURhdGEubV9zaXplLCAwLCAwLCBwbGF0Zm9ybURhdGEubV9zaXplLCAwLCAwKTsKLSAgICAg
ICAgICAgIHRyYW5zbGF0aW9uc1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KHRy
YW5zbGF0aW9uc1RyYW5zZm9ybSwgcm90YXRlTGVmdFRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBD
R0Zsb2F0IHVuaXRzUGVyRW0gPSBDR0ZvbnRHZXRVbml0c1BlckVtKHBsYXRmb3JtRGF0YS5jZ0Zv
bnQoKSk7Ci0gICAgICAgICAgICB0cmFuc2xhdGlvbnNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybUNvbmNhdCh0cmFuc2xhdGlvbnNUcmFuc2Zvcm0sIENHQWZmaW5lVHJhbnNmb3JtTWFrZVNj
YWxlKDEgLyB1bml0c1BlckVtLCAxIC8gdW5pdHNQZXJFbSkpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHRyYW5zbGF0aW9uc1RyYW5zZm9ybSA9IHJvdGF0ZUxlZnRUcmFuc2Zvcm07Ci0K
ICAgICAgICAgVmVjdG9yPENHU2l6ZSwgMjU2PiB0cmFuc2xhdGlvbnMoY291bnQpOwogICAgICAg
ICBDVEZvbnRHZXRWZXJ0aWNhbFRyYW5zbGF0aW9uc0ZvckdseXBocyhwbGF0Zm9ybURhdGEuY3RG
b250KCksIGdseXBocywgdHJhbnNsYXRpb25zLmRhdGEoKSwgY291bnQpOwogCkBAIC0xMDcsMTcg
Kzg2LDE1IEBAIHN0YXRpYyB2b2lkIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QKIAogICAg
ICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSAr
IGZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNlbGluZSkgLSBm
b250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIENHU2l6ZSB0cmFuc2xhdGlvbiA9
IENHU2l6ZUFwcGx5QWZmaW5lVHJhbnNmb3JtKHRyYW5zbGF0aW9uc1tpXSwgdHJhbnNsYXRpb25z
VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIENHU2l6ZSB0cmFuc2xhdGlvbiA9IENHU2l6ZUFwcGx5
QWZmaW5lVHJhbnNmb3JtKHRyYW5zbGF0aW9uc1tpXSwgcm90YXRlTGVmdFRyYW5zZm9ybSk7CiAg
ICAgICAgICAgICBwb3NpdGlvbnNbaV0gPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0oQ0dQ
b2ludE1ha2UocG9zaXRpb24ueCAtIHRyYW5zbGF0aW9uLndpZHRoLCBwb3NpdGlvbi55ICsgdHJh
bnNsYXRpb24uaGVpZ2h0KSwgdHJhbnNmb3JtKTsKICAgICAgICAgICAgIHBvc2l0aW9uLnggKz0g
YWR2YW5jZXNbaV0ud2lkdGg7CiAgICAgICAgICAgICBwb3NpdGlvbi55ICs9IGFkdmFuY2VzW2ld
LmhlaWdodDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0
bWFwRm9udCgpKQogICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc0F0UG9zaXRpb25zKGNv
bnRleHQsIGdseXBocywgcG9zaXRpb25zLmRhdGEoKSwgY291bnQpOwotI2lmIFBMQVRGT1JNKElP
UykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIENURm9udERyYXdHbHlwaHMocGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBn
bHlwaHMsIHBvc2l0aW9ucy5kYXRhKCksIGNvdW50LCBjb250ZXh0KTsKLSNlbmRpZgogICAgICAg
ICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNvbnRleHQsIHNhdmVkTWF0cml4KTsKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpKQpAQCAt
MTI1LDEwICsxMDIsOCBAQCBzdGF0aWMgdm9pZCBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNvbnN0
CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0
aW9ucyIKICAgICAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY29udGV4
dCwgZ2x5cGhzLCBhZHZhbmNlcywgY291bnQpOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBv
cAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDcwCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIENURm9udERyYXdHbHlwaHMocGxhdGZv
cm1EYXRhLmN0Rm9udCgpLCBnbHlwaHMsIHBvc2l0aW9ucy5kYXRhKCksIGNvdW50LCBjb250ZXh0
KTsKLSNlbmRpZgogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCShyZXZpc2lv
biAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1lbgogICAgICAgICAgICAgcGF0dGVybkNv
bG9yID0gZ3JhbW1hclBhdHRlcm5Db2xvcjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzApCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAvLyBU
byBzdXBwb3J0IGNvcnJlY3Rpb24gcGFuZWwuCiAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXJB
dXRvY29ycmVjdGlvblJlcGxhY2VtZW50TGluZVN0eWxlOgogICAgICAgICBjYXNlIERvY3VtZW50
TWFya2VyRGljdGF0aW9uQWx0ZXJuYXRpdmVzTGluZVN0eWxlOgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTMsMTIgKzM5Myw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNy
ZWF0ZVFUTW8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGVjdG9yOkBzZWxlY3RvcihkaWRFbmQ6KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lOlFUTW92aWVEaWRFbmROb3RpZmljYXRpb24gCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDptX3F0TW92
aWUuZ2V0KCldOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAot
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9v
YmpjT2JzZXJ2ZXIuZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGVjdG9yOkBzZWxlY3RvcihsYXllckhvc3RDaGFuZ2VkOikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOkAiV2ViS2l0TGF5ZXJI
b3N0Q2hhbmdlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0Om5pbF07Ci0jZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgbWFpblRocmVhZFNldE5l
ZWRzRGlzcGxheShpZCBzZWxmLCBTRUwpCkBAIC0xMjI4LDM4ICsxMjIyLDkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6ZGlkRW5kKCkKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAK
LXN0YXRpYyBib29sIGxheWVySXNEZXNjZW5kZW50T2YoUGxhdGZvcm1MYXllciogY2hpbGQsIFBs
YXRmb3JtTGF5ZXIqIGRlc2NlbmRlbnQpCi17Ci0gICAgaWYgKCFjaGlsZCB8fCAhZGVzY2VuZGVu
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZG8gewotICAgICAgICBpZiAoY2hpbGQg
PT0gZGVzY2VuZGVudCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gd2hpbGUoKGNo
aWxkID0gW2NoaWxkIHN1cGVybGF5ZXJdKSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5k
aWYKLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bGF5ZXJIb3N0Q2hhbmdlZChQbGF0
Zm9ybUxheWVyKiByb290TGF5ZXIpCiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA9PSAxMDYwCi0gICAgaWYgKCFyb290TGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChsYXllcklzRGVzY2VuZGVudE9mKG1fcXRWaWRlb0xheWVyLmdldCgpLCByb290TGF5ZXIp
KSB7Ci0gICAgICAgIC8vIFdlIG93biBhIGNoaWxkIGxheWVyIG9mIGEgbGF5ZXIgd2hpY2ggaGFz
IHN3aXRjaGVkIGNvbnRleHRzLiAgCi0gICAgICAgIC8vIFRlYXIgZG93biBvdXIgbGF5ZXIsIGFu
ZCBzZXQgbV92aXNpYmxlIHRvIGZhbHNlLCBzbyB0aGF0IHRoZSAKLSAgICAgICAgLy8gbmV4dCB0
aW1lIHNldFZpc2libGUodHJ1ZSkgaXMgY2FsbGVkLCB0aGUgbGF5ZXIgd2lsbCBiZSByZS0KLSAg
ICAgICAgLy8gY3JlYXRlZCBpbiB0aGUgY29ycmVjdCBjb250ZXh0LgotICAgICAgICB0ZWFyRG93
blZpZGVvUmVuZGVyaW5nKCk7Ci0gICAgICAgIG1fdmlzaWJsZSA9IGZhbHNlOwotICAgIH0KLSNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHJvb3RMYXllcik7Ci0jZW5kaWYKIH0KICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVy
Lm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViTGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDYgQEAgdm9pZCBk
cmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udAogI2VuZGlmCiAgICAgVGhlbWVNYWM6
OnNldEZvY3VzUmluZ0NsaXBSZWN0KGZvY3VzUmluZ0NsaXBSZWN0KTsKIAotI2lmIFBMQVRGT1JN
KElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgY29u
c3QgZmxvYXQgd2FzdGVkU3BhY2VUaHJlc2hvbGQgPSAwLjc1ZjsKICAgICBjb25zdCB1bnNpZ25l
ZCBtYXhSZWN0c1RvUGFpbnQgPSA1OwogCkBAIC0xMTksMTEgKzExOCw2IEBAIHZvaWQgZHJhd0xh
eWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnQKICAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxh
dGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGVuY2xvc2luZ0ludFJl
Y3QoY2xpcEJvdW5kcykpOwogICAgIH0KIAotI2Vsc2UKLSAgICBJbnRSZWN0IGNsaXAoZW5jbG9z
aW5nSW50UmVjdChjbGlwQm91bmRzKSk7Ci0gICAgbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxh
eWVyUGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNsaXApOwotI2VuZGlmCi0KICAgICBU
aGVtZU1hYzo6c2V0Rm9jdXNSaW5nQ2xpcFJlY3QoRmxvYXRSZWN0KCkpOwogCiAgICAgW05TR3Jh
cGhpY3NDb250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRlXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODQsMTMg
Kzg0LDcgQEAgdm9pZCBDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29ucwogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpIYW5kOgotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gW05TQ3Vy
c29yIHBvaW50aW5nSGFuZEN1cnNvcl07Ci0jZWxzZQotICAgICAgICAvLyBUaGUgcG9pbnRpbmdI
YW5kQ3Vyc29yIGZyb20gTlNDdXJzb3IgZG9lcyBub3QgaGF2ZSBhIHNoYWRvdyBvbgotICAgICAg
ICAvLyBvbGRlciB2ZXJzaW9ucyBvZiBPUyBYLCBzbyB1c2Ugb3VyIG93biBjdXN0b20gY3Vyc29y
LgotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImxpbmtDdXJz
b3IiLCA2LCAxKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpJ
QmVhbToKQEAgLTk4LDEzMyArOTIsNzUgQEAgdm9pZCBDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vy
c29yKCkgY29ucwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpXYWl0OgotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gd2tDdXJzb3IoIkJ1c3lCdXRDbGlja2FibGUiKTsKLSNlbHNlCi0gICAgICAg
IG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigid2FpdEN1cnNvciIsIDcsIDcp
OwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkhlbHA6Ci0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIG1fcGxhdGZv
cm1DdXJzb3IgPSB3a0N1cnNvcigiSGVscCIpOwogICAgICAgICBpZiAobV9wbGF0Zm9ybUN1cnNv
cikKICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBjcmVhdGVOYW1lZEN1cnNvcigiaGVscEN1cnNvciIsIDgsIDgpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgQ3Vyc29yOjpNb3ZlOgogICAgIGNhc2UgQ3Vyc29yOjpNaWRkbGVQYW5uaW5n
OgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBt
X3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIk1vdmUiKTsKLSNlbHNlCi0gICAgICAgIG1fcGxh
dGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigibW92ZUN1cnNvciIsIDcsIDcpOwotI2Vu
ZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkVhc3RSZXNpemU6CiAgICAg
Y2FzZSBDdXJzb3I6OkVhc3RQYW5uaW5nOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6
ZUVhc3QiKTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1
cnNvcigiZWFzdFJlc2l6ZUN1cnNvciIsIDE0LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aFJlc2l6ZToKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhQ
YW5uaW5nOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAg
ICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6ZU5vcnRoIik7Ci0jZWxzZQot
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoIm5vcnRoUmVzaXpl
Q3Vyc29yIiwgNywgMSk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNv
cjo6Tm9ydGhFYXN0UmVzaXplOgogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aEVhc3RQYW5uaW5nOgot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6ZU5vcnRoZWFzdCIpOwotI2Vsc2UKLSAgICAg
ICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJub3J0aEVhc3RSZXNpemVD
dXJzb3IiLCAxNCwgMSk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNv
cjo6Tm9ydGhXZXN0UmVzaXplOgogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aFdlc3RQYW5uaW5nOgot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6ZU5vcnRod2VzdCIpOwotI2Vsc2UKLSAgICAg
ICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJub3J0aFdlc3RSZXNpemVD
dXJzb3IiLCAwLCAwKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29y
OjpTb3V0aFJlc2l6ZToKICAgICBjYXNlIEN1cnNvcjo6U291dGhQYW5uaW5nOgotI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vy
c29yID0gd2tDdXJzb3IoIlJlc2l6ZVNvdXRoIik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3Jt
Q3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoInNvdXRoUmVzaXplQ3Vyc29yIiwgNywgMTQpOwot
I2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OlNvdXRoRWFzdFJlc2l6
ZToKICAgICBjYXNlIEN1cnNvcjo6U291dGhFYXN0UGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdr
Q3Vyc29yKCJSZXNpemVTb3V0aGVhc3QiKTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJz
b3IgPSBjcmVhdGVOYW1lZEN1cnNvcigic291dGhFYXN0UmVzaXplQ3Vyc29yIiwgMTQsIDE0KTsK
LSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpTb3V0aFdlc3RSZXNp
emU6CiAgICAgY2FzZSBDdXJzb3I6OlNvdXRoV2VzdFBhbm5pbmc6Ci0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSB3
a0N1cnNvcigiUmVzaXplU291dGh3ZXN0Iik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vy
c29yID0gY3JlYXRlTmFtZWRDdXJzb3IoInNvdXRoV2VzdFJlc2l6ZUN1cnNvciIsIDEsIDE0KTsK
LSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpXZXN0UmVzaXplOgog
ICAgIGNhc2UgQ3Vyc29yOjpXZXN0UGFubmluZzoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNzAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJS
ZXNpemVXZXN0Iik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFt
ZWRDdXJzb3IoIndlc3RSZXNpemVDdXJzb3IiLCAxLCA3KTsKLSNlbmRpZgogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aFNvdXRoUmVzaXplOgotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
d2tDdXJzb3IoIlJlc2l6ZU5vcnRoU291dGgiKTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1D
dXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigibm9ydGhTb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDcp
OwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkVhc3RXZXN0UmVz
aXplOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAg
ICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIlJlc2l6ZUVhc3RXZXN0Iik7Ci0jZWxzZQot
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImVhc3RXZXN0UmVz
aXplQ3Vyc29yIiwgNywgNyk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1
cnNvcjo6Tm9ydGhFYXN0U291dGhXZXN0UmVzaXplOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3Io
IlJlc2l6ZU5vcnRoZWFzdFNvdXRod2VzdCIpOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1
cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3Ii
LCA3LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpOb3J0
aFdlc3RTb3V0aEVhc3RSZXNpemU6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSB3a0N1cnNvcigiUmVzaXplTm9y
dGh3ZXN0U291dGhlYXN0Iik7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3Jl
YXRlTmFtZWRDdXJzb3IoIm5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvciIsIDcsIDcpOwot
I2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkNvbHVtblJlc2l6ZToK
QEAgLTIzNiwxOSArMTcyLDEzIEBAIHZvaWQgQ3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcigp
IGNvbnMKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6VmVydGljYWxUZXh0Ogot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gW05TQ3Vyc29yIElCZWFtQ3Vyc29yRm9yVmVydGljYWxMYXlvdXRdOwot
I2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJ2ZXJ0
aWNhbFRleHRDdXJzb3IiLCA3LCA3KTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQ3Vyc29yOjpDZWxsOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA3MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIkNlbGwiKTsKICAgICAg
ICAgaWYgKG1fcGxhdGZvcm1DdXJzb3IpCiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAg
ICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImNlbGxDdXJzb3IiLCA3
LCA3KTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTI1NywxOSArMTg3LDExIEBAIHZvaWQgQ3Vyc29y
OjplbnN1cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnMKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEN1cnNvcjo6QWxpYXM6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDcwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSB3a0N1cnNvcigiTWFrZUFsaWFzIik7Ci0j
ZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoImFsaWFz
Q3Vyc29yIiwgMTEsIDMpOwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJz
b3I6OlByb2dyZXNzOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gd2tDdXJzb3IoIkJ1c3lCdXRDbGlja2FibGUi
KTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigi
cHJvZ3Jlc3NDdXJzb3IiLCAzLCAyKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQ3Vyc29yOjpOb0Ryb3A6CkBAIC0yODksMjAgKzIxMSwxNiBAQCB2b2lkIEN1cnNvcjo6ZW5z
dXJlUGxhdGZvcm1DdXJzb3IoKSBjb25zCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJz
b3I6Olpvb21JbjoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
ICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IHdrQ3Vyc29yKCJab29tSW4iKTsKICAgICAgICAg
aWYgKG1fcGxhdGZvcm1DdXJzb3IpCiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAgICAg
ICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoInpvb21JbkN1cnNvciIsIDcs
IDcpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpab29tT3V0OgotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBtX3BsYXRmb3Jt
Q3Vyc29yID0gd2tDdXJzb3IoIlpvb21PdXQiKTsKICAgICAgICAgaWYgKG1fcGxhdGZvcm1DdXJz
b3IpCiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gY3JlYXRlTmFtZWRDdXJzb3IoInpvb21PdXRDdXJzb3IiLCA3LCA3KTsKICAgICAgICAgYnJl
YWs7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9FbXB0eVByb3RvY29sRGVm
aW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRW1w
dHlQcm90b2NvbERlZmluaXRpb25zLmgJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmIGRlZmluZWQoX19PQkpDX18pCi0KLSNkZWZpbmUgRU1QVFlfUFJP
VE9DT0woTkFNRSkgXAotQHByb3RvY29sIE5BTUUgPE5TT2JqZWN0PiBcCi1AZW5kCi0KLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPT0gMTA2MAotCi1FTVBUWV9QUk9UT0NPTChO
U1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSkKLUVNUFRZX1BST1RPQ09MKE5TVVJMRG93bmxvYWREZWxl
Z2F0ZSkKLQotI2VuZGlmCi0KLSN1bmRlZiBFTVBUWV9QUk9UT0NPTAotCi0jZW5kaWYgLyogZGVm
aW5lZChfX09CSkNfXykgKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2ltcG9ydCA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbmFsLmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKKyNpZiAhUExBVEZPUk0o
SU9TKQogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8bm90aWZ5
Lmg+CiAjZW5kaWYKQEAgLTQ4LDggKzQ4LDYgQEAgdXNpbmcgc3RkOjptYXg7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwCi0KICNpZiAhUExBVEZPUk0oSU9TKQogc3RhdGljIGRpc3BhdGNo
X3NvdXJjZV90IF9jYWNoZV9ldmVudF9zb3VyY2UgPSAwOwogc3RhdGljIGRpc3BhdGNoX3NvdXJj
ZV90IF90aW1lcl9ldmVudF9zb3VyY2UgPSAwOwpAQCAtMTc3LDYgKzE3NSw1IEBAIHZvaWQgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3IKICNlbmRpZgogICAgIFdURjo6cmVsZWFz
ZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRh
aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xs
ZXJJbXBEZXRhaWxzLmgJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNiAr
MjksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAvLyBQdWJsaWMgQVBJcyBub3QgYXZhaWxh
YmxlIG9uIHZlcnNpb25zIG9mIE1hYyBvbiB3aGljaCB3ZSBidWlsZAotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA9PSAxMDYwCi1lbnVtIHsKLSAgICBOU1Njcm9sbGVyU3R5bGVM
ZWdhY3kgICAgICAgPSAwLAotICAgIE5TU2Nyb2xsZXJTdHlsZU92ZXJsYXkgICAgICA9IDEKLX07
Ci10eXBlZGVmIE5TSW50ZWdlciBOU1Njcm9sbGVyU3R5bGU7Ci0KLWVudW0gewotICAgIE5TU2Ny
b2xsZXJLbm9iU3R5bGVEZWZhdWx0ID0gMCwKLSAgICBOU1Njcm9sbGVyS25vYlN0eWxlRGFyayA9
IDEsCi0gICAgTlNTY3JvbGxlcktub2JTdHlsZUxpZ2h0ID0gMgotfTsKLXR5cGVkZWYgTlNJbnRl
Z2VyIE5TU2Nyb2xsZXJLbm9iU3R5bGU7Ci0jZW5kaWYKLQotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA9PSAxMDYwCi1AaW50ZXJmYWNlIE5TU2Nyb2xsZXIoTlNPYmplY3QpCi0r
IChOU1Njcm9sbGVyU3R5bGUpcHJlZmVycmVkU2Nyb2xsZXJTdHlsZTsKLUBlbmQKLSNlbmRpZgog
CiBAaW50ZXJmYWNlIE5TT2JqZWN0IChTY3JvbGxiYXJQYWludGVyKQogKyAoaWQpc2Nyb2xsZXJJ
bXBXaXRoU3R5bGU6KE5TU2Nyb2xsZXJTdHlsZSluZXdTY3JvbGxlclN0eWxlIGNvbnRyb2xTaXpl
OihOU0NvbnRyb2xTaXplKW5ld0NvbnRyb2xTaXplIGhvcml6b250YWw6KEJPT0wpaG9yaXpvbnRh
bCByZXBsYWNpbmdTY3JvbGxlckltcDooaWQpcHJldmlvdXM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCShy
ZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1F
dmVudEZhY3RvcnlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNiBAQCBzdGF0
aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QCiB7CiAgICAgdWludDMyX3QgcGhh
c2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYg
TlNFdmVudFBoYXNlQmVnYW4pCiAgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlQmVnYW47CiAgICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZVN0
YXRpb25hcnkpCkBAIC0xNjgsMjkgKzE2NywxMiBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50
UGhhc2UgbW9tZW50dW1QCiAgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
RW5kZWQ7CiAgICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNl
bGxlZCkKICAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7
Ci0jZWxzZQotICAgIHN3aXRjaCAod2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZShldmVudCkpIHsK
LSAgICBjYXNlIHdrRXZlbnRQaGFzZU5vbmU6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VOb25lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZUJl
Z2FuOgotICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2Ugd2tFdmVudFBoYXNlQ2hhbmdlZDoKLSAgICAgICAgcGhhc2Ug
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2Ugd2tFdmVudFBoYXNlRW5kZWQ6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50
UGhhc2VFbmRlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotI2VuZGlmCiAKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKIH0KIAogc3RhdGlj
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCiB7
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgdWludDMy
X3QgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7IAogICAgIGlmIChbZXZlbnQg
cGhhc2VdICYgTlNFdmVudFBoYXNlQmVnYW4pCiAgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlQmVnYW47CkBAIC0yMDgsMTAgKzE5MCw2IEBAIHN0YXRpYyBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZSBwaGFzZUZvckUKICNlbmRpZgogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFzZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShldmVudCk7Ci0gICAgcmV0dXJuIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZTsKLSNlbmRp
ZgogfQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkocmV2aXNpb24gMTU0MzEw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JN
YWMuaCIKIAogI2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2luY2x1ZGUgIkVtcHR5UHJv
dG9jb2xEZWZpbml0aW9ucy5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJO
U1Njcm9sbGVySW1wRGV0YWlscy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50Lmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NoYXJlZFRpbWVyTWFjLm1t
CShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hhcmVk
VGltZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw2IEBAIHN0YXRpYyBDRlJ1
bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsKIHN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJl
ZEZ1bmN0aW9uKSgpOwogc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwg
dm9pZCopOwogCi0jaWYgIWRlZmluZWQoSU9LSVRfV0lUSE9VVF9MSUJESVNQQVRDSCkgJiYgIVBM
QVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID09IDEwNjAKLWV4
dGVybiAiQyIgdm9pZCBJT05vdGlmaWNhdGlvblBvcnRTZXREaXNwYXRjaFF1ZXVlKElPTm90aWZp
Y2F0aW9uUG9ydFJlZiBub3RpZnksIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUpOwotI2VuZGlmCi0K
IGNsYXNzIFBvd2VyT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvd2VyT2Jz
ZXJ2ZXIpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw3ICs1OSw3IEBAIHR5cGVkZWYgVUludDMyIEZNRm9udDsKIHR5cGVkZWYgRk1G
b250IEFUU1VGb250SUQ7CiB0eXBlZGVmIFVJbnQxNiBBVFNHbHlwaFJlZjsKIAotI2lmIFBMQVRG
T1JNKE1BQykgJiYgVVNFKENBKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKKyNpZiBQTEFURk9STShNQUMpICYmIFVTRShDQSkKIHR5cGVkZWYgc3RydWN0IF9fSU9T
dXJmYWNlICpJT1N1cmZhY2VSZWY7CiAjZW5kaWYKIApAQCAtMTExLDkgKzExMSw3IEBAIGV4dGVy
biAiQyIgewogLy8gSW4gYWxwaGFiZXRpY2FsIG9yZGVyLgogCiBleHRlcm4gdm9pZCAoKndrQWR2
YW5jZURlZmF1bHRCdXR0b25QdWxzZUFuaW1hdGlvbikoTlNCdXR0b25DZWxsICopOwotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogZXh0ZXJuIHZvaWQgKCp3a0NB
TGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5ZXIgKiwgQ0dDb250
ZXh0UmVmLCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci0jZW5kaWYKIAogZXh0ZXJuIEJP
T0wgKCp3a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKShDR0NvbnRleHRSZWYpOwogdHlw
ZWRlZiBlbnVtIHsKQEAgLTIyMiwyMCArMjIwLDcgQEAgZXh0ZXJuIGJvb2wgKCp3a0dldFZlcnRp
Y2FsR2x5cGhzRm9yQ2hhcgogCiBleHRlcm4gQk9PTCAoKndrVXNlU2hhcmVkTWVkaWFVSSkoKTsK
IAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogZXh0ZXJuIHZv
aWQqIHdrR2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4OwotI2Vsc2UKLWV4dGVybiBD
RkluZGV4ICgqd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXgpKENGU3RyaW5nUmVm
IHN0cmluZywgQ0ZJbmRleCBpbmRleCk7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgd2tFdmVudFBo
YXNlTm9uZSA9IDAsCi0gICAgd2tFdmVudFBoYXNlQmVnYW4gPSAxLAotICAgIHdrRXZlbnRQaGFz
ZUNoYW5nZWQgPSAyLAotICAgIHdrRXZlbnRQaGFzZUVuZGVkID0gMywKLX0gd2tFdmVudFBoYXNl
OwotCi1leHRlcm4gaW50ICgqd2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZSkoTlNFdmVudCAqKTsK
LSNlbmRpZgogCiBleHRlcm4gQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclBy
b3ZpZGVyKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENG
SW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZv
aWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKik7CiAKQEAg
LTI1MCw4ICsyMzUsNiBAQCB0eXBlZGVmIGludCB3a0NURm9udFRyYW5zZm9ybU9wdGlvbnM7CiBl
eHRlcm4gYm9vbCAoKndrQ1RGb250VHJhbnNmb3JtR2x5cGhzKShDVEZvbnRSZWYgZm9udCwgQ0dH
bHlwaCBnbHlwaHNbXSwgQ0dTaXplIGFkdmFuY2VzW10sIENGSW5kZXggY291bnQsIHdrQ1RGb250
VHJhbnNmb3JtT3B0aW9ucyBvcHRpb25zKTsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0KIGV4dGVybiBDVFR5cGVzZXR0ZXJSZWYgKCp3a0Ny
ZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKShjb25zdCBVbmlD
aGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwg
Q0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25z
dCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMp
OwogCiBleHRlcm4gQ0dTaXplICgqd2tDVFJ1bkdldEluaXRpYWxBZHZhbmNlKShDVFJ1blJlZik7
CkBAIC0yNzEsOCArMjU0LDYgQEAgZXh0ZXJuIHZvaWQgKCp3a1NldENyYXNoUmVwb3J0QXBwbGlj
YXRpbwogZXh0ZXJuIE5TVVJMICooKndrQVZBc3NldFJlc29sdmVkVVJMKShBVkFzc2V0Kik7CiAK
IGV4dGVybiBOU0N1cnNvciAqKCp3a0N1cnNvcikoY29uc3QgY2hhciopOwotCi0jZW5kaWYKICAg
ICAKICNpZiBQTEFURk9STShNQUMpCiBleHRlcm4gTlNBcnJheSAqKCp3a1NwZWVjaFN5bnRoZXNp
c0dldFZvaWNlSWRlbnRpZmllcnMpKHZvaWQpOwpAQCAtMjkwLDExICsyNzEsNyBAQCBleHRlcm4g
Q0ZUeXBlUmVmICgqd2tDcmVhdGVBWFRleHRNYXJrZXIpCiBleHRlcm4gQk9PTCAoKndrR2V0Qnl0
ZXNGcm9tQVhUZXh0TWFya2VyKShDRlR5cGVSZWYgdGV4dE1hcmtlciwgdm9pZCAqYnl0ZXMsIHNp
emVfdCBsZW5ndGgpOwogZXh0ZXJuIEFYVUlFbGVtZW50UmVmICgqd2tDcmVhdGVBWFVJRWxlbWVu
dFJlZikoaWQgZWxlbWVudCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID09IDEwNjAKLXR5cGVkZWYgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZjsKLSNlbHNlCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFn
ZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7Ci0jZW5kaWYKIGV4dGVybiBDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmICgqd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pKENGU3RyaW5n
UmVmKTsKIGV4dGVybiBOU1VSTFJlcXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vz
c2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7CiAKQEAgLTMyNSwx
NCArMzAyLDExIEBAIGV4dGVybiB2b2lkICgqd2tDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWUKIGV4
dGVybiB2b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Np
b25SZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpOwogI2VuZGlmCiBleHRlcm4gdm9pZCAoKndr
U2V0TWV0YWRhdGFVUkwpKE5TU3RyaW5nICp1cmxTdHJpbmcsIE5TU3RyaW5nICpyZWZlcnJlciwg
TlNTdHJpbmcgKnBhdGgpOwotICAgIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAorCiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogCiBleHRlcm4gZGlz
cGF0Y2hfc291cmNlX3QgKCp3a0NyZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlKSh2
b2lkKTsKIAotI2VuZGlmCi0KICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKIGV4dGVybiBkaXNwYXRjaF9zb3VyY2VfdCAoKndrQ3JlYXRlTWVtb3J5U3RhdHVzUHJl
c3N1cmVDcml0aWNhbERpc3BhdGNoT25NYWluUXVldWUpKHZvaWQpOwogI2VuZGlmCkBAIC0zNDEs
MTMgKzMxNSw5IEBAIGV4dGVybiBkaXNwYXRjaF9zb3VyY2VfdCAoKndrQ3JlYXRlTWVtb3IKIGV4
dGVybiBib29sICgqd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZUxpb24pKHZvaWQpOwog
I2VuZGlmCiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIGV4
dGVybiB2b2lkICgqd2tDR1BhdGhBZGRSb3VuZGVkUmVjdCkoQ0dNdXRhYmxlUGF0aFJlZiBwYXRo
LCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSogbWF0cml4LCBDR1JlY3QgcmVjdCwgQ0dGbG9hdCBj
b3JuZXJXaWR0aCwgQ0dGbG9hdCBjb3JuZXJIZWlnaHQpOwotI2VuZGlmCiAKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIGV4dGVybiB2b2lkICgqd2tDRlVSTFJl
cXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKShDRlVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCiAKICNp
ZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCiBleHRlcm4gQk9PTCAoKndrRmlsdGVySXNNYW5hZ2Vk
U2Vzc2lvbikodm9pZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDkgKzI4LDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgogCiB2b2lkICgqd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uKShOU0J1
dHRvbkNlbGwgKik7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcw
CiB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxh
eWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7
Ci0jZW5kaWYKIEJPT0wgKCp3a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKShDR0NvbnRl
eHRSZWYpOwogdm9pZCAoKndrQ0dDb250ZXh0UmVzZXRDbGlwKShDR0NvbnRleHRSZWYpOwogI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MApAQCAtMTMwLDEyICsxMjgs
NyBAQCB2b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMCiB2b2lkICgqd2tH
ZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKShDR0ZvbnRSZWYsIGNvbnN0IFVuaUNoYXJbXSwgQ0dHbHlw
aFtdLCBzaXplX3QpOwogYm9vbCAoKndrR2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKShD
VEZvbnRSZWYsIGNvbnN0IFVuaUNoYXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOwogCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiB2b2lkKiB3a0dldEh5cGhlbmF0
aW9uTG9jYXRpb25CZWZvcmVJbmRleDsKLSNlbHNlCi1DRkluZGV4ICgqd2tHZXRIeXBoZW5hdGlv
bkxvY2F0aW9uQmVmb3JlSW5kZXgpKENGU3RyaW5nUmVmIHN0cmluZywgQ0ZJbmRleCBpbmRleCk7
Ci1pbnQgKCp3a0dldE5TRXZlbnRNb21lbnR1bVBoYXNlKShOU0V2ZW50ICopOwotI2VuZGlmCiAK
IENUTGluZVJlZiAoKndrQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcikoY29uc3QgVW5p
Q2hhciogKCpwcm92aWRlKShDRkluZGV4IHN0cmluZ0luZGV4LCBDRkluZGV4KiBjaGFyQ291bnQs
IENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRlcywgdm9pZCopLCB2b2lkICgqZGlzcG9zZSkoY29u
c3QgVW5pQ2hhciogY2hhcnMsIHZvaWQqKSwgdm9pZCopOwogI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA5MApAQCAtMTQ0LDcgKzEzNyw2IEBAIGJvb2wgKCp3a0NURm9u
dFRyYW5zZm9ybUdseXBocykoQ1RGb250UmUKIAogQ0dTaXplICgqd2tDVFJ1bkdldEluaXRpYWxB
ZHZhbmNlKShDVFJ1blJlZik7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKIENUVHlwZXNldHRlclJlZiAoKndrQ3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNo
YXJQcm92aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBz
dHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0
ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiks
IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CiAKIENHQ29udGV4dFJlZiAoKndrSU9T
dXJmYWNlQ29udGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKQEAgLTE2MSw4
ICsxNTMsNiBAQCBOU1VSTCAqKCp3a0FWQXNzZXRSZXNvbHZlZFVSTCkoQVZBc3NldCopCiAKIE5T
Q3Vyc29yICooKndrQ3Vyc29yKShjb25zdCBjaGFyKik7CiAKLSNlbmRpZgotCiAjaWYgUExBVEZP
Uk0oTUFDKQogTlNBcnJheSAqKCp3a1NwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMp
KHZvaWQpOwogTlNTdHJpbmcgKigqd2tTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVu
dGlmaWVyRm9yTG9jYWxlKShOU0xvY2FsZSAqKTsKQEAgLTE5OSw5ICsxODksNyBAQCB2b2lkICgq
d2tTZXRNZXRhZGF0YVVSTCkoTlNTdHJpbmcgKnVybFN0CiAKIHZvaWQoKndrRGVzdHJveVJlbmRl
cmluZ1Jlc291cmNlcykodm9pZCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKIGRpc3BhdGNoX3NvdXJjZV90ICgqd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0
Y2hPbk1haW5RdWV1ZSkodm9pZCk7Ci0jZW5kaWYKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA5MAogZGlzcGF0Y2hfc291cmNlX3QgKCp3a0NyZWF0ZU1lbW9yeVN0
YXR1c1ByZXNzdXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1ZXVlKSh2b2lkKTsKQEAgLTIxMSwx
MyArMTk5LDkgQEAgZGlzcGF0Y2hfc291cmNlX3QgKCp3a0NyZWF0ZU1lbW9yeVN0YXR1cwogYm9v
bCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVMaW9uKSh2b2lkKTsKICNlbmRpZgog
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiB2b2lkICgqd2tD
R1BhdGhBZGRSb3VuZGVkUmVjdCkoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBjb25zdCBDR0FmZmlu
ZVRyYW5zZm9ybSogbWF0cml4LCBDR1JlY3QgcmVjdCwgQ0dGbG9hdCBjb3JuZXJXaWR0aCwgQ0dG
bG9hdCBjb3JuZXJIZWlnaHQpOwotI2VuZGlmCiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNzAKIHZvaWQgKCp3a0NGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hp
bmcpKENGVVJMUmVxdWVzdFJlZik7Ci0jZW5kaWYKIAogI2lmIFVTRShDT05URU5UX0ZJTFRFUklO
RykKIEJPT0wgKCp3a0ZpbHRlcklzTWFuYWdlZFNlc3Npb24pKHZvaWQpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsU3Rv
cmFnZS5oIgogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbXBvcnQgIkVtcHR5
UHJvdG9jb2xEZWZpbml0aW9ucy5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJlYW1NYWMuaCIKICNp
bXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVz
dE1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMCAr
ODgsOCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgICAg
IG1faHR0cE1ldGhvZCA9IG1ldGhvZDsKICAgICBtX2FsbG93Q29va2llcyA9IFttX25zUmVxdWVz
dC5nZXQoKSBIVFRQU2hvdWxkSGFuZGxlQ29va2llc107CiAKLSNpZiBQTEFURk9STShJT1MpIHx8
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmIChSZXNvdXJj
ZVJlcXVlc3Q6Omh0dHBQaXBlbGluaW5nRW5hYmxlZCgpKQogICAgICAgICBtX3ByaW9yaXR5ID0g
dG9SZXNvdXJjZUxvYWRQcmlvcml0eSh3a0dldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoW21fbnNS
ZXF1ZXN0LmdldCgpIF9DRlVSTFJlcXVlc3RdKSk7Ci0jZW5kaWYKIAogICAgIE5TRGljdGlvbmFy
eSAqaGVhZGVycyA9IFttX25zUmVxdWVzdC5nZXQoKSBhbGxIVFRQSGVhZGVyRmllbGRzXTsKICAg
ICBOU0VudW1lcmF0b3IgKmUgPSBbaGVhZGVycyBrZXlFbnVtZXJhdG9yXTsKQEAgLTE0NCwxNiAr
MTQyLDExIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICAgICBl
bHNlCiAgICAgICAgIG5zUmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5p
dFdpdGhVUkw6dXJsKCldOwogCi0KLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmIChSZXNvdXJjZVJlcXVlc3Q6Omh0dHBQ
aXBlbGluaW5nRW5hYmxlZCgpKQogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHko
W25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSwgdG9IVFRQUGlwZWxpbmluZ1ByaW9yaXR5KG1fcHJp
b3JpdHkpKTsKLSNlbmRpZgogCiAgICAgW25zUmVxdWVzdCBzZXRDYWNoZVBvbGljeTooTlNVUkxS
ZXF1ZXN0Q2FjaGVQb2xpY3kpY2FjaGVQb2xpY3koKV07Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICB3a0NGVVJMUmVxdWVz
dEFsbG93QWxsUG9zdENhY2hpbmcoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSk7Ci0jZW5kaWYK
IAogICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwgPSBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1l
b3V0SW50ZXJ2YWwoKTsKICAgICBpZiAodGltZW91dEludGVydmFsKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCShyZXZpc2lv
biAxNTQzMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9u
Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKIAotI2lmICFQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0K
ICNpbmNsdWRlICJBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgiCiAjaW5jbHVkZSAiVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpA
QCAtNzUsNSArNzMsMyBAQCBzaXplX3QgbGFzdEh5cGhlbkxvY2F0aW9uKGNvbnN0IFVDaGFyKiBj
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDcwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9IeXBoZW5hdGlvbk1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9IeXBo
ZW5hdGlvbk1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvSHlwaGVuYXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNzAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiSHlwaGVuYXRp
b24uaCIKLQotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPT0gMTA2MAotCi0jaW1wb3J0ICJBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgiCi0j
aW1wb3J0ICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCi0jaW1wb3J0ICJXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8PgotYm9vbCBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hl
PGJvb2w+OjpjcmVhdGVWYWx1ZUZvck51bGxLZXkoKQotewotICAgIHJldHVybiAhc3RyY21wKGN1
cnJlbnRTZWFyY2hMb2NhbGVJRCgpLCAiZW4iKTsKLX0KLQotdGVtcGxhdGU8PgotYm9vbCBBdG9t
aWNTdHJpbmdLZXllZE1SVUNhY2hlPGJvb2w+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCi17Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjZkxvY2FsZUlkZW50aWZpZXIgPSBhZG9wdENGKGxvY2FsZUlkZW50aWZpZXIuY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29tcG9uZW50cyA9IGFk
b3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDb21wb25lbnRzRnJvbUxvY2FsZUlkZW50aWZpZXIoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgY2ZMb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7Ci0gICAgQ0ZTdHJpbmdS
ZWYgbGFuZ3VhZ2UgPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShjb21wb25lbnRzLmdldCgpLCBrQ0ZMb2NhbGVMYW5ndWFnZUNvZGUpKTsKLSAgICBz
dGF0aWMgQ0ZTdHJpbmdSZWYgZW5nbGlzaExhbmd1YWdlID0gQ0ZTVFIoImVuIik7Ci0gICAgcmV0
dXJuIGxhbmd1YWdlICYmIENGRXF1YWwobGFuZ3VhZ2UsIGVuZ2xpc2hMYW5ndWFnZSk7Ci19Ci0K
LWJvb2wgY2FuSHlwaGVuYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8Ym9v
bD4sIGlzRW5nbGlzaENhY2hlLCAoKSk7Ci0gICAgcmV0dXJuIGlzRW5nbGlzaENhY2hlLmdldChs
b2NhbGVJZGVudGlmaWVyKTsKLX0KLQotc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGJlZm9yZUluZGV4LCBjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChs
b2NhbGVJZGVudGlmaWVyLCBjYW5IeXBoZW5hdGUobG9jYWxlSWRlbnRpZmllcikpOwotCi0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2hhcmFjdGVycywgbGVuZ3Ro
LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgcmV0dXJuIHdrR2V0SHlwaGVuYXRpb25Mb2NhdGlv
bkJlZm9yZUluZGV4KHN0cmluZy5nZXQoKSwgYmVmb3JlSW5kZXgpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY4NCw3ICsxNjg0LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRhaW5z
UGFpbnRlZAogICAgIGlmIChyZW5kZXJlcigpLT5pc1ZpZGVvKCkgJiYgdG9SZW5kZXJWaWRlbyhy
ZW5kZXJlcigpKS0+c2hvdWxkRGlzcGxheVZpZGVvKCkpCiAgICAgICAgIHJldHVybiBtX293bmlu
Z0xheWVyLT5oYXNCb3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZCgpOwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oTUFDKSAmJiBVU0UoQ0EpICYmIChQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MCkKKyNpZiBQTEFURk9STShNQUMpICYmIFVTRShDQSkK
ICNlbGlmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAg
ICBpZiAoaXNBY2NlbGVyYXRlZENhbnZhcyhyZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuIG1f
b3duaW5nTGF5ZXItPmhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5kKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAxNTQzMTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIxMjIsMTEgKzIxMjIsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RT
bGlkZXJUaHVtYlNpCiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnNob3VsZFNob3dQbGFjZWhvbGRl
cldoZW5Gb2N1c2VkKCkgY29uc3QKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCiB9CiAKIE5TUG9wVXBCdXR0b25DZWxsKiBSZW5kZXJUaGVtZU1hYzo6cG9wdXBCdXR0
b24oKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDgt
MTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzEyMDA0OT4gRGVsZXRlIGNvZGUgZm9yIFNub3cgTGVvcGFyZAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpvdmVycmlkZVN5
c3RlbVByb3hpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYktpdDJQcmVmaXguaDoKKwog
MjAxMy0wOC0xOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDAyNz4gQVhPYmplY3RDYWNoZSdzIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDJQcmVmaXguaAkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0
MlByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw2IEBACiAKICNpZmRlZiBfX09C
SkNfXwogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0VtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oPgogI2lmIFVTRShBUFBLSVQpCiAjaW1wb3J0IDxD
b2NvYS9Db2NvYS5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxNTQzMTAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aW5pdGlhbGl6ZVByb2Nlc3NOYQogICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZT
dHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogc3RhdGljIHZvaWQgb3ZlcnJpZGVTeXN0ZW1Qcm94aWVzKGNv
bnN0IFN0cmluZyYgaHR0cFByb3h5LCBjb25zdCBTdHJpbmcmIGh0dHBzUHJveHkpCiB7CiAgICAg
TlNNdXRhYmxlRGljdGlvbmFyeSAqcHJveHlTZXR0aW5ncyA9IFtOU011dGFibGVEaWN0aW9uYXJ5
IGRpY3Rpb25hcnldOwpAQCAtMTA3LDcgKzEwNiw2IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lz
dGVtUHJveGllcyhjb25zdCAKICAgICBpZiAoW3Byb3h5U2V0dGluZ3MgY291bnRdID4gMCkKICAg
ICAgICAgV0tDRk5ldHdvcmtTZXRPdmVycmlkZVN5c3RlbVByb3h5U2V0dGluZ3MoKENGRGljdGlv
bmFyeVJlZilwcm94eVNldHRpbmdzKTsKIH0KLSNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNzAKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CkBAIC0xMjUsMTAgKzEyMyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBTZWNJdGVtU2hpbTo6c2hhcmVkKCkuaW5pdGlh
bGl6ZSh0aGlzKTsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmh0dHBQcm94eS5pc051bGwoKSB8fCAhcGFy
YW1ldGVycy5odHRwc1Byb3h5LmlzTnVsbCgpKQogICAgICAgICBvdmVycmlkZVN5c3RlbVByb3hp
ZXMocGFyYW1ldGVycy5odHRwUHJveHksIHBhcmFtZXRlcnMuaHR0cHNQcm94eSk7Ci0jZW5kaWYK
IAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIFJldGFp
blB0cjxDRlVSTENhY2hlUmVmPiBjYWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRV
UkxDYWNoZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDMxMCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwNDk+IERlbGV0ZSBjb2RlIGZvciBTbm93IExlb3Bh
cmQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
ZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdENvbnRleHRNZW51RGVsZWdhdGUubW06CisgICAgICAg
ICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIG1lbnVJdGVtV2l0aFRhZzp0YXJnZXQ6cmVwcmVzZW50
ZWRPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6Y29u
dGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQ6ZGVmYXVsdE1lbnVJdGVtczpdKToKKyAgICAgICAgKiBN
aXNjL1dlYk5TQ29udHJvbEV4dHJhcy5tOgorICAgICAgICAoLVtOU0NvbnRyb2wgc2l6ZVRvRml0
QW5kQWRqdXN0V2luZG93SGVpZ2h0XSk6CisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRHdWVzc2VzRm9yV29yZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlKToKKyAgICAgICAgKiBXZWJLaXRQcmVmaXguaDoKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbToKKyAgICAgICAgKC1bV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3IHNjcm9sbFdoZWVsOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RnVsbFNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgIChjb252ZXJ0UmVjdFRvU2NyZWVuKToK
KyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3Jl
ZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGV4aXRG
dWxsU2NyZWVuXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgX3Bhc3RlV2l0aFBhc3RlYm9hcmQ6YWxsb3dQbGFpblRleHQ6XSk6Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IHJlbW92ZU1vdXNlTW92ZWRPYnNlcnZlcl0pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyB3aW5kb3dEaWRCZWNvbWVLZXk6XSk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IHdpbmRvd0RpZFJlc2lnbktleTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgX2RldmljZVNjYWxlRmFjdG9yXSk6CisKIDIwMTMtMDgt
MTkgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8xMTk5MTg+IEZyYW1lOjpzZWxlY3Rpb24oKSBzaG91bGQgcmV0dXJu
IGEgcmVmZXJlbmNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAkocmV2aXNpb24gMTU0
MzEwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDcgKzc0LDYgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogI2luY2x1ZGUgPHd0Zi9F
eHBvcnRNYWNyb3MuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RW1wdHlQcm90b2NvbERlZmluaXRpb25zLmg+CiAKIC8qIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMr
KyBsaWJyYXJ5IHRoYXQgc2NyZXdzIHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3Vw
cG9ydCBpcyBkaXNhYmxlZC4gKi8KICN1bmRlZiB0cnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdENvbnRleHRNZW51RGVsZWdhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29u
dGV4dE1lbnVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYktpdC9t
YWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtODksMTIgKzg5LDggQEAgLSAoTlNNZW51SXRlbSAqKW1lbnVJdGVtV2l0
aFRhZzooaW50KXRhZwogICAgICAgICAgICAgYWN0aW9uID0gQHNlbGVjdG9yKF9zZWFyY2hXaXRo
U3BvdGxpZ2h0RnJvbU1lbnU6KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdl
Yk1lbnVJdGVtVGFnU2VhcmNoV2ViOiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDcwCiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlYXJjaFBy
b3ZpZGVyTmFtZSA9IGFkb3B0Q0YoV0tDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5h
bWUoKSk7CiAgICAgICAgICAgICB0aXRsZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJ
X1NUUklOR19JTlRFUk5BTCgiU2VhcmNoIHdpdGggJUAiLCAiU2VhcmNoIHdpdGggc2VhcmNoIHBy
b3ZpZGVyIGNvbnRleHQgbWVudSBpdGVtIHdpdGggcHJvdmlkZXIgbmFtZSBpbnNlcnRlZCIpLCBz
ZWFyY2hQcm92aWRlck5hbWUuZ2V0KCldOwotI2Vsc2UKLSAgICAgICAgICAgIHRpdGxlID0gVUlf
U1RSSU5HX0lOVEVSTkFMKCJTZWFyY2ggd2l0aCBHb29nbGUiLCAiU2VhcmNoIHdpdGggR29vZ2xl
IGNvbnRleHQgbWVudSBpdGVtIik7Ci0jZW5kaWYKICAgICAgICAgICAgIGFjdGlvbiA9IEBzZWxl
Y3Rvcihfc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51Oik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTM2LDEyICsxMzIsNiBAQCAtICh2b2lkKWFwcGVuZERlZmF1bHRJdGVtczoo
TlNBcnJheSAqKWRlCiAgICAgfQogfQogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA9PSAxMDYwCi0jZGVmaW5lIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVN
IDEKLSNlbHNlCi0jZGVmaW5lIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNIDAK
LSNlbmRpZgotCiAtIChOU0FycmF5ICopd2ViVmlldzooV2ViVmlldyAqKXd2IGNvbnRleHRNZW51
SXRlbXNGb3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50ICBkZWZhdWx0TWVudUl0ZW1z
OihOU0FycmF5ICopZGVmYXVsdE1lbnVJdGVtcwogewogICAgIC8vIFRoZSBkZWZhdWx0TWVudUl0
ZW1zIGhlcmUgYXJlIG9uZXMgc3VwcGxpZWQgYnkgdGhlIFdlYkRvY3VtZW50VmlldyBwcm90b2Nv
bCBpbXBsZW1lbnRhdGlvbi4gV2ViUERGVmlldyBpcwpAQCAtMTYxLDIyICsxNTEsMTMgQEAgLSAo
TlNBcnJheSAqKXdlYlZpZXc6KFdlYlZpZXcgKil3diBjb250ZQogICAgICAgICAvLyBleGlzdGlu
ZyBjbGllbnRzIHRoYXQgaGF2ZSBjb2RlIHRoYXQgcmVsaWVzIG9uIGl0IGJlaW5nIHByZXNlbnQg
KHVubGlrZWx5IGZvciBjbGllbnRzIG91dHNpZGUgb2YgQXBwbGUsIAogICAgICAgICAvLyBidXQg
U2FmYXJpIGhhcyBzdWNoIGNvZGUpLgogCi0jaWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVYVF9N
RU5VX0lURU0KLSAgICAgICAgW21lbnVJdGVtcyBhZGRPYmplY3Q6W3NlbGYgbWVudUl0ZW1XaXRo
VGFnOldlYk1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQgdGFyZ2V0Om5pbCByZXByZXNlbnRl
ZE9iamVjdDplbGVtZW50XV07Ci0jZWxzZQogICAgICAgICBOU01lbnVJdGVtICpsb29rdXBNZW51
SXRlbSA9IFtzZWxmIG1lbnVJdGVtV2l0aFRhZzpXZWJNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlv
bmFyeSB0YXJnZXQ6bmlsIHJlcHJlc2VudGVkT2JqZWN0OmVsZW1lbnRdOwogICAgICAgICBOU1N0
cmluZyAqc2VsZWN0ZWRTdHJpbmcgPSBbKGlkIDxXZWJEb2N1bWVudFRleHQ+KVtbd2ViRnJhbWUg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHNlbGVjdGVkU3RyaW5nXTsKICAgICAgICAgW2xvb2t1
cE1lbnVJdGVtIHNldFRpdGxlOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklOR19J
TlRFUk5BTCgiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdp
dGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZFN0cmluZ11dOwogICAgICAgICBbbWVudUl0ZW1z
IGFkZE9iamVjdDpsb29rdXBNZW51SXRlbV07Ci0jZW5kaWYKIAogICAgICAgICBbbWVudUl0ZW1z
IGFkZE9iamVjdDpbc2VsZiBtZW51SXRlbVdpdGhUYWc6V2ViTWVudUl0ZW1UYWdTZWFyY2hXZWIg
dGFyZ2V0Om5pbCByZXByZXNlbnRlZE9iamVjdDplbGVtZW50XV07CiAKLSNpZiBJTkNMVURFX1NQ
T1RMSUdIVF9DT05URVhUX01FTlVfSVRFTQotICAgICAgICBbbWVudUl0ZW1zIGFkZE9iamVjdDpb
TlNNZW51SXRlbSBzZXBhcmF0b3JJdGVtXV07Ci0gICAgICAgIFttZW51SXRlbXMgYWRkT2JqZWN0
OltzZWxmIG1lbnVJdGVtV2l0aFRhZzpXZWJNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSB0
YXJnZXQ6bmlsIHJlcHJlc2VudGVkT2JqZWN0OmVsZW1lbnRdXTsKLSNlbmRpZgotCiAgICAgICAg
IFttZW51SXRlbXMgYWRkT2JqZWN0OltOU01lbnVJdGVtIHNlcGFyYXRvckl0ZW1dXTsKICAgICAg
ICAgW21lbnVJdGVtcyBhZGRPYmplY3Q6W3NlbGYgbWVudUl0ZW1XaXRoVGFnOldlYk1lbnVJdGVt
VGFnQ29weSB0YXJnZXQ6bmlsIHJlcHJlc2VudGVkT2JqZWN0OmVsZW1lbnRdXTsKICAgICB9IGVs
c2UgewpJbmRleDogU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0NvbnRyb2xFeHRyYXMubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TQ29udHJvbEV4dHJhcy5t
CShyZXZpc2lvbiAxNTQzMTApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TQ29udHJv
bEV4dHJhcy5tCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsNyBAQCAtICh2b2lkKXNpemVU
b0ZpdEFuZEFkanVzdFdpbmRvd0hlaWdodAogICAgIE5TUmVjdCB3aW5kb3dGcmFtZSA9IFt3aW5k
b3cgZnJhbWVdOwogCiAgICAgQ0dGbG9hdCBiYWNraW5nU2NhbGVGYWN0b3I7Ci0jaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgYmFja2luZ1NjYWxlRmFjdG9y
ID0gW3dpbmRvdyBiYWNraW5nU2NhbGVGYWN0b3JdOwotI2Vsc2UKLSAgICBiYWNraW5nU2NhbGVG
YWN0b3IgPSBbd2luZG93IHVzZXJTcGFjZVNjYWxlRmFjdG9yXTsKLSNlbmRpZgogCiAgICAgd2lu
ZG93RnJhbWUuc2l6ZS5oZWlnaHQgKz0gaGVpZ2h0RGVsdGEgKiBiYWNraW5nU2NhbGVGYWN0b3I7
CiAgICAgW3dpbmRvdyBzZXRGcmFtZTp3aW5kb3dGcmFtZSBkaXNwbGF5Ok5PXTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0JKHJl
dmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdl
ckV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDYgQEAKICNpbXBvcnQgPHN5
cy9zdGF0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLWV4dGVybiAiQyIgREFEaXNrUmVmIERBRGlza0Ny
ZWF0ZUZyb21Wb2x1bWVQYXRoKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgREFTZXNzaW9uUmVm
IHNlc3Npb24sIENGVVJMUmVmIHBhdGgpOwotI2VuZGlmCi0KIEBpbXBsZW1lbnRhdGlvbiBOU0Zp
bGVNYW5hZ2VyIChXZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzKQogCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlz
aW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNzcsMTEgKzc3LDkgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIEBpbnRlcmZhY2UgTlNTcGVsbENoZWNr
ZXIgKFdlYk5TU3BlbGxDaGVja2VyRGV0YWlscykKIC0gKE5TU3RyaW5nICopbGFuZ3VhZ2VGb3JX
b3JkUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgaW5TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9ydGhv
Z3JhcGh5OihOU09ydGhvZ3JhcGh5ICopb3J0aG9ncmFwaHk7CiBAZW5kCi0jZW5kaWYKIAogQGlu
dGVyZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcgKFdlYk5TQXR0cmlidXRlZFN0cmluZ0RldGFpbHMp
CiAtIChpZClfaW5pdFdpdGhET01SYW5nZTooRE9NUmFuZ2UqKXJhbmdlOwpAQCAtNzIwLDExICs3
MTgsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4CiBib29sIFdl
YkVkaXRvckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4
dENoZWNraW5nVHlwZSB0eXBlKSBjb25zdAogewogICAgIC8vIFRoaXMgcHJldmVudHMgZXJhc2lu
ZyBzcGVsbGluZyBtYXJrZXJzIG9uIE9TIFggTGlvbiBvciBsYXRlciB0byBtYXRjaCBBcHBLaXQg
b24gdGhlc2UgTWFjIE9TIFggdmVyc2lvbnMuCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwCiAgICAgcmV0dXJuIHR5cGUgIT0gVGV4dENoZWNraW5nVHlwZVNwZWxs
aW5nOwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRleHQpCkBA
IC05MTMsNyArOTA3LDYgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNwZWxsaW5nVUlJc1Nob3dp
bgogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5n
JiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKSB7
CiAgICAgZ3Vlc3Nlcy5jbGVhcigpOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAogICAgIE5TU3RyaW5nKiBsYW5ndWFnZSA9IG5pbDsKICAgICBOU09ydGhvZ3Jh
cGh5KiBvcnRob2dyYXBoeSA9IG5pbDsKICAgICBOU1NwZWxsQ2hlY2tlciAqY2hlY2tlciA9IFtO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwpAQCAtOTIyLDkgKzkxNSw2IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRHdWVzc2VzRm9yV29yZCgKICAgICAgICAgbGFuZ3VhZ2Ug
PSBbY2hlY2tlciBsYW5ndWFnZUZvcldvcmRSYW5nZTpOU01ha2VSYW5nZSgwLCBjb250ZXh0Lmxl
bmd0aCgpKSBpblN0cmluZzpjb250ZXh0IG9ydGhvZ3JhcGh5Om9ydGhvZ3JhcGh5XTsKICAgICB9
CiAgICAgTlNBcnJheSogc3RyaW5nc0FycmF5ID0gW2NoZWNrZXIgZ3Vlc3Nlc0ZvcldvcmRSYW5n
ZTpOU01ha2VSYW5nZSgwLCB3b3JkLmxlbmd0aCgpKSBpblN0cmluZzp3b3JkIGxhbmd1YWdlOmxh
bmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKV07
Ci0jZWxzZQotICAgIE5TQXJyYXkqIHN0cmluZ3NBcnJheSA9IFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSBndWVzc2VzRm9yV29yZDp3b3JkXTsKLSNlbmRpZgogICAgIHVuc2ln
bmVkIGNvdW50ID0gW3N0cmluZ3NBcnJheSBjb3VudF07CiAKICAgICBpZiAoY291bnQgPiAwKSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTcwOCwxMCArNzA4LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRMYQogICAgICAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBb
bV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2Nyb2xsVmlld107CiAgICAgICAg
IGlmIChbZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSBkcmF3c0JhY2tncm91bmRdKQogICAg
ICAgICAgICAgW3Njcm9sbFZpZXcgc2V0RHJhd3NCYWNrZ3JvdW5kOllFU107Ci0jaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIFtzY3JvbGxWaWV3IHNl
dFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWNdOwog
ICAgICAgICBbc2Nyb2xsVmlldyBzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9s
bEVsYXN0aWNpdHlBdXRvbWF0aWNdOwotI2VuZGlmCiAgICAgfQogCiAgICAgaWYgKG1pbGVzdG9u
ZXMgJiBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpIHsKQEAgLTExNDgsMTAgKzExNDYs
OCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvCiAKICAgICBXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZhdGUt
PndlYkZyYW1lVmlldyBfc2Nyb2xsVmlld107CiAgICAgW3Njcm9sbFZpZXcgc2V0RHJhd3NCYWNr
Z3JvdW5kOk5PXTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
ICAgICBbc2Nyb2xsVmlldyBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk6TlNTY3JvbGxFbGFz
dGljaXR5Tm9uZV07CiAgICAgW3Njcm9sbFZpZXcgc2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNp
dHk6TlNTY3JvbGxFbGFzdGljaXR5Tm9uZV07Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZpc2lvbiAx
NTQzMTApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDkgKzQzLDcgQEAgdm9pZCBJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICByZXR1cm47CiAKICAgICBJTklUKEFkdmFu
Y2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24pOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdE
cmF3bldpdGhCbG9jayk7Ci0jZW5kaWYKICAgICBJTklUKENHQ29udGV4dEdldFNob3VsZFNtb290
aEZvbnRzKTsKICAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7
CiAgICAgSU5JVChDR0NvbnRleHRSZXNldENsaXApOwpAQCAtMTI1LDE0ICsxMjMsOCBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChHZXRHbHlwaHNGb3JD
aGFyYWN0ZXJzKTsKICAgICBJTklUKEdldFZlcnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyk7CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLSAgICBJTklUKEdl
dEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleCk7Ci0gICAgSU5JVChHZXROU0V2ZW50TW9t
ZW50dW1QaGFzZSk7Ci0jZW5kaWYKLQogICAgIElOSVQoQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQ
cm92aWRlcik7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
ICAgICBJTklUKElPU3VyZmFjZUNvbnRleHRDcmVhdGUpOwogICAgIElOSVQoSU9TdXJmYWNlQ29u
dGV4dENyZWF0ZUltYWdlKTsKICAgICBJTklUKENyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFy
UHJvdmlkZXJBbmRPcHRpb25zKTsKQEAgLTE0Myw3ICsxMzUsNyBAQCB2b2lkIEluaXRXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVy
RGlzcGxheU5hbWUpOwogICAgIElOSVQoQVZBc3NldFJlc29sdmVkVVJMKTsKICAgICBJTklUKEN1
cnNvcik7Ci0jZW5kaWYKKwogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgSU5JVChHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UpOwogICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0
ZW50U3RvcmFnZSk7CkBAIC0xOTQsMTAgKzE4Niw4IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2Uodm9pZCkKIAogICAgIElOSVQoRGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcyk7CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBJTklUKENy
ZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlKTsKLSNlbmRpZgotICAgIAorCiAjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgSU5JVChDcmVhdGVN
ZW1vcnlTdGF0dXNQcmVzc3VyZUNyaXRpY2FsRGlzcGF0Y2hPbk1haW5RdWV1ZSk7CiAjZW5kaWYK
QEAgLTIwNiwxMyArMTk2LDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lk
KQogICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVMaW9uKTsKICNlbmRpZgog
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgSU5JVChD
R1BhdGhBZGRSb3VuZGVkUmVjdCk7Ci0jZW5kaWYKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIElOSVQoQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2Fj
aGluZyk7Ci0jZW5kaWYKIAogI2lmIFVTRShDT05URU5UX0ZJTFRFUklORykKICAgICBJTklUKEZp
bHRlcklzTWFuYWdlZFNlc3Npb24pOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0JKHJldmlzaW9uIDE1NDMxMCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01NDIsMTMgKzU0Miw4IEBAIC0gKHZvaWQpc2Nyb2xsV2hlZWw6
KE5TRXZlbnQgKilldmVudAogICAgIEJPT0wgaXNDb250aW51b3VzOwogICAgIFdLR2V0V2hlZWxF
dmVudERlbHRhcyhldmVudCwgJmRlbHRhWCwgJmRlbHRhWSwgJmlzQ29udGludW91cyk7CiAKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBOU0V2ZW50UGhh
c2UgbW9tZW50dW1QaGFzZSA9IFtldmVudCBtb21lbnR1bVBoYXNlXTsKICAgICBCT09MIGlzTGF0
Y2hpbmdFdmVudCA9IG1vbWVudHVtUGhhc2UgJiBOU0V2ZW50UGhhc2VCZWdhbiB8fCBtb21lbnR1
bVBoYXNlICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeTsKLSNlbHNlCi0gICAgaW50IG1vbWVudHVt
UGhhc2UgPSBXS0dldE5TRXZlbnRNb21lbnR1bVBoYXNlKGV2ZW50KTsKLSAgICBCT09MIGlzTGF0
Y2hpbmdFdmVudCA9IG1vbWVudHVtUGhhc2UgPT0gV0tFdmVudFBoYXNlQmVnYW4gfHwgbW9tZW50
dW1QaGFzZSA9PSBXS0V2ZW50UGhhc2VDaGFuZ2VkOwotI2VuZGlmCiAKICAgICBpZiAoZmFic2Yo
ZGVsdGFZKSA+IGZhYnNmKGRlbHRhWCkpIHsKICAgICAgICAgaWYgKCFbc2VsZiBhbGxvd3NWZXJ0
aWNhbFNjcm9sbGluZ10pIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVs
bFNjcmVlbkNvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsMjAgKzcxLDEwIEBAIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVu
QW5pbWF0aW9uV2kKIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVy
YXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uOwogQGVuZAogCi0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBzdGF0aWMgTlNSZWN0IGNvbnZlcnRSZWN0VG9T
Y3JlZW4oTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHJlY3QpCiB7CiAgICAgcmV0dXJuIFt3aW5k
b3cgY29udmVydFJlY3RUb1NjcmVlbjpyZWN0XTsKIH0KLSNlbHNlCi1zdGF0aWMgTlNSZWN0IGNv
bnZlcnRSZWN0VG9TY3JlZW4oTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHJlY3QpCi17Ci0gICAg
TlNSZWN0IGZyYW1lID0gW3dpbmRvdyBmcmFtZV07Ci0gICAgcmVjdC5vcmlnaW4ueCArPSBmcmFt
ZS5vcmlnaW4ueDsKLSAgICByZWN0Lm9yaWdpbi55ICs9IGZyYW1lLm9yaWdpbi55OwotICAgIHJl
dHVybiByZWN0OwotfQotI2VuZGlmCiAKIEBpbnRlcmZhY2UgTlNXaW5kb3coSXNPbkFjdGl2ZVNw
YWNlQWRkaXRpb25Gb3JUaWdlckFuZExlb3BhcmQpCiAtIChCT09MKWlzT25BY3RpdmVTcGFjZTsK
QEAgLTI3OCwxNiArMjY4LDEyIEBAIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5Bbmlt
YXRpb24KICAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dC
b3VuZHMpOwogICAgICAgICAKICAgICAgICAgTlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2ViVmll
d1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwCiAgICAgICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0
ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdAogICAg
ICAgICAvLyBiZWhhdmlvciBoZXJlLCBtYWtpbmcgc3VyZSB0byByZXNldCB0aGUgYW5pbWF0aW9u
IGJlaGF2aW9yIGFmdGVyd2FyZC4KICAgICAgICAgTlNXaW5kb3dBbmltYXRpb25CZWhhdmlvciBh
bmltYXRpb25CZWhhdmlvciA9IFt3ZWJXaW5kb3cgYW5pbWF0aW9uQmVoYXZpb3JdOwogICAgICAg
ICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVoYXZp
b3JOb25lXTsKLSNlbmRpZgogICAgICAgICBbd2ViV2luZG93IG9yZGVyT3V0OnNlbGZdOwotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBbd2ViV2lu
ZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOmFuaW1hdGlvbkJlaGF2aW9yXTsKLSNlbmRpZgogICAg
ICAgICAKICAgICAgICAgW19mYWRlQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwogICAg
ICAgICBbX2ZhZGVBbmltYXRpb24uZ2V0KCkgc2V0V2luZG93Om5pbF07CkBAIC0zMjgsMTIgKzMx
NCwxMCBAQCAtICh2b2lkKWV4aXRGdWxsU2NyZWVuCiAgICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmRE
b2NrRm9yRnVsbFNjcmVlbl07CiAgICAgCiAgICAgTlNXaW5kb3cqIHdlYldpbmRvdyA9IFtfd2Vi
Vmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmltYXRl
IGludG8gYW5kIG91dCBvZiBvcmRlck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0CiAgICAg
Ly8gYmVoYXZpb3IgaGVyZSwgbWFraW5nIHN1cmUgdG8gcmVzZXQgdGhlIGFuaW1hdGlvbiBiZWhh
dmlvciBhZnRlcndhcmQuCiAgICAgTlNXaW5kb3dBbmltYXRpb25CZWhhdmlvciBhbmltYXRpb25C
ZWhhdmlvciA9IFt3ZWJXaW5kb3cgYW5pbWF0aW9uQmVoYXZpb3JdOwogICAgIFt3ZWJXaW5kb3cg
c2V0QW5pbWF0aW9uQmVoYXZpb3I6TlNXaW5kb3dBbmltYXRpb25CZWhhdmlvck5vbmVdOwotI2Vu
ZGlmCiAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG1vdmVkIHRoZSBmdWxsU2NyZWVuIHdpbmRvdyBp
bnRvIGEgbmV3IHNwYWNlLCB0ZW1wb3JhcmlseSBjaGFuZ2UKICAgICAvLyB0aGUgY29sbGVjdGlv
bkJlaGF2aW9yIG9mIHRoZSB3ZWJWaWV3J3Mgd2luZG93IHNvIHRoYXQgaXQgaXMgcHVsbGVkIGlu
dG8gdGhlIGFjdGl2ZSBzcGFjZToKICAgICBpZiAoIShbd2ViV2luZG93IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoaXNPbkFjdGl2ZVNwYWNlKV0gPyBbd2ViV2luZG93IGlzT25BY3RpdmVT
cGFjZV0gOiBZRVMpKSB7CkBAIC0zNDMsOSArMzI3LDcgQEAgLSAodm9pZClleGl0RnVsbFNjcmVl
bgogICAgICAgICBbd2ViV2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjpiZWhhdmlvcl07CiAg
ICAgfSBlbHNlCiAgICAgICAgIFt3ZWJXaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyBy
ZWxhdGl2ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRvd051bWJlcl1dOwotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9u
QmVoYXZpb3I6YW5pbWF0aW9uQmVoYXZpb3JdOwotI2VuZGlmCiAKICAgICBbc2VsZiBfc3RhcnRF
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkZWZhdWx0QW5pbWF0aW9uRHVyYXRp
b25dOwogICAgIF9pc0V4aXRpbmdGdWxsU2NyZWVuID0gWUVTOyAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODYwLDI2ICs4NjAsMTEgQEAgLSAodm9pZClfcGFzdGVXaXRoUGFzdGVib2FyZDooTlNQYXN0ZWJv
YQogCiAgICAgRE9NUmFuZ2UgKnJhbmdlID0gW3NlbGYgX3NlbGVjdGVkUmFuZ2VdOwogICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIAotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAorCiAgICAgRE9NRG9jdW1lbnRGcmFnbWVu
dCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3Rl
Ym9hcmQgaW5Db250ZXh0OnJhbmdlIGFsbG93UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0XTsKICAg
ICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJl
cGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0
ZWRdKQogICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnBhc3RlQXNGcmFnbWVudChjb3JlKGZy
YWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRd
LCBmYWxzZSk7Ci0jZWxzZQotICAgIC8vIE1haWwgaXMgaWdub3JpbmcgdGhlIGZyYW1lbnQgcGFz
c2VkIHRvIHRoZSBkZWxlZ2F0ZSBhbmQgY3JlYXRlcyBhIG5ldyBvbmUuCi0gICAgLy8gV2Ugd2Fu
dCB0byBhdm9pZCBjcmVhdGluZyB0aGUgZnJhZ21lbnQgdHdpY2UuCi0gICAgaWYgKGFwcGxpY2F0
aW9uSXNBcHBsZU1haWwoKSkgewotICAgICAgICBpZiAoW3NlbGYgX3Nob3VsZEluc2VydEZyYWdt
ZW50Om5pbCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0
QWN0aW9uUGFzdGVkXSkgewotICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21l
bnQgPSBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgaW5D
b250ZXh0OnJhbmdlIGFsbG93UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0XTsKLSAgICAgICAgICAg
IGlmIChmcmFnbWVudCkKLSAgICAgICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnBhc3Rl
QXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0
ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7Ci0gICAgICAgIH0gICAgICAgIAotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3Vt
ZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxv
d1BsYWluVGV4dDphbGxvd1BsYWluVGV4dF07Ci0gICAgICAgIGlmIChmcmFnbWVudCAmJiBbc2Vs
ZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2Ug
Z2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pCi0gICAgICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2Nh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7Ci0gICAgfQot
I2VuZGlmCisKICAgICBbd2ViVmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVib2FyZDpuaWxdOwogICAg
IFt3ZWJWaWV3IHJlbGVhc2VdOwogfQpAQCAtMjgzMiwxMSArMjgxNyw5IEBAIC0gKHZvaWQpcmVt
b3ZlTW91c2VNb3ZlZE9ic2VydmVyCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgLy8gTGVnYWN5IHNjcm9s
bGJhcnMgcmVxdWlyZSB0cmFja2luZyB0aGUgbW91c2UgYXQgYWxsIHRpbWVzLgogICAgIGlmIChX
S1JlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSgpID09IE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeSkKICAg
ICAgICAgcmV0dXJuOwotI2VuZGlmCiAKICAgICBbW3NlbGYgX3dlYlZpZXddIF9tb3VzZURpZE1v
dmVPdmVyRWxlbWVudDpuaWwgbW9kaWZpZXJGbGFnczowXTsKICAgICBbc2VsZiBfcmVtb3ZlTW91
c2VNb3ZlZE9ic2VydmVyVW5jb25kaXRpb25hbGx5XTsKQEAgLTMzODAsMTMgKzMzNjMsMTEgQEAg
LSAodm9pZCl3aW5kb3dEaWRCZWNvbWVLZXk6KE5TTm90aWZpY2F0aQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAg
ICAgaWYgKF9wcml2YXRlLT50cmFja2luZ0FyZWFGb3JOb25LZXlXaW5kb3cpIHsKICAgICAgICAg
W3NlbGYgcmVtb3ZlVHJhY2tpbmdBcmVhOl9wcml2YXRlLT50cmFja2luZ0FyZWFGb3JOb25LZXlX
aW5kb3ddOwogICAgICAgICBbX3ByaXZhdGUtPnRyYWNraW5nQXJlYUZvck5vbktleVdpbmRvdyBy
ZWxlYXNlXTsKICAgICAgICAgX3ByaXZhdGUtPnRyYWNraW5nQXJlYUZvck5vbktleVdpbmRvdyA9
IG5pbDsKICAgICB9Ci0jZW5kaWYKIAogICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90aWZp
Y2F0aW9uIG9iamVjdF07CiAKQEAgLTM0MTMsNyArMzM5NCw2IEBAIC0gKHZvaWQpd2luZG93RGlk
UmVzaWduS2V5OihOU05vdGlmaWNhdGkKICAgICAgICAgW19wcml2YXRlLT5jb21wbGV0aW9uQ29u
dHJvbGxlciBlbmRSZXZlcnRpbmdDaGFuZ2U6Tk8gbW92ZUxlZnQ6Tk9dOwogICAgIH0KIAotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmIChXS1JlY29t
bWVuZGVkU2Nyb2xsZXJTdHlsZSgpID09IE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeSkgewogICAgICAg
ICAvLyBMZWdhY3kgc3R5bGUgc2Nyb2xsYmFycyBoYXZlIGRlc2lnbiBkZXRhaWxzIHRoYXQgcmVs
eSBvbiB0cmFja2luZyB0aGUgbW91c2UgYWxsIHRoZSB0aW1lLgogICAgICAgICAvLyBJdCdzIGVh
c2llc3QgdG8gZG8gdGhpcyB3aXRoIGEgdHJhY2tpbmcgYXJlYSwgd2hpY2ggd2Ugd2lsbCByZW1v
dmUgd2hlbiB0aGUgd2luZG93IGlzIGtleQpAQCAtMzQyNCw3ICszNDA0LDYgQEAgLSAodm9pZCl3
aW5kb3dEaWRSZXNpZ25LZXk6KE5TTm90aWZpY2F0aQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbF07CiAgICAgICAgIFtzZWxm
IGFkZFRyYWNraW5nQXJlYTpfcHJpdmF0ZS0+dHJhY2tpbmdBcmVhRm9yTm9uS2V5V2luZG93XTsK
ICAgICB9Ci0jZW5kaWYKIH0KIAogLSAodm9pZCl3aW5kb3dXaWxsT3JkZXJPblNjcmVlbjooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDE1NDMxMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYwLDE0ICs2NjAsNiBAQCAtICh2b2lkKV9y
ZWdpc3RlckRyYWdnZWRUeXBlcwogICAgIFt0eXBlcyByZWxlYXNlXTsKIH0KIAotI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA2MAotLy8gVGhpcyBtZXRob2Qgc2hvdWxk
IGJlIHJlbW92ZWQgb25jZSB3ZSBubyBsb25nZXIgd2FudCB0byBrZWVwIFNhZmFyaSA1LjAueCB3
b3JraW5nIHdpdGggbmlnaHRseSBidWlsZHMuCi0tIChCT09MKV91c2VzRG9jdW1lbnRWaWV3cwot
ewotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmCi0KIHN0YXRpYyBib29sIG5lZWRzT3V0bG9v
a1F1aXJrc1NjcmlwdCgpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNPdXRsb29rTmVlZGluZ1F1aXJr
c1NjcmlwdCA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lU
SF9IVE1MNV9QQVJTRVIpCkBAIC01ODk0LDE5ICs1ODg2LDExIEBAIC0gKGZsb2F0KV9kZXZpY2VT
Y2FsZUZhY3RvcgogCiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAg
TlNXaW5kb3cgKmhvc3RXaW5kb3cgPSBbc2VsZiBob3N0V2luZG93XTsKLSNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBpZiAod2luZG93KQogICAgICAgICBy
ZXR1cm4gW3dpbmRvdyBiYWNraW5nU2NhbGVGYWN0b3JdOwogICAgIGlmIChob3N0V2luZG93KQog
ICAgICAgICByZXR1cm4gW2hvc3RXaW5kb3cgYmFja2luZ1NjYWxlRmFjdG9yXTsKICAgICByZXR1
cm4gW1tOU1NjcmVlbiBtYWluU2NyZWVuXSBiYWNraW5nU2NhbGVGYWN0b3JdOwotI2Vsc2UKLSAg
ICBpZiAod2luZG93KQotICAgICAgICByZXR1cm4gW3dpbmRvdyB1c2VyU3BhY2VTY2FsZUZhY3Rv
cl07Ci0gICAgaWYgKGhvc3RXaW5kb3cpCi0gICAgICAgIHJldHVybiBbaG9zdFdpbmRvdyB1c2Vy
U3BhY2VTY2FsZUZhY3Rvcl07Ci0gICAgcmV0dXJuIFtbTlNTY3JlZW4gbWFpblNjcmVlbl0gdXNl
clNwYWNlU2NhbGVGYWN0b3JdOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxpbmUgdWludDY0X3Qg
cm91bmRVcFRvUG93ZXJPZjIodWludDY0X3QgbnVtKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzEwKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTMtMDgtMTkgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzEyMDA0OT4gRGVsZXRlIGNvZGUgZm9yIFNub3cgTGVvcGFyZAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0NoZWNrZWRNYWxsb2MuY3BwOgorICAgICAgICAocHJvdGVjdGlvbk9mUmVnaW9uKToKKyAgICAg
ICAgKG1ha2VMYXJnZU1hbGxvY0ZhaWxTaWxlbnRseSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
RHJhZ2dpbmdJbmZvLm1tOgorICAgICAgICAoLVtEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBl
bnVtZXJhdGVEcmFnZ2luZ0l0ZW1zV2l0aE9wdGlvbnM6Zm9yVmlldzpjbGFzc2VzOnNlYXJjaE9w
dGlvbnM6dXNpbmdCbG9jazpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVM
b2FkRGVsZWdhdGUubW06CisgICAgICAgICh0ZXN0UGF0aEZyb21VUkwpOgorICAgICAgICAoLVtG
cmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6
XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RIZWxwZXIubToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQ
YWdlTWFjLm1tOgorICAgICAgICAoV1RSOjp0ZXN0UGF0aEZyb21VUkwpOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk6CisKIDIwMTMtMDgtMTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTkx
NQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0NoZWNrZWRNYWxsb2MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9DaGVja2VkTWFsbG9jLmNwcAkocmV2
aXNpb24gMTU0MzEwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0NoZWNrZWRNYWxsb2Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIHN0YXRpYyB2b2lkKiBjaGVja2Vk
UmVhbGxvYyhtYWxsb2Nfem9uZV8KICAgICByZXR1cm4gc2F2ZWRSZWFsbG9jKHpvbmUsIHB0ciwg
c2l6ZSk7CiB9CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
IHN0YXRpYyB2bV9wcm90X3QgcHJvdGVjdGlvbk9mUmVnaW9uKG1hY2hfdm1fYWRkcmVzc190IGFk
ZHJlc3MpCiB7CiAgICAgbWFjaF92bV9zaXplX3QgcmVnaW9uU2l6ZSA9IDA7CkBAIC02NSwyOCAr
NjQsMjMgQEAgc3RhdGljIHZtX3Byb3RfdCBwcm90ZWN0aW9uT2ZSZWdpb24obWFjaAogICAgICAg
ICBDUkFTSCgpOwogICAgIHJldHVybiByZWdpb25JbmZvLnByb3RlY3Rpb247CiB9Ci0jZW5kaWYK
IAogdm9pZCBtYWtlTGFyZ2VNYWxsb2NGYWlsU2lsZW50bHkoKQogewogICAgIG1hbGxvY196b25l
X3QqIHpvbmUgPSBtYWxsb2NfZGVmYXVsdF96b25lKCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBtYWNoX3ZtX2FkZHJlc3NfdCBwYWdlU3RhcnQg
PSByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oem9uZSkgJiBzdGF0aWNfY2FzdDx2bV9z
aXplX3Q+KH4oZ2V0cGFnZXNpemUoKSAtIDEpKTsKICAgICB2bV9wcm90X3QgaW5pdGlhbFByb3Rl
Y3Rpb24gPSBwcm90ZWN0aW9uT2ZSZWdpb24ocGFnZVN0YXJ0KTsKIAogICAgIHZtX3NpemVfdCBs
ZW4gPSByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oem9uZSkgLSBwYWdlU3RhcnQgKyBz
aXplb2YobWFsbG9jX3pvbmVfdCk7CiAgICAgaWYgKG1hY2hfdm1fcHJvdGVjdChtYWNoX3Rhc2tf
c2VsZigpLCBwYWdlU3RhcnQsIGxlbiwgMCwgaW5pdGlhbFByb3RlY3Rpb24gfCBWTV9QUk9UX1dS
SVRFKSkKICAgICAgICAgQ1JBU0goKTsKLSNlbmRpZgogCiAgICAgc2F2ZWRNYWxsb2MgPSB6b25l
LT5tYWxsb2M7CiAgICAgc2F2ZWRSZWFsbG9jID0gem9uZS0+cmVhbGxvYzsKICAgICB6b25lLT5t
YWxsb2MgPSBjaGVja2VkTWFsbG9jOwogICAgIHpvbmUtPnJlYWxsb2MgPSBjaGVja2VkUmVhbGxv
YzsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlm
IChtYWNoX3ZtX3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcGFnZVN0YXJ0LCBsZW4sIDAsIGlu
aXRpYWxQcm90ZWN0aW9uKSkKICAgICAgICAgQ1JBU0goKTsKLSNlbmRpZgogfQpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMTU0MzEw
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02MTUsNyArNjE1LDYgQEAgc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29u
c2lzdGVudFZhbAogICAgIFtkZWZhdWx0cyBzZXRCb29sOllFUyBmb3JLZXk6V2ViS2l0RnVsbFNj
cmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKICAgICBbZGVmYXVsdHMgc2V0Qm9vbDpZRVMgZm9y
S2V5OkAiVXNlV2ViS2l0V2ViSW5zcGVjdG9yIl07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBbZGVmYXVsdHMgc2V0T2JqZWN0OltOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgQCJub3RhdGlvbmFsIiwg
QCJub3RhdGlvbmwiLAogICAgICAgICBAIm1lc3NhZ2UiLCBAIm1lc2FnZSIsCkBAIC02MjMsNyAr
NjIyLDYgQEAgc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbAogICAgICAg
ICBAIndlbGNvbWUiLCBAIndlbGxjb21lIiwKICAgICAgICAgQCJoZWxsb1xud29ybGQiLCBAImhl
bGxvbGZ3b3JsZCIsCiAgICAgICAgIG5pbF0gZm9yS2V5OkAiTlNUZXN0Q29ycmVjdGlvbkRpY3Rp
b25hcnkiXTsKLSNlbmRpZgogCiAgICAgLy8gU2Nyb2xsYmFycyBhcmUgZHJhd24gZWl0aGVyIHVz
aW5nIEFwcEtpdCAod2hpY2ggdXNlcyBOU1VzZXJEZWZhdWx0cykgb3IgdXNpbmcgSElUb29sYm94
ICh3aGljaCB1c2VzIENGUHJlZmVyZW5jZXMgLyBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9u
IC8ga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciAvIGtDRlByZWZlcmVuY2VzQW55SG9zdCkKICAg
ICBbZGVmYXVsdHMgc2V0T2JqZWN0OkAiRG91YmxlTWF4IiBmb3JLZXk6QCJBcHBsZVNjcm9sbEJh
clZhcmlhbnQiXTsKQEAgLTcwMyw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRz
VG9Db25zaXN0ZW50VmFsCiAgICAgLy8gU28sIHR1cm4gaXQgb2ZmIGZvciBub3csIGJ1dCB3ZSBt
aWdodCB3YW50IHRvIHR1cm4gaXQgYmFjayBvbiBzb21lIGRheS4KICAgICBbcHJlZmVyZW5jZXMg
c2V0VXNlc1BhZ2VDYWNoZTpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkOllFU107Ci0jaWYgVVNFKENBKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNzAKKyNpZiBVU0UoQ0EpCiAgICAgW3ByZWZlcmVuY2VzIHNldENh
bnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmc6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QWNj
ZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDpOT107CiAjZW5kaWYKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0JKHJl
dmlzaW9uIDE1NDMxMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZURyYWdnaW5nSW5mby5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBAIC0gKE5T
QXJyYXkgKiluYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWQKICAgICByZXR1cm4gbmlsOwogfQog
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAtIChOU0RyYWdn
aW5nRm9ybWF0aW9uKWRyYWdnaW5nRm9ybWF0aW9uCiB7CiAgICAgcmV0dXJuIE5TRHJhZ2dpbmdG
b3JtYXRpb25EZWZhdWx0OwpAQCAtMTQwLDcgKzEzOSw2IEBAIC0gKHZvaWQpZW51bWVyYXRlRHJh
Z2dpbmdJdGVtc1dpdGhPcHRpb24KIHsKICAgICAvLyBJZ25vcmVkLgogfQotI2VuZGlmIC8vIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogCiBAZW5kCiAKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9u
IDE1NDMxMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1NSw2IEBAIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKWMgbG9jYXRpb25DaGEKICAgICB9CiB9CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNzAKIHN0YXRpYyBOU1N0cmluZyAqdGVzdFBhdGhGcm9tVVJMKE5T
VVJMKiB1cmwpCiB7CiAgICAgaWYgKFt1cmwgaXNGaWxlVVJMXSkgewpAQCAtMTc2LDE5ICsxNzUs
MTYgQEAgc3RhdGljIE5TU3RyaW5nICp0ZXN0UGF0aEZyb21VUkwoTlNVUkwqIAogCiAgICAgcmV0
dXJuIG5pbDsKIH0KLSNlbmRpZgogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAg
IEFTU0VSVChbZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNlXSk7CiAKLSNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBpZiAoIWRvbmUgJiYgW1tzZW5kZXIg
bWFpbkZyYW1lXSBpc0VxdWFsOmZyYW1lXSkgewogICAgICAgICBOU1VSTCAqcHJvdmlzaW9uYWxM
b2FkVVJMID0gW1tbZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNlXSBpbml0aWFsUmVxdWVzdF0g
VVJMXTsKICAgICAgICAgaWYgKE5TU3RyaW5nICp0ZXN0UGF0aCA9IHRlc3RQYXRoRnJvbVVSTChw
cm92aXNpb25hbExvYWRVUkwpKQogICAgICAgICAgICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0
aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoQ0ZTdHJpbmdSZWYpW0AiQ1JBU0hJTkcgVEVTVDogIiBz
dHJpbmdCeUFwcGVuZGluZ1N0cmluZzp0ZXN0UGF0aF0pOwogICAgIH0KLSNlbmRpZgogCiAgICAg
aWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAg
ICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAg
LSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRp
b25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0SGVscGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RIZWxwZXIubQkocmV2aXNpb24gMTU0MzEwKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RIZWxwZXIubQkod29ya2luZyBjb3B5KQpAQCAtNDAsOCAr
NDAsNiBAQAogLy8gdGVzdCBzY3JpcHQsIHNvIGl0IGNhbiBkbyB0aGUgam9iIGZvciBtdWx0aXBs
ZSBEdW1wUmVuZGVyVHJlZSB3aGlsZSB0aGV5IGFyZQogLy8gcnVubmluZyBsYXlvdXQgdGVzdHMu
CiAKLSNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0KIHN0YXRpYyBD
RlVSTFJlZiBzVXNlckNvbG9yUHJvZmlsZVVSTDsKIAogc3RhdGljIHZvaWQgaW5zdGFsbExheW91
dFRlc3RDb2xvclByb2ZpbGUoKQpAQCAtMTI0LDU5ICsxMjIsNiBAQCBzdGF0aWMgdm9pZCByZXN0
b3JlVXNlckNvbG9yUHJvZmlsZSh2b2lkCiAgICAgQ0ZSZWxlYXNlKHByb2ZpbGVJbmZvKTsKIH0K
IAotI2Vsc2UgLy8gRm9yIFNub3cgTGVvcGFyZCBhbmQgYmVmb3JlLCB1c2Ugb2xkZXIgQ00qIEFQ
SS4KLQotY29uc3QgY2hhciBjb2xvclByb2ZpbGVQYXRoW10gPSAiL1N5c3RlbS9MaWJyYXJ5L0Nv
bG9yU3luYy9Qcm9maWxlcy9HZW5lcmljIFJHQiBQcm9maWxlLmljYyI7Ci0KLUNNUHJvZmlsZUxv
Y2F0aW9uIGluaXRpYWxDb2xvclByb2ZpbGVMb2NhdGlvbjsgLy8gVGhlIGxvY1R5cGUgZmllbGQg
aXMgaW5pdGlhbGl6ZWQgdG8gMCB3aGljaCBpcyB0aGUgc2FtZSBhcyBjbU5vUHJvZmlsZUJhc2Uu
Ci0KLXN0YXRpYyB2b2lkIGluc3RhbGxMYXlvdXRUZXN0Q29sb3JQcm9maWxlKCkKLXsKLSAgICAv
LyBUbyBtYWtlIHN1cmUgd2UgZ2V0IGNvbnNpc3RlbnQgY29sb3JzIChub3QgZGVwZW5kZW50IG9u
IHRoZSBjaG9zZW4gY29sb3IKLSAgICAvLyBzcGFjZSBvZiB0aGUgbWFpbiBkaXNwbGF5KSwgd2Ug
Zm9yY2UgdGhlIGdlbmVyaWMgUkdCIGNvbG9yIHByb2ZpbGUuCi0gICAgLy8gVGhpcyBjYXVzZXMg
YSBjaGFuZ2UgdGhlIHVzZXIgY2FuIHNlZS4KLSAgICAKLSAgICBjb25zdCBDTURldmljZVNjb3Bl
IHNjb3BlID0geyBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0N1cnJl
bnRIb3N0IH07Ci0KLSAgICBDTVByb2ZpbGVSZWYgcHJvZmlsZSA9IDA7Ci0gICAgaW50IGVycm9y
ID0gQ01HZXRQcm9maWxlQnlBVklEKChDTURpc3BsYXlJRFR5cGUpa0NHRGlyZWN0TWFpbkRpc3Bs
YXksICZwcm9maWxlKTsKLSAgICBpZiAoIWVycm9yKSB7Ci0gICAgICAgIFVJbnQzMiBzaXplID0g
c2l6ZW9mKGluaXRpYWxDb2xvclByb2ZpbGVMb2NhdGlvbik7Ci0gICAgICAgIGVycm9yID0gTkNN
R2V0UHJvZmlsZUxvY2F0aW9uKHByb2ZpbGUsICZpbml0aWFsQ29sb3JQcm9maWxlTG9jYXRpb24s
ICZzaXplKTsKLSAgICAgICAgQ01DbG9zZVByb2ZpbGUocHJvZmlsZSk7Ci0gICAgfQotICAgIGlm
IChlcnJvcikgewotICAgICAgICBOU0xvZyhAIkZhaWxlZCB0byBnZXQgdGhlIGN1cnJlbnQgY29s
b3IgcHJvZmlsZS4gTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3VsdC4gRXJyb3I6
ICVkIiwgKGludCllcnJvcik7Ci0gICAgICAgIGluaXRpYWxDb2xvclByb2ZpbGVMb2NhdGlvbi5s
b2NUeXBlID0gY21Ob1Byb2ZpbGVCYXNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Q01Qcm9maWxlTG9jYXRpb24gbG9jYXRpb247Ci0gICAgbG9jYXRpb24ubG9jVHlwZSA9IGNtUGF0
aEJhc2VkUHJvZmlsZTsKLSAgICBzdHJuY3B5KGxvY2F0aW9uLnUucGF0aExvYy5wYXRoLCBjb2xv
clByb2ZpbGVQYXRoLCBzaXplb2YobG9jYXRpb24udS5wYXRoTG9jLnBhdGgpKTsKLSAgICBlcnJv
ciA9IENNU2V0RGV2aWNlUHJvZmlsZShjbURpc3BsYXlEZXZpY2VDbGFzcywgKENNRGV2aWNlSUQp
a0NHRGlyZWN0TWFpbkRpc3BsYXksICZzY29wZSwgY21EZWZhdWx0UHJvZmlsZUlELCAmbG9jYXRp
b24pOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBOU0xvZyhAIkZhaWxlZCBpbnN0YWxsIHRo
ZSBHZW5lcmljUkdCIGNvbG9yIHByb2ZpbGUuIE1hbnkgcGl4ZWwgdGVzdHMgbWF5IGZhaWwgYXMg
YSByZXN1bHQuIEVycm9yOiAlZCIsIChpbnQpZXJyb3IpOwotICAgICAgICBpbml0aWFsQ29sb3JQ
cm9maWxlTG9jYXRpb24ubG9jVHlwZSA9IGNtTm9Qcm9maWxlQmFzZTsKLSAgICB9Ci19Ci0KLXN0
YXRpYyB2b2lkIHJlc3RvcmVVc2VyQ29sb3JQcm9maWxlKHZvaWQpCi17Ci0gICAgLy8gVGhpcyBp
cyB1c2VkIGFzIGEgc2lnbmFsIGhhbmRsZXIsIGFuZCB0aHVzIHRoZSBjYWxscyBpbnRvIENvbG9y
U3luYyBhcmUgdW5zYWZlLgotICAgIC8vIEJ1dCB3ZSBtaWdodCBhcyB3ZWxsIHRyeSB0byByZXN0
b3JlIHRoZSB1c2VyJ3MgY29sb3IgcHJvZmlsZSwgd2UncmUgZ29pbmcgZG93biBhbnl3YXkuLi4K
LSAgICBpZiAoaW5pdGlhbENvbG9yUHJvZmlsZUxvY2F0aW9uLmxvY1R5cGUgIT0gY21Ob1Byb2Zp
bGVCYXNlKSB7Ci0gICAgICAgIGNvbnN0IENNRGV2aWNlU2NvcGUgc2NvcGUgPSB7IGtDRlByZWZl
cmVuY2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQ3VycmVudEhvc3QgfTsKLSAgICAgICAg
aW50IGVycm9yID0gQ01TZXREZXZpY2VQcm9maWxlKGNtRGlzcGxheURldmljZUNsYXNzLCAoQ01E
ZXZpY2VJRClrQ0dEaXJlY3RNYWluRGlzcGxheSwgJnNjb3BlLCBjbURlZmF1bHRQcm9maWxlSUQs
ICZpbml0aWFsQ29sb3JQcm9maWxlTG9jYXRpb24pOwotICAgICAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgICAgIE5TTG9nKEAiRmFpbGVkIHRvIHJlc3RvcmUgY29sb3IgcHJvZmlsZSwgdXNlIFN5
c3RlbSBQcmVmZXJlbmNlcyAtPiBEaXNwbGF5cyAtPiBDb2xvciB0byByZXNldC4gRXJyb3I6ICVk
IiwgKGludCllcnJvcik7Ci0gICAgICAgIH0KLSAgICAgICAgaW5pdGlhbENvbG9yUHJvZmlsZUxv
Y2F0aW9uLmxvY1R5cGUgPSBjbU5vUHJvZmlsZUJhc2U7Ci0gICAgfQotfQotCi0jZW5kaWYKLQog
c3RhdGljIHZvaWQgc2ltcGxlU2lnbmFsSGFuZGxlcihpbnQgc2lnKQogewogICAgIC8vIFRyeSB0
byByZXN0b3JlIHRoZSBjb2xvciBwcm9maWxlIGFuZCB0cnkgdG8gZ28gZG93biBjbGVhbmx5Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2aXNpb24g
MTU0MzEwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTkyMywxMSArOTIzLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRXZWJW
aWV3RWRpdGFibGUoYm9vbAogCiBzdGF0aWMgTlNTdHJpbmcgKlN5bmNocm9ub3VzTG9hZGVyUnVu
TG9vcE1vZGUgPSBAIkR1bXBSZW5kZXJUcmVlU3luY2hyb25vdXNMb2FkZXJSdW5Mb29wTW9kZSI7
CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNjAKLUBwcm90b2Nv
bCBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1AZW5kCi0jZW5kaWYKLQogQGlu
dGVyZmFjZSBTeW5jaHJvbm91c0xvYWRlciA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZT4KIHsKICAgICBOU1N0cmluZyAqbV91c2VybmFtZTsKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVk
QnVuZGxlTWFjLm1tCShyZXZpc2lvbiAxNTQzMTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTAsOSArNTAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUo
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgICBAIk5TT3ZlcmxheVNj
cm9sbGVyc0VuYWJsZWQiLAogICAgICAgICBAIkFsd2F5cyIsICAgICAgICAgICAgICAgICAgICAg
ICAgQCJBcHBsZVNob3dTY3JvbGxCYXJzIiwKICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0OkAiZW4iXSwgIEAiQXBwbGVMYW5ndWFnZXMiLAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6QCJub3RhdGlvbmFsIiwgQCJub3RhdGlvbmwiLCBuaWxdLCBAIk5TVGVz
dENvcnJlY3Rpb25EaWN0aW9uYXJ5IiwKLSNlbmRpZgogICAgICAgICBuaWxdOwogCiAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46ZGlj
dCBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVu
ZGxlUGFnZU1hYy5tbQkocmV2aXNpb24gMTU0MzEwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXVFIgewogCiB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiBzdGF0
aWMgU3RyaW5nIHRlc3RQYXRoRnJvbVVSTChXS1VSTFJlZiB1cmwpCiB7CiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiBjZlVSTCA9IGFkb3B0Q0YoV0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdXJsKSk7CkBAIC03MCwxMSArNjksOSBAQCBzdGF0aWMgU3RyaW5nIHRlc3RQYXRoRnJv
bVVSTChXS1VSTFJlZiB1CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9Ci0jZW5kaWYKIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZy
YW1lKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04Nyw3ICs4NCw2IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXIKICAgICAgICAgYnVpbGRlci5hcHBlbmQodGVzdFBh
dGgpOwogICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0
aW9uKGJ1aWxkZXIudG9TdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9Ci0j
ZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>