<?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>127632</bug_id>
          
          <creation_ts>2014-01-25 14:43:18 -0800</creation_ts>
          <short_desc>Remove some iOS #ifdefs by adding SQLiteDatabaseTracker to all the builds</short_desc>
          <delta_ts>2014-01-25 16:31:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>972047</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-25 14:43:18 -0800</bug_when>
    <thetext>Remove some iOS #ifdefs by adding SQLiteDatabaseTracker to all the builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972050</commentid>
    <comment_count>1</comment_count>
      <attachid>222236</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-25 14:45:56 -0800</bug_when>
    <thetext>Created attachment 222236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972051</commentid>
    <comment_count>2</comment_count>
      <attachid>222236</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-25 14:48:23 -0800</bug_when>
    <thetext>Comment on attachment 222236
Patch

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

&gt; Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp:37
&gt; +static SQLiteDatabaseTrackerClient* s_staticSQLiteDatabaseTrackerClient = 0;

nullptr (or omit)

&gt; Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp:40
&gt; +static Mutex&amp; transactionInProgressMutex()

Can we use C++ standard library locking instead of WTF locking?

&gt; Source/WebCore/platform/sql/SQLiteDatabaseTracker.h:43
&gt; +#if !ASSERT_DISABLED
&gt; +bool hasTransactionInProgress();
&gt; +#endif // !ASSERT_DISABLED

That endif comment. Really?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972077</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-25 16:26:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 222236 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222236&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp:37
&gt; &gt; +static SQLiteDatabaseTrackerClient* s_staticSQLiteDatabaseTrackerClient = 0;
&gt; 
&gt; nullptr (or omit)
&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp:40
&gt; &gt; +static Mutex&amp; transactionInProgressMutex()
&gt; 
&gt; Can we use C++ standard library locking instead of WTF locking?
&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteDatabaseTracker.h:43
&gt; &gt; +#if !ASSERT_DISABLED
&gt; &gt; +bool hasTransactionInProgress();
&gt; &gt; +#endif // !ASSERT_DISABLED
&gt; 
&gt; That endif comment. Really?

Heh, I just moved the file, but I will clean it up before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972079</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-25 16:31:57 -0800</bug_when>
    <thetext>Committed r162787: &lt;http://trac.webkit.org/changeset/162787&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222236</attachid>
            <date>2014-01-25 14:45:56 -0800</date>
            <delta_ts>2014-01-25 14:48:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127632-20140125144556.patch</filename>
            <type>text/plain</type>
            <size>50541</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Mjc4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE0LTAxLTI1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHNvbWUgaU9TICNpZmRlZnMg
YnkgYWRkaW5nIFNRTGl0ZURhdGFiYXNlVHJhY2tlciB0byBhbGwgdGhlIGJ1aWxkcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NjMyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgU1FMaXRl
RGF0YWJhc2VUcmFja2VyIGFuZCBjbGllbnQgZnJvbSBwbGF0Zm9ybS9zcWwvaW9zIHRvIHBsYXRm
b3JtL3NxbCwKKyAgICAgICAgYXMgdGhlcmUgaXMgbm90aGluZyBpT1Mgc3BlY2lmaWMgYWJvdXQg
aXQuIFRoZW4sIHVuLSNpZmRlZiBhbGwgaXRzIHVzZXMuIEZvcgorICAgICAgICBwb3J0cyB0aGF0
IGRvbid0IHNldHVwIGEgY2xpZW50LCB0aGlzIGhhcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHA6
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzZW5kV2lsbFJldmVh
bEVkZ2VFdmVudHNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlVHJhY2tlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9p
b3MvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9pb3MvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmguCisgICAgICAgICogcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvaW9zL1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oLgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9pb3M6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3FsL2lv
cy9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9pb3MvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vc3FsL2lvcy9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
QXJlYVN5bmM6OnN5bmMpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgor
CiAyMDE0LTAxLTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBD
YWxsIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGluc3RlYWQgb2YgY2hhcmFjdGVycyBhdCBtb3JlIGNh
bGwgc2l0ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjI3NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjA1Nyw2ICsy
MDU3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3NxbC9TUUxWYWx1ZS5j
cHAKICAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXplci5jcHAKICAgICBwbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJh
Y2tlci5jcHAKICAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKICAgICBwbGF0
Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTYyNzY3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtNTQ3OSw2ICs1NDc5LDkgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXplci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwCShy
ZXZpc2lvbiAxNjI3NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIK
ICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01MiwxMCArNTMsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmgiCi0jZW5kaWYKLQogLy8gUmVnaXN0ZXJpbmcgIm9wZW5lZCIgZGF0YWJhc2VzIHdpdGggdGhl
IERhdGFiYXNlVHJhY2tlcgogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQogLy8gVGhlIERhdGFiYXNlVHJhY2tlciBtYWludGFpbnMgYSBs
aXN0IG9mIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVlbgpAQCAtMzMyLDkgKzMyOSwxMCBAQCBib29s
IERhdGFiYXNlQmFja2VuZEJhc2U6OnBlcmZvcm1PcGVuQW5kCiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSB3YWl0IHRpbGwgdGhlIGJhY2tncm91bmQgcmVtb3ZhbCBvZiB0aGUgZW1wdHkgZGF0YWJh
c2UgZmlsZXMgZmluaXNoZWQgYmVmb3JlIHRyeWluZyB0byBvcGVuIGFueSBkYXRhYmFzZS4KICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlTXV0
ZXgoKSk7CiAgICAgfQotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVy
IHRyYW5zYWN0aW9uQ291bnRlcjsKICNlbmRpZgogCisgICAgU1FMaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOworCiAgICAgaWYgKCFtX3NxbGl0
ZURhdGFiYXNlLm9wZW4obV9maWxlbmFtZSwgdHJ1ZSkpIHsKICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSIsIG1fc3FsaXRl
RGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01ODcsOSArNTg1LDggQEAgdW5zaWduZWQgbG9uZyBs
b25nIERhdGFiYXNlQmFja2VuZEJhc2U6OgogCiB2b2lkIERhdGFiYXNlQmFja2VuZEJhc2U6Omlu
Y3JlbWVudGFsVmFjdXVtSWZOZWVkZWQoKQogewotI2lmIFBMQVRGT1JNKElPUykKICAgICBTUUxp
dGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0j
ZW5kaWYKKwogICAgIGludDY0X3QgZnJlZVNwYWNlU2l6ZSA9IG1fc3FsaXRlRGF0YWJhc2UuZnJl
ZVNwYWNlU2l6ZSgpOwogICAgIGludDY0X3QgdG90YWxTaXplID0gbV9zcWxpdGVEYXRhYmFzZS50
b3RhbFNpemUoKTsKICAgICBpZiAodG90YWxTaXplIDw9IDEwICogZnJlZVNwYWNlU2l6ZSkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CShyZXZpc2lvbiAxNjI3NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NDU0LDYgKzg0NTQsNyBAQAogICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0
ZUF1dGhvcml6ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
c3FsXFNRTGl0ZURhdGFiYXNlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXHNxbFxTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZVN0YXRlbWVudC5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlVHJhbnNhY3Rp
b24uY3BwIiAvPgpAQCAtMTk1MTEsNiArMTk1MTIsOCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVEYXRhYmFzZS5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZURhdGFi
YXNlVHJhY2tlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3Fs
XFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZUZpbGVTeXN0ZW0uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVTdGF0ZW1lbnQuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNxbFxTUUxpdGVUcmFuc2FjdGlvbi5oIiAvPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTYyNzY3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTIzLDYgKzE5MjMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3Fs
XFNRTGl0ZURhdGFiYXNlLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXHNxbDwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
c3FsXFNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxz
cWw8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRm
b3JtXHNxbDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtODcwMiw2ICs4NzA1LDEyIEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRlRGF0YWJhc2Uu
aCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXHNxbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cc3FsXFNRTGl0ZURhdGFiYXNl
VHJhY2tlci5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cc3FsPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxzcWxcU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxzcWw8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXHNxbFxTUUxpdGVGaWxlU3lzdGVtLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxzcWw8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2Mjc2NykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtOTIzNiw5ICs5MjM2LDkgQEAKIAkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8q
IFJlc291cmNlSGFuZGxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVzb3VyY2VIYW5kbGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0NkY2RjkxNjI3QTJDOTAwMDYy
MjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU09FU0VsZW1lbnRJbmRleFVpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0U0NzRFMUMxMjQ5
NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0U0NzRFMUQxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVE
YXRhYmFzZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RTQ3NEUx
QjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5o
OyBwYXRoID0gc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3RTQ3NEUxQzEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJh
c2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTGl0ZURhdGFi
YXNlVHJhY2tlci5oOyBwYXRoID0gc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3RTQ3NEUxRDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHBhdGggPSBzcWwvU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U1RDdBNzMxNjFEM0Y4RjAw
ODk2QzM0IC8qIE9FU0VsZW1lbnRJbmRleFVpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gT0VTRWxlbWVudEluZGV4VWludC5jcHA7IHBhdGggPSBjYW52YXMvT0VT
RWxlbWVudEluZGV4VWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNUQ3
QTc0MTYxRDNGOEYwMDg5NkMzNCAvKiBPRVNFbGVtZW50SW5kZXhVaW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9FU0VsZW1lbnRJbmRleFVpbnQuaDsgcGF0aCA9IGNhbnZh
cy9PRVNFbGVtZW50SW5kZXhVaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdF
NjZFMjMxMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MTQsNyArMTQ1MTQsOSBAQAogCQkxQTJF
NkU1NjBDQzU1MUUwMDA0QTIwNjIgLyogc3FsICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk3RTQ3NEUxOTEyNDk0REE5MDAyMzUzNjQgLyogaW9zICovLAor
CQkJCTdFNDc0RTFEMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3Bw
ICovLAorCQkJCTdFNDc0RTFDMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuaCAqLywKKwkJCQk3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50LmggKi8sCiAJCQkJMUEyRTZFNzgwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0
ZUF1dGhvcml6ZXIuY3BwICovLAogCQkJCTFBMjI0NjQzMENDOThEREIwMEMwNTI0MCAvKiBTUUxp
dGVEYXRhYmFzZS5jcHAgKi8sCiAJCQkJMUEyMjQ2NDQwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0
ZURhdGFiYXNlLmggKi8sCkBAIC0xNjIxMywxNyArMTYyMTUsNiBAQAogCQkJcGF0aCA9IGljdTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTdFNDc0RTE5MTI0OTREQTkwMDIz
NTM2NCAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAot
CQkJCTdFNDc0RTFEMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3Bw
ICovLAotCQkJCTdFNDc0RTFDMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuaCAqLywKLQkJCQk3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50LmggKi8sCi0JCQkpOwotCQkJbmFtZSA9IGlvczsKLQkJCXBhdGggPSBzcWwv
aW9zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJN0VFNjg0NzMxMkQyNkU1
NTAwRTc5NDE1IC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMTYyNzY3KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsMjEgKzMxLDE4IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTUUxp
dGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCi0jZW5kaWYKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciBmbGF0RmlsZVN1YmRpcmVj
dG9yeVtdID0gIkFwcGxpY2F0aW9uQ2FjaGUiOwpAQCAtMTA0LDEwICsxMDEsOCBAQCBzdGF0aWMg
dW5zaWduZWQgdXJsSG9zdEhhc2goY29uc3QgVVJMJiB1CiAKIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFu
aWZlc3RVUkwpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSBQ
TEFURk9STShJT1MpLWd1YXJkcyBpbnNpZGUgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9y
IG9mIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyLgogICAgIFNRTGl0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLSNlbmRp
ZgorCiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTgyLDEwICsxNzcsOCBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlCiAgICAgLy8gdG8gYXZvaWQgdHJ5aW5nIHRvIG9w
ZW4gdGhlIGRhdGFiYXNlIG92ZXIgYW5kIG92ZXIgaWYgaXQgZG9lc24ndCBleGlzdC4KICAgICBo
YXNMb2FkZWRIYXNoZXMgPSB0cnVlOwogICAgIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBG
SVhNRTogTW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZHMgaW5zaWRlIHRoZSBjb25zdHJ1Y3Rv
ciBhbmQgZGVzdHJ1Y3RvciBvZiBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRl
ci4KICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlv
bkNvdW50ZXI7Ci0jZW5kaWYKKwogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFt
X2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm47CkBAIC0yMjksMTAgKzIyMiw3IEBA
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKICAgICBpZiAoIW1fZGF0
YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgLy8gRklYTUU6IE1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmRzIGluc2lk
ZSB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Igb2YgU1FMaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzQXV0b0NvdW50ZXIuCiAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0Nv
dW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotI2VuZGlmCiAKICAgICAvLyBDaGVjayB0aGUgZGF0
YWJhc2UuIExvb2sgZm9yIGFsbCBjYWNoZSBncm91cHMgd2l0aCBhIG5ld2VzdCBjYWNoZS4KICAg
ICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgaWQsIG1hbmlm
ZXN0VVJMLCBuZXdlc3RDYWNoZSBGUk9NIENhY2hlR3JvdXBzIFdIRVJFIG5ld2VzdENhY2hlIElT
IE5PVCBOVUxMIik7CkBAIC0yODAsMTAgKzI3MCw4IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCog
QXBwbGljYXRpb25DYWNoZVMKIAogQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogewot
I2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogTW92ZSB0aGUgUExBVEZPUk0oSU9TKS1n
dWFyZHMgaW5zaWRlIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvZiBTUUxpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlci4KICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0jZW5kaWYKKwogICAgIEFTU0VS
VCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKIAogICAgIC8vIENoZWNrIGlmIGFuIGFw
cHJvcHJpYXRlIGNhY2hlIGFscmVhZHkgZXhpc3RzIGluIG1lbW9yeS4KQEAgLTQ1NSwxMCArNDQz
LDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2V0RGVmYXVsdAogCiBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVRdW90YUZvck9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90JiBxdW90YSkKIHsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgLy8gRklYTUU6IE1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmRzIGluc2lkZSB0aGUg
Y29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Igb2YgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNz
QXV0b0NvdW50ZXIuCiAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIg
dHJhbnNhY3Rpb25Db3VudGVyOwotI2VuZGlmCisKICAgICAvLyBJZiBhbiBPcmlnaW4gcmVjb3Jk
IGRvZXNuJ3QgZXhpc3QsIHRoZW4gdGhlIENPVU5UIHdpbGwgYmUgMCBhbmQgcXVvdGEgd2lsbCBi
ZSAwLgogICAgIC8vIFVzaW5nIHRoZSBjb3VudCB0byBkZXRlcm1pbmUgaWYgYSByZWNvcmQgZXhp
c3RlZCBvciBub3QgaXMgYSBzYWZlIHdheSB0byBkZXRlcm1pbmUKICAgICAvLyBpZiBhIHF1b3Rh
IG9mIDAgaXMgcmVhbCwgZnJvbSB0aGUgcmVjb3JkLCBvciBmcm9tIG51bGwuCkBAIC00ODIsMTAg
KzQ2OCw4IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVEKIAogYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCYgdXNhZ2UpCiB7Ci0jaWYgUExBVEZPUk0o
SU9TKQotICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkcyBpbnNpZGUg
dGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG9mIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0F1dG9Db3VudGVyLgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3Vu
dGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLSNlbmRpZgorCiAgICAgLy8gSWYgYW4gT3JpZ2lucyBy
ZWNvcmQgZG9lc24ndCBleGlzdCwgdGhlbiB0aGUgU1VNIHdpbGwgYmUgbnVsbCwKICAgICAvLyB3
aGljaCB3aWxsIGJlY29tZSAwLCBhcyBleHBlY3RlZCwgd2hlbiBjb252ZXJ0aW5nIHRvIGEgbnVt
YmVyLgogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBT
VU0oQ2FjaGVzLnNpemUpIgpAQCAtNTEwLDEwICs0OTQsOCBAQCBib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWxjdWxhdGVVCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNh
bGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShjb25zdCBTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSwgaW50NjRfdCYgcmVtYWlu
aW5nU2l6ZSkKIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IE1vdmUgdGhlIFBM
QVRGT1JNKElPUyktZ3VhcmRzIGluc2lkZSB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Ig
b2YgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIuCiAgICAgU1FMaXRlVHJh
bnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotI2VuZGlm
CisKICAgICBvcGVuRGF0YWJhc2UoZmFsc2UpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4o
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTYzLDEwICs1NDUsOCBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGludDY0X3QgcXVvdGEpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1F
OiBNb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkcyBpbnNpZGUgdGhlIGNvbnN0cnVjdG9yIGFu
ZCBkZXN0cnVjdG9yIG9mIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyLgog
ICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291
bnRlcjsKLSNlbmRpZgorCiAgICAgb3BlbkRhdGFiYXNlKHRydWUpOwogICAgIGlmICghbV9kYXRh
YmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMzLDEwICs2MTMsOCBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlTY2hlCiAgICAgCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RF
eGlzdCkKIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IE1vdmUgdGhlIFBMQVRG
T1JNKElPUyktZ3VhcmRzIGluc2lkZSB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Igb2Yg
U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIuCiAgICAgU1FMaXRlVHJhbnNh
Y3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotI2VuZGlmCisK
ICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05NTAs
MTAgKzkyOCw4IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGwKIAog
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkVHlwZShBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCBBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSkKIHsKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IE1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3Vh
cmRzIGluc2lkZSB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Igb2YgU1FMaXRlVHJhbnNh
Y3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIuCiAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dy
ZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotI2VuZGlmCisKICAgICBBU1NFUlRf
VU5VU0VEKGNhY2hlLCBjYWNoZS0+c3RvcmFnZUlEKCkpOwogICAgIEFTU0VSVChyZXNvdXJjZS0+
c3RvcmFnZUlEKCkpOwogCkBAIC05NzAsMTAgKzk0Niw4IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlVXBkYXQKIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgQXBwbGljYXRpb25DYWNoZSog
Y2FjaGUpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSBQTEFU
Rk9STShJT1MpLWd1YXJkcyBpbnNpZGUgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG9m
IFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyLgogICAgIFNRTGl0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLSNlbmRpZgor
CiAgICAgQVNTRVJUKGNhY2hlLT5zdG9yYWdlSUQoKSk7CiAgICAgCiAgICAgb3BlbkRhdGFiYXNl
KHRydWUpOwpAQCAtMTI3MCwxMCArMTI0NCw4IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gQXBwbGljYXRpb24KICAgICAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnJlbW92
ZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSkKIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8g
RklYTUU6IE1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmRzIGluc2lkZSB0aGUgY29uc3RydWN0
b3IgYW5kIGRlc3RydWN0b3Igb2YgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50
ZXIuCiAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rp
b25Db3VudGVyOwotI2VuZGlmCisKICAgICBpZiAoIWNhY2hlLT5zdG9yYWdlSUQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIApAQCAtMTMxMSwxMCArMTI4Myw4IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnJlbW92ZShBcHAKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZW1wdHkoKQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogTW92ZSB0aGUgUExB
VEZPUk0oSU9TKS1ndWFyZHMgaW5zaWRlIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBv
ZiBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlci4KICAgICBTUUxpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0jZW5kaWYK
KwogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKCFtX2RhdGFiYXNlLmlz
T3BlbigpKQpAQCAtMTM3OSwxMCArMTM0OSw4IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OndyaXRlRGF0YVQKIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5
T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBBcHBsaWNhdGlvbkNhY2hlSG9z
dCogY2FjaGVIb3N0KQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogTW92ZSB0
aGUgUExBVEZPUk0oSU9TKS1ndWFyZHMgaW5zaWRlIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3RvciBvZiBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlci4KICAgICBTUUxp
dGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0j
ZW5kaWYKKwogICAgIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gY2FjaGVIb3N0LT5hcHBsaWNh
dGlvbkNhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
NDE5LDEwICsxMzg3LDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5
TwogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjptYW5pZmVzdFVSTHMoVmVjdG9yPFVS
TD4qIHVybHMpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSBQ
TEFURk9STShJT1MpLWd1YXJkcyBpbnNpZGUgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9y
IG9mIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyLgogICAgIFNRTGl0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLSNlbmRp
ZgorCiAgICAgQVNTRVJUKHVybHMpOwogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAgICAgaWYg
KCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMTQ0MSwxMCArMTQwNyw4IEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVIKIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y2FjaGVHcm91cFNpemUoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCwgaW50NjRfdCog
c2l6ZSkKIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IE1vdmUgdGhlIFBMQVRG
T1JNKElPUyktZ3VhcmRzIGluc2lkZSB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Igb2Yg
U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIuCiAgICAgU1FMaXRlVHJhbnNh
Y3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotI2VuZGlmCisK
ICAgICBBU1NFUlQoc2l6ZSk7CiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1f
ZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC0xNDcxLDEwICsxNDM1LDggQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cAogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpkZWxldGVDYWNoZUdyb3VwKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkcyBp
bnNpZGUgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG9mIFNRTGl0ZVRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0F1dG9Db3VudGVyLgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1
dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLSNlbmRpZgorCiAgICAgU1FMaXRlVHJhbnNh
Y3Rpb24gZGVsZXRlVHJhbnNhY3Rpb24obV9kYXRhYmFzZSk7CiAgICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIHRoZSBncm91cCBpcyBpbiBtZW1vcnkuCiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBn
cm91cCA9IG1fY2FjaGVzSW5NZW1vcnkuZ2V0KG1hbmlmZXN0VVJMKTsKQEAgLTE1MjYsMTAgKzE0
ODgsOCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVDYWNoCiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnZhY3V1bURhdGFiYXNlRmlsZSgpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkcyBp
bnNpZGUgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG9mIFNRTGl0ZVRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0F1dG9Db3VudGVyLgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1
dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLSNlbmRpZgorCiAgICAgb3BlbkRhdGFiYXNl
KGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkocmV2aXNpb24g
MTYyNzY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkod29y
a2luZyBjb3B5KQpAQCAtMjU0LDYgKzI1NCw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIGhhc0xh
eWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKICAgICBib29sIGhhc0xheWVyRm9yU2Ny
b2xsQ29ybmVyKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZFdpbGxSZXZlYWxFZGdl
RXZlbnRzSWZOZWVkZWQoY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYpIHsgfQorCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChW
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJl
aGF2aW9yKSBjb25zdDsKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBJbnRQ
b2ludCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDE2Mjc2NykJKGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL2lvcy9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOjE2Mjc2NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgU1FM
aXRlRGF0YWJhc2VUcmFja2VyIHsKKworc3RhdGljIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dCogc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgPSAwOworc3RhdGljIHVuc2ln
bmVkIHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRlciA9IDA7CisKK3N0YXRpYyBNdXRleCYg
dHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxNdXRleD4gdGlwTXV0ZXg7CisgICAgcmV0dXJuIHRpcE11dGV4OworfQorCit2b2lkIHNldENs
aWVudChTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQo
Y2xpZW50KTsKKyAgICBBU1NFUlQoIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50
IHx8IHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID09IGNsaWVudCk7CisgICAg
c19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgPSBjbGllbnQ7Cit9CisKK3ZvaWQg
aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKQoreworICAgIGlmICghc19zdGF0
aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBNdXRl
eExvY2tlciBsb2NrKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KCkpOworCisgICAgc190cmFu
c2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyKys7CisgICAgaWYgKHNfdHJhbnNhY3Rpb25JblByb2dy
ZXNzQ291bnRlciA9PSAxKQorICAgICAgICBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC0+d2lsbEJlZ2luRmlyc3RUcmFuc2FjdGlvbigpOworfQorCit2b2lkIGRlY3JlbWVudFRy
YW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCkKK3sKKyAgICBpZiAoIXNfc3RhdGljU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgTXV0ZXhMb2NrZXIgbG9j
ayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCgpKTsKKworICAgIEFTU0VSVChzX3RyYW5zYWN0
aW9uSW5Qcm9ncmVzc0NvdW50ZXIpOworICAgIHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRl
ci0tOworCisgICAgaWYgKCFzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIpCisgICAgICAg
IHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LT5kaWRGaW5pc2hMYXN0VHJhbnNh
Y3Rpb24oKTsKK30KKworI2lmICFBU1NFUlRfRElTQUJMRUQKK2Jvb2wgaGFzVHJhbnNhY3Rpb25J
blByb2dyZXNzKCkKK3sKKyAgICByZXR1cm4gIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50IHx8IHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRlciA+IDA7Cit9CisjZW5kaWYg
Ly8gIUFTU0VSVF9ESVNBQkxFRAorCit9IC8vIG5hbWVzcGFjZSBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24gMTYyNzY3
KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvaW9zL1NRTGl0ZURhdGFiYXNlVHJh
Y2tlci5oOjE2Mjc2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTUUxpdGVE
YXRhYmFzZVRyYWNrZXJfaAorI2RlZmluZSBTUUxpdGVEYXRhYmFzZVRyYWNrZXJfaAorCisjaW5j
bHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFNRTGl0ZURhdGFi
YXNlVHJhY2tlciB7CisKK3ZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQo
KTsKK3ZvaWQgaW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKKwordm9pZCBz
ZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Kik7CisKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECitib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpOworI2VuZGlmIC8vICFBU1NF
UlRfRElTQUJMRUQKKworfTsKKworY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0
b0NvdW50ZXIgeworcHVibGljOgorICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9D
b3VudGVyKCkKKyAgICB7CisgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aW5jcmVtZW50
VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKKyAgICB9CisgICAgflNRTGl0ZVRyYW5zYWN0
aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyKCkKKyAgICB7CisgICAgICAgIFNRTGl0ZURhdGFiYXNl
VHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTUUxpdGVEYXRhYmFzZVRy
YWNrZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw2IEBACiAjZGVmaW5lIFNRTGl0ZURhdGFiYXNlVHJhY2tlcl9oCiAKICNpbmNsdWRlICJT
UUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oCShyZXZp
c2lvbiAxNjI3NjcpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9pb3MvU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg6MTYyNzY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudF9oCisjZGVmaW5lIFNRTGl0ZURh
dGFiYXNlVHJhY2tlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5G
aXJzdFRyYW5zYWN0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMYXN0VHJh
bnNhY3Rpb24oKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL2lvcy9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9pb3MvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcAko
cmV2aXNpb24gMTYyNzY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL2lvcy9TUUxp
dGVEYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCi0KLSNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1uYW1lc3BhY2UgU1FMaXRlRGF0YWJhc2VUcmFja2VyIHsKLQotc3RhdGljIFNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudCogc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQgPSAwOwotc3RhdGljIHVuc2lnbmVkIHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRlciA9
IDA7Ci0KLXN0YXRpYyBNdXRleCYgdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgoKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdXRleD4gdGlwTXV0ZXg7Ci0gICAgcmV0dXJuIHRpcE11
dGV4OwotfQotCi12b2lkIHNldENsaWVudChTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNs
aWVudCkKLXsKLSAgICBBU1NFUlQoY2xpZW50KTsKLSAgICBBU1NFUlQoIXNfc3RhdGljU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50IHx8IHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50ID09IGNsaWVudCk7Ci0gICAgc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQg
PSBjbGllbnQ7Ci19Ci0KLXZvaWQgaW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQo
KQotewotICAgIGlmICghc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQpCi0gICAg
ICAgIHJldHVybjsKLSAgICBNdXRleExvY2tlciBsb2NrKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc011
dGV4KCkpOwotCi0gICAgc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyKys7Ci0gICAgaWYg
KHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRlciA9PSAxKQotICAgICAgICBzX3N0YXRpY1NR
TGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC0+d2lsbEJlZ2luRmlyc3RUcmFuc2FjdGlvbigpOwot
fQotCi12b2lkIGRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCkKLXsKLSAgICBp
ZiAoIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KQotICAgICAgICByZXR1cm47
Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCgpKTsKLQot
ICAgIEFTU0VSVChzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIpOwotICAgIHNfdHJhbnNh
Y3Rpb25JblByb2dyZXNzQ291bnRlci0tOwotCi0gICAgaWYgKCFzX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0NvdW50ZXIpCi0gICAgICAgIHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50
LT5kaWRGaW5pc2hMYXN0VHJhbnNhY3Rpb24oKTsKLX0KLQotI2lmICFBU1NFUlRfRElTQUJMRUQK
LWJvb2wgaGFzVHJhbnNhY3Rpb25JblByb2dyZXNzKCkKLXsKLSAgICByZXR1cm4gIXNfc3RhdGlj
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50IHx8IHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291
bnRlciA+IDA7Ci19Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotCi19IC8vIG5hbWVzcGFj
ZSBTUUxpdGVEYXRhYmFzZVRyYWNrZXIKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL2lvcy9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvaW9zL1NRTGl0ZURhdGFi
YXNlVHJhY2tlci5oCShyZXZpc2lvbiAxNjI3NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvaW9zL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFNRTGl0ZURhdGFiYXNlVHJhY2tlcl9oCi0jZGVmaW5lIFNRTGl0ZURhdGFi
YXNlVHJhY2tlcl9oCi0KLSNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCIK
LSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1u
YW1lc3BhY2UgU1FMaXRlRGF0YWJhc2VUcmFja2VyIHsKLQotdm9pZCBkZWNyZW1lbnRUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3NDb3VudCgpOwotdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jl
c3NDb3VudCgpOwotCi12b2lkIHNldENsaWVudChTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQq
KTsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLWJvb2wgaGFzVHJhbnNhY3Rpb25JblByb2dyZXNz
KCk7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotCi19OwotCi1jbGFzcyBTUUxpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB7Ci1wdWJsaWM6Ci0gICAgU1FMaXRlVHJhbnNh
Y3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIoKQotICAgIHsKLSAgICAgICAgU1FMaXRlRGF0YWJh
c2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwotICAgIH0K
LSAgICB+U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIoKQotICAgIHsKLSAg
ICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jl
c3NDb3VudCgpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFNRTGl0ZURhdGFiYXNlVHJhY2tlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvaW9zL1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9pb3MvU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmgJKHJldmlzaW9uIDE2Mjc2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9pb3Mv
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKLSNkZWZpbmUgU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTUUxpdGVEYXRh
YmFzZVRyYWNrZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgflNRTGl0ZURhdGFiYXNl
VHJhY2tlckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZpcnN0VHJh
bnNhY3Rpb24oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhc3RUcmFuc2FjdGlv
bigpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvaW9zL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL2lvcy9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lv
biAxNjI3NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvaW9zL1NRTGl0ZURhdGFi
YXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKLQotI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBTUUxpdGVEYXRhYmFzZVRyYWNrZXIgewotCi1zdGF0aWMgU1FMaXRlRGF0YWJh
c2VUcmFja2VyQ2xpZW50KiBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCA9IDA7
Ci1zdGF0aWMgdW5zaWduZWQgc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyID0gMDsKLQot
c3RhdGljIE11dGV4JiB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCgpCi17Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPE11dGV4PiB0aXBNdXRleDsKLSAgICByZXR1cm4gdGlwTXV0ZXg7Ci19
Ci0KLXZvaWQgc2V0Q2xpZW50KFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50KQot
ewotICAgIEFTU0VSVChjbGllbnQpOwotICAgIEFTU0VSVCghc19zdGF0aWNTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQgfHwgc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgPT0g
Y2xpZW50KTsKLSAgICBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCA9IGNsaWVu
dDsKLX0KLQotdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpCi17Ci0g
ICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkKLSAgICAgICAgcmV0
dXJuOwotICAgIE11dGV4TG9ja2VyIGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgoKSk7
Ci0KLSAgICBzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIrKzsKLSAgICBpZiAoc190cmFu
c2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyID09IDEpCi0gICAgICAgIHNfc3RhdGljU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50LT53aWxsQmVnaW5GaXJzdFRyYW5zYWN0aW9uKCk7Ci19Ci0KLXZv
aWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKQotewotICAgIGlmICghc19z
dGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBN
dXRleExvY2tlciBsb2NrKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KCkpOwotCi0gICAgQVNT
RVJUKHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRlcik7Ci0gICAgc190cmFuc2FjdGlvbklu
UHJvZ3Jlc3NDb3VudGVyLS07Ci0KLSAgICBpZiAoIXNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291
bnRlcikKLSAgICAgICAgc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQtPmRpZEZp
bmlzaExhc3RUcmFuc2FjdGlvbigpOwotfQotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotYm9vbCBo
YXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKQotewotICAgIHJldHVybiAhc19zdGF0aWNTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQgfHwgc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyID4g
MDsKLX0KLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi0KLX0gLy8gbmFtZXNwYWNlIFNRTGl0
ZURhdGFiYXNlVHJhY2tlcgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvaW9zL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9pb3MvU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmgJKHJldmlzaW9uIDE2Mjc2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9p
b3MvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgU1FMaXRlRGF0YWJhc2VUcmFja2VyX2gKLSNkZWZpbmUgU1FMaXRlRGF0YWJhc2VUcmFj
a2VyX2gKLQotI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oIgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBTUUxpdGVEYXRhYmFzZVRyYWNrZXIgewotCi12b2lkIGRlY3JlbWVudFRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0NvdW50KCk7Ci12b2lkIGluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50
KCk7Ci0KLXZvaWQgc2V0Q2xpZW50KFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCopOwotCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotYm9vbCBoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKTsKLSNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi0KLX07Ci0KLWNsYXNzIFNRTGl0ZVRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0F1dG9Db3VudGVyIHsKLXB1YmxpYzoKLSAgICBTUUxpdGVUcmFuc2FjdGlvbklu
UHJvZ3Jlc3NBdXRvQ291bnRlcigpCi0gICAgewotICAgICAgICBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXI6OmluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7Ci0gICAgfQotICAgIH5T
UUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlcigpCi0gICAgewotICAgICAgICBT
UUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50
KCk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU1FM
aXRlRGF0YWJhc2VUcmFja2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9p
b3MvU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL2lvcy9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAkocmV2
aXNpb24gMTYyNzY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL2lvcy9TUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTUUxp
dGVEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAotI2RlZmluZSBTUUxpdGVEYXRhYmFzZVRyYWNrZXJD
bGllbnRfaAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+U1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRmlyc3RUcmFuc2FjdGlv
bigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGFzdFRyYW5zYWN0aW9uKCkgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU1FMaXRlRGF0YWJh
c2VUcmFja2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VB
cmVhU3luYy5jcHAJKHJldmlzaW9uIDE2Mjc2NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAj
aW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKQEAgLTQxLDEwICs0Miw2IEBACiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNp
ZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBJZiB0aGUgU3RvcmFnZUFyZWEgdW5kZXJn
b2VzIHJhcGlkIGNoYW5nZXMsIGRvbid0IHN5bmMgZWFjaCBjaGFuZ2UgdG8gZGlzay4KQEAgLTIz
Niw5ICsyMzMsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5ECiAg
ICAgQVNTRVJUKCFtX2RhdGFiYXNlLmlzT3BlbigpKTsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VP
cGVuRmFpbGVkKTsKIAotI2lmIFBMQVRGT1JNKElPUykKICAgICBTUUxpdGVUcmFuc2FjdGlvbklu
UHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0jZW5kaWYKKwogICAgIFN0
cmluZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5h
bWUobV9kYXRhYmFzZUlkZW50aWZpZXIpOwogCiAgICAgaWYgKCFmaWxlRXhpc3RzKGRhdGFiYXNl
RmlsZW5hbWUpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlzdGVudCkKQEAgLTQx
MCw5ICs0MDYsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luYyhib29sIGNsZWFySXRlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0jaWYgUExBVEZPUk0oSU9TKQogICAgIFNRTGl0
ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLSNl
bmRpZgorCiAgICAgLy8gSWYgdGhlIGNsZWFyIGZsYWcgaXMgc2V0LCB0aGVuIHdlIGNsZWFyIGFs
bCBpdGVtcyBvdXQgYmVmb3JlIHdlIHdyaXRlIGFueSBuZXcgb25lcyBpbi4KICAgICBpZiAoY2xl
YXJJdGVtcykgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgY2xlYXIobV9kYXRhYmFzZSwgIkRF
TEVURSBGUk9NIEl0ZW1UYWJsZSIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5jcHAJKHJldmlzaW9uIDE2Mjc2NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTMgQEAK
IAogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgot
I2luY2x1ZGUgIlN0b3JhZ2VUaHJlYWQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KQEAgLTQyLDEwICs0Myw2IEBACiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTdG9yYWdlVHJhY2tlciogc3RvcmFn
ZVRyYWNrZXIgPSAwOwpAQCAtMTM2LDkgKzEzMyw5IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6Om9w
ZW5UcmFja2VyRGF0YWJhc2UKIHsKICAgICBBU1NFUlQobV9pc0FjdGl2ZSk7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorCiAgICAgU1FMaXRlVHJhbnNh
Y3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotI2VuZGlmCisK
ICAgICBBU1NFUlQoIW1fZGF0YWJhc2VNdXRleC50cnlMb2NrKCkpOwogCiAgICAgaWYgKG1fZGF0
YWJhc2UuaXNPcGVuKCkpCkBAIC0xOTksOSArMTk2LDggQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6
c3luY0ltcG9ydE9yaWdpbklkZQogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsK
IAogICAgICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkgewotI2lmIFBMQVRGT1JNKElPUykK
ICAgICAgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5z
YWN0aW9uQ291bnRlcjsKLSNlbmRpZgorCiAgICAgICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3Rh
dGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1Qgb3JpZ2luIEZST00gT3JpZ2lucyIpOwogICAgICAg
ICAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKICAgICAgICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudC4iKTsKQEAgLTI0
Miw5ICsyMzgsOSBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlCiB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQorCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVy
OwotI2VuZGlmCisKICAgICBBU1NFUlQobV9pc0FjdGl2ZSk7CiAKICAgICBWZWN0b3I8U3RyaW5n
PiBwYXRoczsKQEAgLTMxNyw5ICszMTMsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzZXRPcmln
aW5EZXRhaWxzKGNvCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWlscyhj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VGaWxl
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotI2lmIFBMQVRGT1JNKElPUykKKwog
ICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291
bnRlcjsKLSNlbmRpZgogCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7
CiAKQEAgLTM4OSw5ICszODQsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVBbGxPcmln
aW5zKCkKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSNpZiBQTEFURk9STShJT1MpCisKICAgICBTUUxp
dGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0j
ZW5kaWYKICAgICAKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKICAg
ICAKQEAgLTQ4Niw5ICs0ODAsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4o
U2VjdXJpCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSNp
ZiBQTEFURk9STShJT1MpCisKICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291
bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0jZW5kaWYKIAogICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2RhdGFiYXNlTXV0ZXgpOwogICAgIApAQCAtNjAxLDkgKzU5NCw3IEBAIFN0cmluZyBTdG9y
YWdlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoRm9yT3IKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotI2lmIFBMQVRGT1JNKElPUykKICAgICBT
UUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7
Ci0jZW5kaWYKIAogICAgIFNRTGl0ZVN0YXRlbWVudCBwYXRoU3RhdGVtZW50KG1fZGF0YWJhc2Us
ICJTRUxFQ1QgcGF0aCBGUk9NIE9yaWdpbnMgV0hFUkUgb3JpZ2luPT8iKTsKICAgICBpZiAocGF0
aFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsK
</data>
<flag name="review"
          id="246216"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>