<?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>150839</bug_id>
          
          <creation_ts>2015-11-03 09:11:32 -0800</creation_ts>
          <short_desc>Modern IDB: Land empty IDBCursor/Index IDL implementations</short_desc>
          <delta_ts>2015-11-03 14:25:12 -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>WebCore Misc.</component>
          <version>Safari 9</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>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138938</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-03 09:11:32 -0800</bug_when>
    <thetext>Modern IDB: Land IDBCursor/Index IDL implementations

They&apos;ll basically be no-ops at this point, but just get a lot of template/boilerplate code out of the way, as well as project file changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138946</commentid>
    <comment_count>1</comment_count>
      <attachid>264695</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-03 09:36:33 -0800</bug_when>
    <thetext>Created attachment 264695
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139009</commentid>
    <comment_count>2</comment_count>
      <attachid>264707</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-03 12:08:03 -0800</bug_when>
    <thetext>Created attachment 264707
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139011</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 12:11:00 -0800</bug_when>
    <thetext>Attachment 264707 did not pass style-queue:


ERROR: Source/WebCore/Modules/indexeddb/client/IDBCursorWithValueImpl.h:26:  #ifndef header guard has wrong style, please use: IDBCursorWithValueImpl_h  [build/header_guard] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139028</commentid>
    <comment_count>4</comment_count>
      <attachid>264707</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-03 12:34:15 -0800</bug_when>
    <thetext>Comment on attachment 264707
Patch v2

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

Looks mostly good.  I&apos;ll take a glance at the next patch

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

remove

&gt; Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.h:42
&gt; +    virtual const Deprecated::ScriptValue&amp; key() const override final;

new code with deprecated?

&gt; Source/WebCore/Modules/indexeddb/shared/IDBIndexInfo.cpp:33
&gt; +namespace WebCore {
&gt; +
&gt; +} // namespace WebCore

This file looks pretty exciting so far.

&gt; Source/WebCore/Modules/indexeddb/shared/IDBIndexInfo.h:44
&gt; +private:
&gt; +    IDBIndexInfo();

how do you make one of these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139058</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-03 13:33:36 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 264707 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264707&amp;action=review
&gt; 
&gt; Looks mostly good.  I&apos;ll take a glance at the next patch
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests (OOPS!).
&gt; 
&gt; remove

Whoops.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.h:42
&gt; &gt; +    virtual const Deprecated::ScriptValue&amp; key() const override final;
&gt; 
&gt; new code with deprecated?
&gt; 

New code implementing old interface. After LegacyIDB is nuked would be a good time to do a sweep of all of that (including the JS bindings, unfortunately)

https://bugs.webkit.org/show_bug.cgi?id=150854 for that

&gt; &gt; Source/WebCore/Modules/indexeddb/shared/IDBIndexInfo.cpp:33
&gt; &gt; +namespace WebCore {
&gt; &gt; +
&gt; &gt; +} // namespace WebCore
&gt; 
&gt; This file looks pretty exciting so far.

It is not!

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/shared/IDBIndexInfo.h:44
&gt; &gt; +private:
&gt; &gt; +    IDBIndexInfo();
&gt; 
&gt; how do you make one of these?

In this patch, you do not!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139059</commentid>
    <comment_count>6</comment_count>
      <attachid>264719</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-03 13:34:11 -0800</bug_when>
    <thetext>Created attachment 264719
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139085</commentid>
    <comment_count>7</comment_count>
      <attachid>264719</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 14:25:07 -0800</bug_when>
    <thetext>Comment on attachment 264719
Patch v3

Clearing flags on attachment: 264719

Committed r191980: &lt;http://trac.webkit.org/changeset/191980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139086</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 14:25:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264695</attachid>
            <date>2015-11-03 09:36:33 -0800</date>
            <delta_ts>2015-11-03 12:08:03 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38956</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmQ5MzFiZC4uMmFhNWRlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTg2OSw4ICs4NjksMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ3Vyc29ySW1wbC5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCRGF0YWJhc2VJbXBsLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJGYWN0
b3J5SW1wbC5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNw
cAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcAogICAg
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAgLTkxMCw2ICs5
MTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRGF0YWJhc2VJbmZvLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJF
cnJvci5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcAog
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWZhYTBhYi4uODFlNzExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTExLTAz
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURC
OiBMYW5kIGVtcHR5IElEQkN1cnNvci9JbmRleCBJREwgaW1wbGVtZW50YXRpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ3Vyc29ySW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJDdXJzb3I6On5JREJDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJD
dXJzb3I6OmRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNv
cjo6a2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpwcmltYXJ5
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjp2YWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6c291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0
aFZhbHVlSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJJbmRleDo6fklEQkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCSW5kZXg6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRl
eDo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6
a2V5UGF0aEFueSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkluZGV4OjprZXlQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6OnVuaXF1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQkluZGV4OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
SW5kZXhJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmguCisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5kZXg6OmlkKToKKyAg
ICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5j
cHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleElu
Zm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEluZm86Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjprZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4SW5mbzo6dW5pcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4SW5mbzo6
bXVsdGlFbnRyeSk6CisKIDIwMTUtMTEtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vZGVybiBJREI6IElCRE9iamVjdFN0b3JlLmRlbGV0ZSgpIHN1cHBv
cnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCA1
Yzg3ZjcyLi43ZWJhM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmgKQEAgLTQ4LDEzICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCSW5k
ZXgoKSB7IH0KIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCi0gICAgdmlydHVhbCBjb25zdCBT
dHJpbmcgbmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgbmFtZSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3Rv
cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SURCQW55PiBrZXlQYXRoQW55KCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgY29uc3QgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBt
dWx0aUVudHJ5KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgaW50NjRfdCBpZCgpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8
SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFu
Z2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYWU4MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5jcHAKQEAgLTAs
MCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
REJDdXJzb3JJbXBsLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQkNsaWVudCB7CisKK0lEQkN1cnNvcjo6fklEQkN1
cnNvcigpCit7Cit9CisKK2NvbnN0IFN0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb24oKSBjb25z
dAoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2NvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OmtleSgpIGNvbnN0Cit7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIElEQkN1cnNvcjo6cHJpbWFyeUtleSgpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1
cnNvcjo6dmFsdWUoKSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK0lEQkFueSogSURCQ3Vyc29yOjpzb3VyY2UoKSBjb25zdAoreworICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6
OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0
aW9uQ29kZSYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBJREJDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYpCit7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJDdXJzb3I6OmNv
bnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKQor
eworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSURCQ3Vyc29y
Ojpjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBJREJD
bGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQkN1cnNvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDdXJzb3JJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZTg5YjkxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSURCQ3Vyc29ySW1wbF9oCisjZGVmaW5lIElEQkN1cnNvckltcGxfaAorCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJDdXJzb3JXaXRoVmFs
dWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQkNsaWVudCB7CisKK2Ns
YXNzIElEQkN1cnNvciA6IHB1YmxpYyBXZWJDb3JlOjpJREJDdXJzb3JXaXRoVmFsdWUgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfklEQkN1cnNvcigpOworCisgICAgLy8gSW1wbGVtZW50IHRoZSBJ
REwKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CisgICAgdmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5KCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdmlydHVhbCBJREJBbnkqIHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwor
CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRlJiwg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7
CisgICAgdmlydHVhbCB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwor
Citwcm90ZWN0ZWQ6CisgICAgSURCQ3Vyc29yKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJD
bGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQkN1cnNvckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldp
dGhWYWx1ZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzJl
NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJDdXJzb3JXaXRoVmFsdWVJ
bXBsLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMTc2NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5o
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkN1cnNvcldpdGhWYWx1
ZV9oCisjZGVmaW5lIElEQkN1cnNvcldpdGhWYWx1ZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgSURCQ2xpZW50IHsKKworY2xhc3MgSURCQ3Vyc29yV2l0aFZh
bHVlIDogcHVibGljIElEQkN1cnNvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURCQ3Vyc29y
V2l0aFZhbHVlKCk7CisKK3ByaXZhdGU6CisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKCk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQkN1cnNvcldpdGhW
YWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJJbmRleEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjFhNDZiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJJbmRleEltcGwuaCIKKworI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgSURCQ2xpZW50IHsKKworSURCSW5kZXg6On5JREJJbmRleCgpCit7Cit9CisKK2NvbnN0IFN0
cmluZyYgSURCSW5kZXg6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZm8ubmFtZSgp
OworfQorCitSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkluZGV4OjpvYmplY3RTdG9yZSgpIGNv
bnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworUmVmUHRyPElE
QkFueT4gSURCSW5kZXg6OmtleVBhdGhBbnkoKSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK2NvbnN0IElEQktleVBhdGgmIElEQkluZGV4OjprZXlQYXRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmZvLmtleVBhdGgoKTsKK30KKworYm9vbCBJREJJ
bmRleDo6dW5pcXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmZvLnVuaXF1ZSgpOworfQor
Citib29sIElEQkluZGV4OjptdWx0aUVudHJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmZv
Lm11bHRpRW50cnkoKTsKK30KKworUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURC
S2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25D
b2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURC
S2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRp
b25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBJREJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQ4YzJkZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSURCSW5kZXhJbXBsX2gKKyNkZWZpbmUgSURCSW5kZXhJ
bXBsX2gKKworI2luY2x1ZGUgIklEQkluZGV4LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKworI2luY2x1ZGUgIklEQkluZGV4SW5mby5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgSURCQ2xpZW50IHsKKworY2xhc3MgSURCSW5kZXggOiBwdWJsaWMgV2ViQ29y
ZTo6SURCSW5kZXggeworcHVibGljOgorICAgIHZpcnR1YWwgfklEQkluZGV4KCk7CisKKyAgICAv
LyBJbXBsZW1lbnQgdGhlIElETAorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9i
amVjdFN0b3JlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8SURC
QW55PiBrZXlQYXRoQW55KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVh
bCBib29sIHVuaXF1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgYm9vbCBt
dWx0aUVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisKKyAgICB2aXJ0dWFsIFJlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5n
ZSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
SURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVh
bCBSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBm
aW5hbDsKKworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVx
dWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBn
ZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdl
KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPElE
QlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworCitw
cml2YXRlOgorICAgIElEQkluZGV4SW5mbyBtX2luZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBJ
REJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQkluZGV4SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5SW5kZXguaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lJbmRleC5oCmluZGV4IDU1
YjYyMmYuLmVjZmVlMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZWdhY3kvTGVnYWN5SW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZWdhY3kvTGVnYWN5SW5kZXguaApAQCAtNTUsMTQgKzU1LDE0IEBAIHB1YmxpYzoK
ICAgICB+TGVnYWN5SW5kZXgoKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCi0gICAgdmly
dHVhbCBjb25zdCBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1f
bWV0YWRhdGEubmFtZTsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CiAgICAgdmlydHVhbCBS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gbV9vYmplY3RTdG9yZTsgfQogICAgIExlZ2FjeU9iamVjdFN0b3JlKiBsZWdhY3lP
YmplY3RTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmUuZ2V0KCk7IH0KICAgICB2
aXJ0dWFsIFJlZlB0cjxJREJBbnk+IGtleVBhdGhBbnkoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiBMZWdhY3lBbnk6OmNyZWF0ZShtX21ldGFkYXRhLmtleVBhdGgpOyB9Ci0gICAgdmly
dHVhbCBjb25zdCBJREJLZXlQYXRoIGtleVBhdGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiBtX21ldGFkYXRhLmtleVBhdGg7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX21ldGFkYXRhLmtleVBh
dGg7IH0KICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gbV9tZXRhZGF0YS51bmlxdWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbWV0YWRhdGEubXVsdGlFbnRyeTsgfQot
ICAgIHZpcnR1YWwgaW50NjRfdCBpZCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1f
bWV0YWRhdGEuaWQ7IH0KKyAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0
YS5pZDsgfQogCiAgICAgLy8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9y
IHNvIHRoaXMgaXMgdW5uZWVkZWQuCiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBl
Yykgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBzdGF0aWNfY2Fz
dDxJREJLZXlSYW5nZSo+KG51bGxwdHIpLCBlYyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjlkYmY5NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uY3BwCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSURCSW5kZXhJbmZvLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kOWY3ZmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIElEQkluZGV4SW5mb19oCisjZGVmaW5lIElEQkluZGV4SW5m
b19oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQktleVBh
dGguaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJREJJbmRleEluZm8geworcHVibGljOgorICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyBy
ZXR1cm4gbV9tdWx0aUVudHJ5OyB9CisKK3ByaXZhdGU6CisgICAgSURCSW5kZXhJbmZvKCk7CisK
KyAgICBTdHJpbmcgbV9uYW1lOworICAgIElEQktleVBhdGggbV9rZXlQYXRoOworICAgIGJvb2wg
bV91bmlxdWUgeyB0cnVlIH07CisgICAgYm9vbCBtX211bHRpRW50cnkgeyBmYWxzZSB9OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisjZW5kaWYgLy8gSURCSW5kZXhJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxY2VjYjVkLi40YmFlOTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMjIxLDYgKzIyMjEsMTQgQEAKIAkJNTFGNDFBN0ExQkE3M0I1QjAwMkUwNTNCIC8qIElE
QlBlbmRpbmdPcGVuQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGNDFBNTExQkE3M0IyQzAwMkUwNTNCIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjQx
QTdCMUJBNzNCNUIwMDJFMDUzQiAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjNDMUI5
RjY4Q0YwMEY3ODlDRSAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcCAqLzsgfTsK
IAkJNTFGNDFBN0MxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1
QjNEMUI5RjY4Q0YwMEY3ODlDRSAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmggKi87
IH07CisJCTUxRjc5OEU1MUJFODgwOTIwMDhBRTQ5MSAvKiBJREJDdXJzb3JJbXBsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEUxMUJFODgw
ODQwMDhBRTQ5MSAvKiBJREJDdXJzb3JJbXBsLmNwcCAqLzsgfTsKKwkJNTFGNzk4RTYxQkU4ODA5
MjAwOEFFNDkxIC8qIElEQkN1cnNvckltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEUyMUJFODgwODQwMDhBRTQ5MSAvKiBJREJDdXJzb3JJ
bXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NTFGNzk4RTcxQkU4ODA5MjAwOEFFNDkxIC8qIElEQkluZGV4SW1wbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY3OThFMzFCRTg4MDg0MDA4QUU0
OTEgLyogSURCSW5kZXhJbXBsLmNwcCAqLzsgfTsKKwkJNTFGNzk4RTgxQkU4ODA5MjAwOEFFNDkx
IC8qIElEQkluZGV4SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGNzk4RTQxQkU4ODA4NDAwOEFFNDkxIC8qIElEQkluZGV4SW1wbC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxRjc5OEVGMUJF
ODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNzk4RUIxQkU4ODBEMzAwOEFFNDkxIC8qIElEQklu
ZGV4SW5mby5jcHAgKi87IH07CisJCTUxRjc5OEYwMUJFODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRl
eEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
Rjc5OEVDMUJFODgwRDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUY3OThGMzFCRTg4Mzk0MDA4QUU0
OTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY3OThGMTFCRTg4MzhEMDA4QUU0OTEgLyogSURCQ3Vy
c29yV2l0aFZhbHVlSW1wbC5jcHAgKi87IH07CisJCTUxRjc5OEY0MUJFODgzOTQwMDhBRTQ5MSAv
KiBJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUY3OThGMjFCRTg4MzhEMDA4QUU0OTEgLyogSURCQ3Vyc29yV2l0
aFZhbHVlSW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxRkEyRDc4MTUyMTMyQjMwMEMxQkEwQiAvKiBET01XaW5kb3dFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0ZCQTE4MTUx
QUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUZCNTUwNDExM0UzRTkxMDA4MjExNzYg
LyogSlNDbG9zZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUZCNTUwMjExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmggKi87IH07
CiAJCTUxRkI1NTA1MTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDMxMTNFM0U5MTAw
ODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5jcHAgKi87IH07CkBAIC05NjQwLDYgKzk2NDgsMTQgQEAK
IAkJNTFGNDFBNTcxQkE3M0IyQzAwMkUwNTNCIC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2QTNENTA2NjNCRjA0MDA0
RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENhbnZhc0VsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTFG
NkEzRDYwNjYzQkYwNDAwNEQyOTE5IC8qIEhUTUxDYW52YXNFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxDYW52YXNFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OworCQk1MUY3OThFMTFCRTg4MDg0MDA4QUU0OTEgLyogSURCQ3Vyc29ySW1wbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJDdXJzb3JJbXBsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNzk4RTIxQkU4ODA4NDAwOEFFNDkxIC8qIElEQkN1
cnNvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29ySW1w
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY3OThFMzFCRTg4MDg0MDA4QUU0
OTEgLyogSURCSW5kZXhJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElEQkluZGV4SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjc5
OEU0MUJFODgwODQwMDhBRTQ5MSAvKiBJREJJbmRleEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSURCSW5kZXhJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxRjc5OEVCMUJFODgwRDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCSW5kZXhJbmZvLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNzk4RUMxQkU4ODBEMzAwOEFFNDkxIC8qIElEQkluZGV4
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJJbmRleEluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNzk4RjExQkU4ODM4RDAwOEFFNDkxIC8q
IElEQkN1cnNvcldpdGhWYWx1ZUltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxRjc5OEYyMUJFODgzOEQwMDhBRTQ5MSAvKiBJREJDdXJzb3JXaXRoVmFsdWVJ
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvcldpdGhWYWx1
ZUltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQjU1MDIxMTNFM0U5MTAw
ODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0Nsb3NlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQjU1MDMx
MTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0Nsb3NlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUZCNjdEOTFBRTZCNUU0MDBEMDZDNUEgLyogQ29udGVudEV4dGVuc2lvblN0eWxl
U2hlZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudEV4
dGVuc2lvblN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ5
NzYsNiArMTQ5OTIsNyBAQAogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCiAv
KiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCiAJCTAwQjkzMTgwMTNCQTg2N0YwMDM1QTk0OCAv
KiBwYXJzZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKQEAgLTE2NzkwLDEwICsxNjgwNywx
NiBAQAogCQkJCTUxODVGQ0JDMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwICovLAogCQkJCTUxMEE1OEZEMUJCMDdBOTYwMEMxOTI4MiAvKiBJREJDb25uZWN0aW9u
VG9TZXJ2ZXIuaCAqLywKIAkJCQk1MTg1RkNCRDFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29ubmVj
dGlvblRvU2VydmVyRGVsZWdhdGUuaCAqLywKKwkJCQk1MUY3OThFMTFCRTg4MDg0MDA4QUU0OTEg
LyogSURCQ3Vyc29ySW1wbC5jcHAgKi8sCisJCQkJNTFGNzk4RTIxQkU4ODA4NDAwOEFFNDkxIC8q
IElEQkN1cnNvckltcGwuaCAqLywKKwkJCQk1MUY3OThGMTFCRTg4MzhEMDA4QUU0OTEgLyogSURC
Q3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAgKi8sCisJCQkJNTFGNzk4RjIxQkU4ODM4RDAwOEFFNDkx
IC8qIElEQkN1cnNvcldpdGhWYWx1ZUltcGwuaCAqLywKIAkJCQk1MTk4RjdBRTFCQkRGNTkyMDBF
MkNDNUYgLyogSURCRGF0YWJhc2VJbXBsLmNwcCAqLywKIAkJCQk1MTk4RjdBRjFCQkRGNTkyMDBF
MkNDNUYgLyogSURCRGF0YWJhc2VJbXBsLmggKi8sCiAJCQkJNTEwMzEwNEExQkE4QzZBNjAwMzMy
OUMwIC8qIElEQkZhY3RvcnlJbXBsLmNwcCAqLywKIAkJCQk1MTAzMTA0QjFCQThDNkE2MDAzMzI5
QzAgLyogSURCRmFjdG9yeUltcGwuaCAqLywKKwkJCQk1MUY3OThFMzFCRTg4MDg0MDA4QUU0OTEg
LyogSURCSW5kZXhJbXBsLmNwcCAqLywKKwkJCQk1MUY3OThFNDFCRTg4MDg0MDA4QUU0OTEgLyog
SURCSW5kZXhJbXBsLmggKi8sCiAJCQkJNTE2MDcxMjkxQkQ4MzA1MzAwREJDNEYyIC8qIElEQk9i
amVjdFN0b3JlSW1wbC5jcHAgKi8sCiAJCQkJNTE2MDcxMkExQkQ4MzA1MzAwREJDNEYyIC8qIElE
Qk9iamVjdFN0b3JlSW1wbC5oICovLAogCQkJCTUxMDMxMDU2MUJBOERCMzAwMDMzMjlDMCAvKiBJ
REJPcGVuREJSZXF1ZXN0SW1wbC5jcHAgKi8sCkBAIC0xNjgxNyw2ICsxNjg0MCw4IEBACiAJCQkJ
NTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oICovLAogCQkJCTUx
NDg0NTNDMUJCOUQwNzYwMDZBNzJFRCAvKiBJREJFcnJvci5jcHAgKi8sCiAJCQkJNTE0ODQ1M0Qx
QkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmggKi8sCisJCQkJNTFGNzk4RUIxQkU4ODBEMzAw
OEFFNDkxIC8qIElEQkluZGV4SW5mby5jcHAgKi8sCisJCQkJNTFGNzk4RUMxQkU4ODBEMzAwOEFF
NDkxIC8qIElEQkluZGV4SW5mby5oICovLAogCQkJCTUxNjA3MTJDMUJEODMwNzIwMERCQzRGMiAv
KiBJREJPYmplY3RTdG9yZUluZm8uY3BwICovLAogCQkJCTUxNjA3MTJEMUJEODMwNzIwMERCQzRG
MiAvKiBJREJPYmplY3RTdG9yZUluZm8uaCAqLywKIAkJCQk1MTBBNThGNTFCQUNDNEE1MDBDMTky
ODIgLyogSURCUmVxdWVzdERhdGEuY3BwICovLApAQCAtMjUxODMsNiArMjUyMDgsNyBAQAogCQkJ
CUE0MjI2RTk5MTE2M0Q3Q0MwMDhCODM5NyAvKiBET01IVE1MUHJvZ3Jlc3NFbGVtZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MTgzQjRBMEFBNjkyNjEwMEYxOUZBMyAvKiBET01I
VE1MUXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFDNDBBQzVENTM1MDA1
MzI3MEYgLyogRE9NSFRNTFF1b3RlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MUY3OThFNjFCRTg4MDkyMDA4QUU0OTEgLyogSURCQ3Vyc29ySW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODVERjgxOUIwQUE3N0U0QjAwNDg2QUQ3IC8qIERPTUhUTUxTY3JpcHRFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFDNTBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRN
TFNjcmlwdEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVGMzJBRjAwQUE2
M0I4NzAwRkYzMTg0IC8qIERPTUhUTUxTZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI2MjkyLDYgKzI2MzE4LDcgQEAKIAkJCQlBODNCNzhGQzBDQ0FGRjE1MDAwQjA4MjUgLyogSlNT
VkdGb250RmFjZVVyaUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDk5MEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q5QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTFGNzk4RjQxQkU4ODM5NDAwOEFFNDkxIC8qIElEQkN1cnNvcldpdGhWYWx1
ZUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyN0IyODI4MENFRjBDMDcwMEQzOUQ1NCAvKiBK
U1NWR0dseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyOUExM0NBOTcxNDAw
RDIxOTE1IC8qIEpTU1ZHR2x5cGhSZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZB
M0Q5RDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjY5OTMsNiArMjcwMjAsNyBAQAogCQkJCUJDRUE0ODgwMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkE5MzA4MTAzMzMxOTMw
MDdCMjVEMSAvKiBSZW5kZXJPdmVyZmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTQzQkY1OUQx
MTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dyZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MUY3OThFODFCRTg4MDkyMDA4QUU0OTEgLyogSURCSW5kZXhJbXBsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCNUI2NTg3NDE4NkZERTRDMDA5QzI2RTggLyogUmVuZGVyUHRyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QTU3NEYyNTEzMURCOTM5MDA0NzFCODggLyogUmVuZGVyUXVvdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQ3MEFENjU4MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uaCBp
biBIZWFkZXJzICovLApAQCAtMjc3NTMsNiArMjc3ODEsNyBAQAogCQkJCTg1NEZFNzM3MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RkQ0Mjk4MTE4
MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRE
NjRCNUQxMzRBNUI2QjAwRTU4RkRBIC8qIFRyZWVTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTFGNzk4RjAxQkU4ODBFNzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQURCQUQ2RUYxQkNERDk1NzAwMzgxMzI1IC8qIFJlc291cmNlVXNhZ2VPdmVybGF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzdFMUZGMDE0QUFDQjZFMDA1QjdDQjYgLyogVHJlZVNjb3Bl
QWRvcHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzkwQTIyOTdCRTAwNThEN0FEIC8q
IFRyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkwNTEsNiArMjkwODAsNyBAQAogCQkJ
CTg0NzMwRDg0MTI0OEYwQjMwMEQzQTlDOSAvKiBGRU1vcnBob2xvZ3kuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODQ3MzBEODYxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFT2Zmc2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg0NzMwRDg4MTI0OEYwQjMwMEQzQTlDOSAvKiBGRVNwZWN1bGFyTGlnaHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFGNzk4RTUxQkU4ODA5MjAwOEFFNDkxIC8qIElE
QkN1cnNvckltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3MzBEOEExMjQ4RjBCMzAwRDNB
OUM5IC8qIEZFVGlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDczMEQ4QzEyNDhGMEIzMDBE
M0E5QzkgLyogRkVUdXJidWxlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDk0MTJC
MDI2RjcwMEMxQTM1OSAvKiBGRlRDb252b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTg5
Nyw2ICsyOTkyNyw3IEBACiAJCQkJNTFFM0Y5RDYwREEwNUUxRDAwMjUwOTExIC8qIEpTU3RvcmFn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUQwQzUxNjBEQUE5MEI3MDAzQjM4MzEgLyogSlNT
dG9yYWdlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTBCQUVBMERBNTVENEEwMEE5
RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUY3OThFNzFC
RTg4MDkyMDA4QUU0OTEgLyogSURCSW5kZXhJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjUwMjY5MTAyQkE5NDMwMDY2RjM5QSAvKiBKU1N0eWxlTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNFMDEzOUEwQzBCRUYxODAwNDM4NjBBIC8qIEpTU3R5bGVTaGVldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzk4QTI3RDBDMEM5OTUwMDA0QkVCRjcgLyogSlNTdHlsZVNoZWV0Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAyODcsNiArMzAzMTgsNyBAQAogCQkJCTA3ODMy
Mjg0MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZENjcxQTc3MTU5QkIwNzAwMDE5NzU1OSAvKiBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzA1ODUxNTE3RkIwRUVBMDA1RjJC
Q0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFG
Nzk4RjMxQkU4ODM5NDAwOEFFNDkxIC8qIElEQkN1cnNvcldpdGhWYWx1ZUltcGwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDc4RTA5MDAxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcxMTU4OTExN0RGNkY2NjAwRURGRTJCIC8qIE1l
ZGlhU3RyZWFtUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkwMTE3RDE0Q0VF
MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMw
NzkwLDYgKzMwODIyLDcgQEAKIAkJCQlGRDQ1QTk1MzE3NUQzRkI4MDBDMjFFQzggLyogU2hhcGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5NTYxNzVEM0ZCODAwQzIxRUM4IC8qIFNoYXBl
T3V0c2lkZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCNUVCRDAxOTRBMUQxNzAwNTlB
QzcwIC8qIFNoYXBlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFGNzk4RUYxQkU4ODBF
NzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOTU0
RDBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMkREOEUzMEQ5MUUyQjQwMDBGODlFRSAvKiBTaGFyZWRCdWZmZXJDRi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5N0IxRjAyRTEzQjAyNUNBMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264707</attachid>
            <date>2015-11-03 12:08:03 -0800</date>
            <delta_ts>2015-11-03 13:34:11 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38759</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjUyZGFjZS4uYWI5YWZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTg2Nyw4ICs4NjcsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ3Vyc29ySW1wbC5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCRGF0YWJhc2VJbXBsLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJGYWN0
b3J5SW1wbC5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNw
cAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcAogICAg
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAgLTkwOCw2ICs5
MTEsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRGF0YWJhc2VJbmZvLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJF
cnJvci5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcAog
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmNlNGQzMi4uMzRkMjBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTExLTAz
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURC
OiBMYW5kIGVtcHR5IElEQkN1cnNvci9JbmRleCBJREwgaW1wbGVtZW50YXRpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ3Vyc29ySW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJDdXJzb3I6On5JREJDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJD
dXJzb3I6OmRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNv
cjo6a2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpwcmltYXJ5
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjp2YWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6c291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0
aFZhbHVlSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJJbmRleDo6fklEQkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCSW5kZXg6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRl
eDo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6
a2V5UGF0aEFueSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkluZGV4OjprZXlQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6OnVuaXF1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQkluZGV4OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
SW5kZXhJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmguCisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5kZXg6OmlkKToKKyAg
ICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5j
cHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleElu
Zm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEluZm86Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhJbmZvOjprZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4SW5mbzo6dW5pcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4SW5mbzo6
bXVsdGlFbnRyeSk6CisKIDIwMTUtMTEtMDMgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50LnRleHQgc2hvdWxkIG5ldmVyIHJldHVy
biB0aGUgdmFsdWUgb2YgbGFiZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oCmluZGV4IDVjODdmNzIuLjdlYmEzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtNDgsMTMgKzQ4LDEyIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5JREJJbmRleCgpIHsgfQogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAg
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElEQk9iamVj
dFN0b3JlPiBvYmplY3RTdG9yZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJREJB
bnk+IGtleVBhdGhBbnkoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBJREJLZXlQYXRo
IGtleVBhdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2
NF90IGlkKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAg
ICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFhZTgxZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJz
b3JJbXBsLmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIklEQkN1cnNvckltcGwuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURCQ2xpZW50IHsKKwor
SURCQ3Vyc29yOjp+SURCQ3Vyc29yKCkKK3sKK30KKworY29uc3QgU3RyaW5nJiBJREJDdXJzb3I6
OmRpcmVjdGlvbigpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6a2V5KCkgY29u
c3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjpwcmltYXJ5S2V5KCkgY29uc3QKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworSURCQW55KiBJREJDdXJzb3I6OnNvdXJjZSgpIGNvbnN0
Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworUmVmUHRyPElEQlJl
cXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit2b2lkIElEQkN1cnNvcjo6YWR2YW5jZSh1bnNpZ25lZCBsb25nLCBFeGNl
cHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpCit7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2Vw
dGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIElEQkNsaWVudAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lODliOTFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJDdXJzb3JJbXBsX2gKKyNkZWZpbmUgSURC
Q3Vyc29ySW1wbF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUg
IklEQkN1cnNvcldpdGhWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
SURCQ2xpZW50IHsKKworY2xhc3MgSURCQ3Vyc29yIDogcHVibGljIFdlYkNvcmU6OklEQkN1cnNv
cldpdGhWYWx1ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURCQ3Vyc29yKCk7CisKKyAgICAv
LyBJbXBsZW1lbnQgdGhlIElETAorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24o
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUoKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIElEQkFueSogc291cmNlKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7CisKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUo
SlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25n
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGNvbnRp
bnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+
IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGUgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBJREJDdXJzb3IoKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIElEQkNsaWVudAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCQ3Vyc29ySW1wbF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vy
c29yV2l0aFZhbHVlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNGQzMmU3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmNwcApAQCAtMCww
ICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklE
QkN1cnNvcldpdGhWYWx1ZUltcGwuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQxNzY2MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJz
b3JXaXRoVmFsdWVJbXBsLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SURCQ3Vyc29yV2l0aFZhbHVlX2gKKyNkZWZpbmUgSURCQ3Vyc29yV2l0aFZhbHVlX2gKKworI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJDbGllbnQgeworCitjbGFz
cyBJREJDdXJzb3JXaXRoVmFsdWUgOiBwdWJsaWMgSURCQ3Vyc29yIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5JREJDdXJzb3JXaXRoVmFsdWUoKTsKKworcHJpdmF0ZToKKyAgICBJREJDdXJzb3JX
aXRoVmFsdWUoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQkNsaWVudAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYg
Ly8gSURCQ3Vyc29yV2l0aFZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMWE0NmI5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwCkBAIC0wLDAgKzEs
MTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQklu
ZGV4SW1wbC5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBJREJDbGllbnQgeworCitJREJJbmRleDo6fklEQkluZGV4KCkK
K3sKK30KKworY29uc3QgU3RyaW5nJiBJREJJbmRleDo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW5mby5uYW1lKCk7Cit9CisKK1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCSW5kZXg6
Om9iamVjdFN0b3JlKCkgY29uc3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCitSZWZQdHI8SURCQW55PiBJREJJbmRleDo6a2V5UGF0aEFueSgpIGNvbnN0Cit7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworY29uc3QgSURCS2V5UGF0aCYg
SURCSW5kZXg6OmtleVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgp
OworfQorCitib29sIElEQkluZGV4Ojp1bmlxdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2lu
Zm8udW5pcXVlKCk7Cit9CisKK2Jvb2wgSURCSW5kZXg6Om11bHRpRW50cnkoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2luZm8ubXVsdGlFbnRyeSgpOworfQorCitSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdl
KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpCit7
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5L
ZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRl
eDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRl
eDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIElEQkNsaWVudAorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhjMmRlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwu
aApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJJbmRleEltcGxfaAor
I2RlZmluZSBJREJJbmRleEltcGxfaAorCisjaW5jbHVkZSAiSURCSW5kZXguaCIKKworI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCSW5kZXhJbmZvLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJDbGllbnQgeworCitjbGFzcyBJREJJbmRl
eCA6IHB1YmxpYyBXZWJDb3JlOjpJREJJbmRleCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURC
SW5kZXgoKTsKKworICAgIC8vIEltcGxlbWVudCB0aGUgSURMCisgICAgdmlydHVhbCBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJ
REJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxJREJBbnk+IGtleVBhdGhBbnkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
KyAgICB2aXJ0dWFsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgoKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKKyAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdmlydHVhbCBib29sIG11bHRpRW50cnkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKworICAg
IHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBjb25z
dCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAg
IHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisKKyAgICB2aXJ0
dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktl
eVJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVm
UHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGUgZmluYWw7CisKK3ByaXZhdGU6CisgICAgSURCSW5kZXhJbmZvIG1faW5mbzsKK307CisK
K30gLy8gbmFtZXNwYWNlIElEQkNsaWVudAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCSW5kZXhJbXBsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdh
Y3lJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2Fj
eUluZGV4LmgKaW5kZXggNTViNjIyZi4uZWNmZWUxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lJbmRleC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lJbmRleC5oCkBAIC01NSwxNCAr
NTUsMTQgQEAgcHVibGljOgogICAgIH5MZWdhY3lJbmRleCgpOwogCiAgICAgLy8gSW1wbGVtZW50
IHRoZSBJREwKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBuYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CisgICAgdmlydHVhbCBjb25zdCBTdHJp
bmcmIG5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7
IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX29iamVjdFN0b3JlOyB9CiAgICAgTGVnYWN5T2Jq
ZWN0U3RvcmUqIGxlZ2FjeU9iamVjdFN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9y
ZS5nZXQoKTsgfQogICAgIHZpcnR1YWwgUmVmUHRyPElEQkFueT4ga2V5UGF0aEFueSgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIExlZ2FjeUFueTo6Y3JlYXRlKG1fbWV0YWRhdGEua2V5
UGF0aCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbWV0YWRhdGEua2V5UGF0aDsgfQorICAgIHZpcnR1YWwg
Y29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1fbWV0YWRhdGEua2V5UGF0aDsgfQogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiBtX21ldGFkYXRhLnVuaXF1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBtdWx0aUVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9tZXRhZGF0
YS5tdWx0aUVudHJ5OyB9Ci0gICAgdmlydHVhbCBpbnQ2NF90IGlkKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gbV9tZXRhZGF0YS5pZDsgfQorICAgIGludDY0X3QgaWQoKSBjb25zdCB7
IHJldHVybiBtX21ldGFkYXRhLmlkOyB9CiAKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0
aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICB2aXJ0dWFsIFJlZlB0
cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBvcGVuQ3Vyc29yKGNv
bnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4obnVsbHB0ciksIGVjKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5m
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJ
bmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWRiZjk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkluZGV4SW5mby5jcHAKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJREJJbmRleEluZm8uaCIKKworI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ZjdmZjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmgK
QEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCSW5kZXhJbmZvX2gKKyNk
ZWZpbmUgSURCSW5kZXhJbmZvX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkluZGV4SW5mbyB7CitwdWJsaWM6Cisg
ICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAg
IGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWU7IH0KKyAgICBib29sIG11bHRp
RW50cnkoKSBjb25zdCB7IHJldHVybiBtX211bHRpRW50cnk7IH0KKworcHJpdmF0ZToKKyAgICBJ
REJJbmRleEluZm8oKTsKKworICAgIFN0cmluZyBtX25hbWU7CisgICAgSURCS2V5UGF0aCBtX2tl
eVBhdGg7CisgICAgYm9vbCBtX3VuaXF1ZSB7IHRydWUgfTsKKyAgICBib29sIG1fbXVsdGlFbnRy
eSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJJbmRleEluZm9faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ1
YjQ0NjQuLjk4OWVkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIyMTQsNiArMjIxNCwxNCBAQAogCQk1MUY0MUE3QTFCQTcz
QjVCMDAyRTA1M0IgLyogSURCUGVuZGluZ09wZW5DYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY0MUE1MTFCQTczQjJDMDAyRTA1M0IgLyogSURC
UGVuZGluZ09wZW5DYWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTFGNDFBN0IxQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE2NDVCM0MxQjlGNjhDRjAwRjc4OUNFIC8qIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1v
bml0b3IuY3BwICovOyB9OwogCQk1MUY0MUE3QzFCQTczQjVCMDAyRTA1M0IgLyogSURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE2NDVCM0QxQjlGNjhDRjAwRjc4OUNFIC8qIElEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3IuaCAqLzsgfTsKKwkJNTFGNzk4RTUxQkU4ODA5MjAwOEFFNDkxIC8qIElEQkN1
cnNvckltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFGNzk4RTExQkU4ODA4NDAwOEFFNDkxIC8qIElEQkN1cnNvckltcGwuY3BwICovOyB9Owor
CQk1MUY3OThFNjFCRTg4MDkyMDA4QUU0OTEgLyogSURCQ3Vyc29ySW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNzk4RTIxQkU4ODA4NDAwOEFF
NDkxIC8qIElEQkN1cnNvckltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1MUY3OThFNzFCRTg4MDkyMDA4QUU0OTEgLyogSURCSW5kZXhJbXBs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5
OEUzMUJFODgwODQwMDhBRTQ5MSAvKiBJREJJbmRleEltcGwuY3BwICovOyB9OworCQk1MUY3OThF
ODFCRTg4MDkyMDA4QUU0OTEgLyogSURCSW5kZXhJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY3OThFNDFCRTg4MDg0MDA4QUU0OTEgLyogSURC
SW5kZXhJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTFGNzk4RUYxQkU4ODBFNzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY3OThFQjFCRTg4MEQz
MDA4QUU0OTEgLyogSURCSW5kZXhJbmZvLmNwcCAqLzsgfTsKKwkJNTFGNzk4RjAxQkU4ODBFNzAw
OEFFNDkxIC8qIElEQkluZGV4SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGNzk4RUMxQkU4ODBEMzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxRjc5
OEYzMUJFODgzOTQwMDhBRTQ5MSAvKiBJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEYxMUJFODgzOEQw
MDhBRTQ5MSAvKiBJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmNwcCAqLzsgfTsKKwkJNTFGNzk4RjQx
QkU4ODM5NDAwOEFFNDkxIC8qIElEQkN1cnNvcldpdGhWYWx1ZUltcGwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEYyMUJFODgzOEQwMDhBRTQ5
MSAvKiBJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGQTJENzgxNTIxMzJCMzAwQzFCQTBCIC8qIERPTVdp
bmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRkI1NTA0
MTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkI1NTAyMTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Ns
b3NlRXZlbnQuaCAqLzsgfTsKIAkJNTFGQjU1MDUxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VF
dmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUZCNTUwMzExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmNwcCAqLzsgfTsKQEAgLTk2
MjUsNiArOTYzMywxNCBAQAogCQk1MUY0MUE1NzFCQTczQjJDMDAyRTA1M0IgLyogSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RjZBM0Q1MDY2M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MQ2FudmFz
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1MUY2QTNENjA2NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRNTENhbnZhc0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CisJCTUxRjc5OEUxMUJFODgwODQwMDhBRTQ5MSAvKiBJREJDdXJz
b3JJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkN1cnNv
ckltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY3OThFMjFCRTg4MDg0
MDA4QUU0OTEgLyogSURCQ3Vyc29ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJREJDdXJzb3JJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjc5
OEUzMUJFODgwODQwMDhBRTQ5MSAvKiBJREJJbmRleEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSURCSW5kZXhJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFGNzk4RTQxQkU4ODA4NDAwOEFFNDkxIC8qIElEQkluZGV4SW1wbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJJbmRleEltcGwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNzk4RUIxQkU4ODBEMzAwOEFFNDkxIC8qIElEQkluZGV4
SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJJbmRleElu
Zm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY3OThFQzFCRTg4MEQzMDA4
QUU0OTEgLyogSURCSW5kZXhJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElEQkluZGV4SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY3OThGMTFC
RTg4MzhEMDA4QUU0OTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNzk4RjIxQkU4ODM4RDAwOEFFNDkxIC8qIElE
QkN1cnNvcldpdGhWYWx1ZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUZCNTUwMjExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2xvc2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUZCNTUwMzExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2xvc2VFdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkI2N0Q5MUFFNkI1RTQwMEQwNkM1QSAvKiBDb250
ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjc2OSwxMCArMTY3ODUsMTYgQEAKIAkJCQk1MTg1RkNCQzFCQjVDQjc3
MDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCAqLywKIAkJCQk1MTBBNThGRDFC
QjA3QTk2MDBDMTkyODIgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmggKi8sCiAJCQkJNTE4NUZD
QkQxQkI1Q0I3NzAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggKi8s
CisJCQkJNTFGNzk4RTExQkU4ODA4NDAwOEFFNDkxIC8qIElEQkN1cnNvckltcGwuY3BwICovLAor
CQkJCTUxRjc5OEUyMUJFODgwODQwMDhBRTQ5MSAvKiBJREJDdXJzb3JJbXBsLmggKi8sCisJCQkJ
NTFGNzk4RjExQkU4ODM4RDAwOEFFNDkxIC8qIElEQkN1cnNvcldpdGhWYWx1ZUltcGwuY3BwICov
LAorCQkJCTUxRjc5OEYyMUJFODgzOEQwMDhBRTQ5MSAvKiBJREJDdXJzb3JXaXRoVmFsdWVJbXBs
LmggKi8sCiAJCQkJNTE5OEY3QUUxQkJERjU5MjAwRTJDQzVGIC8qIElEQkRhdGFiYXNlSW1wbC5j
cHAgKi8sCiAJCQkJNTE5OEY3QUYxQkJERjU5MjAwRTJDQzVGIC8qIElEQkRhdGFiYXNlSW1wbC5o
ICovLAogCQkJCTUxMDMxMDRBMUJBOEM2QTYwMDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5jcHAg
Ki8sCiAJCQkJNTEwMzEwNEIxQkE4QzZBNjAwMzMyOUMwIC8qIElEQkZhY3RvcnlJbXBsLmggKi8s
CisJCQkJNTFGNzk4RTMxQkU4ODA4NDAwOEFFNDkxIC8qIElEQkluZGV4SW1wbC5jcHAgKi8sCisJ
CQkJNTFGNzk4RTQxQkU4ODA4NDAwOEFFNDkxIC8qIElEQkluZGV4SW1wbC5oICovLAogCQkJCTUx
NjA3MTI5MUJEODMwNTMwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUltcGwuY3BwICovLAogCQkJ
CTUxNjA3MTJBMUJEODMwNTMwMERCQzRGMiAvKiBJREJPYmplY3RTdG9yZUltcGwuaCAqLywKIAkJ
CQk1MTAzMTA1NjFCQThEQjMwMDAzMzI5QzAgLyogSURCT3BlbkRCUmVxdWVzdEltcGwuY3BwICov
LApAQCAtMTY3OTYsNiArMTY4MTgsOCBAQAogCQkJCTUxQkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAv
KiBJREJEYXRhYmFzZUluZm8uaCAqLywKIAkJCQk1MTQ4NDUzQzFCQjlEMDc2MDA2QTcyRUQgLyog
SURCRXJyb3IuY3BwICovLAogCQkJCTUxNDg0NTNEMUJCOUQwNzYwMDZBNzJFRCAvKiBJREJFcnJv
ci5oICovLAorCQkJCTUxRjc5OEVCMUJFODgwRDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uY3Bw
ICovLAorCQkJCTUxRjc5OEVDMUJFODgwRDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCAqLywK
IAkJCQk1MTYwNzEyQzFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmNwcCAq
LywKIAkJCQk1MTYwNzEyRDFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmgg
Ki8sCiAJCQkJNTEwQTU4RjUxQkFDQzRBNTAwQzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmNwcCAq
LywKQEAgLTI1MTYxLDYgKzI1MTg1LDcgQEAKIAkJCQlBNDIyNkU5OTExNjNEN0NDMDA4QjgzOTcg
LyogRE9NSFRNTFByb2dyZXNzRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NTE4M0I0QTBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODVFNzExQzQwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxRdW90ZUVsZW1l
bnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGNzk4RTYxQkU4ODA5MjAwOEFFNDkx
IC8qIElEQkN1cnNvckltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1REY4MTlCMEFBNzdFNEIw
MDQ4NkFENyAvKiBET01IVE1MU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVF
NzExQzUwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxTY3JpcHRFbGVtZW50SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RjMyQUYwMEFBNjNCODcwMEZGMzE4NCAvKiBET01IVE1MU2Vs
ZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI2OCw2ICsyNjI5Myw3IEBACiAJCQkJ
QTgzQjc4RkMwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VVcmlFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0Q5OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEOUIwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjc5OEY0MUJFODgz
OTQwMDhBRTQ5MSAvKiBJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjdCMjgyODBDRUYwQzA3MDBEMzlENTQgLyogSlNTVkdHbHlwaEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI0RDkxMjlBMTNDQTk3MTQwMEQyMTkxNSAvKiBKU1NWR0dseXBoUmVmRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEOUQwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTY3LDYgKzI2OTkzLDcg
QEAKIAkJCQlCQ0VBNDg4MDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0ZBOTMwODEwMzMzMTkzMDA3QjI1RDEgLyogUmVuZGVyT3ZlcmZsb3cu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE0M0JGNTlEMTE0OTI5MjgwMEM2NDNDQSAvKiBSZW5kZXJQ
cm9ncmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGNzk4RTgxQkU4ODA5MjAwOEFFNDkxIC8q
IElEQkluZGV4SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVCNjU4NzQxODZGREU0QzAwOUMy
NkU4IC8qIFJlbmRlclB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUE1NzRGMjUxMzFEQjkzOTAw
NDcxQjg4IC8qIFJlbmRlclF1b3RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlENzBBRDY1ODEzRTEz
NDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzI3LDYg
KzI3NzU0LDcgQEAKIAkJCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzN0ZENDI5ODExODM2ODQ2MDA5M0MwMjkgLyogVHJlZURlcHRo
TGltaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDY0QjVEMTM0QTVCNkIwMEU1OEZEQSAvKiBU
cmVlU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjc5OEYwMUJFODgwRTcwMDhBRTQ5MSAv
KiBJREJJbmRleEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUFEQkFENkVGMUJDREQ5NTcwMDM4
MTMyNSAvKiBSZXNvdXJjZVVzYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RTFG
RjAxNEFBQ0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1NEZFNzM5MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAq
LywKQEAgLTI5MDI1LDYgKzI5MDUzLDcgQEAKIAkJCQk4NDczMEQ4NDEyNDhGMEIzMDBEM0E5Qzkg
LyogRkVNb3JwaG9sb2d5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDg2MTI0OEYwQjMw
MEQzQTlDOSAvKiBGRU9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDczMEQ4ODEyNDhG
MEIzMDBEM0E5QzkgLyogRkVTcGVjdWxhckxpZ2h0aW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxRjc5OEU1MUJFODgwOTIwMDhBRTQ5MSAvKiBJREJDdXJzb3JJbXBsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg0NzMwRDhBMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVRpbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODQ3MzBEOEMxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFVHVyYnVsZW5jZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA5NDEyQjAyNkY3MDBDMUEzNTkgLyogRkZUQ29udm9s
dmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4NjgsNiArMjk4OTcsNyBAQAogCQkJCTUxRTNG
OUQ2MERBMDVFMUQwMDI1MDkxMSAvKiBKU1N0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFEMEM1MTYwREFBOTBCNzAwM0IzODMxIC8qIEpTU3RvcmFnZUN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MUUwQkFFQTBEQTU1RDRBMDBBOUU0MTcgLyogSlNTdG9yYWdlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTFGNzk4RTcxQkU4ODA5MjAwOEFFNDkxIC8qIElEQkluZGV4
SW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY1MDI2OTEwMkJBOTQzMDA2NkYzOUEgLyog
SlNTdHlsZU1lZGlhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTAxMzlBMEMwQkVGMTgwMDQz
ODYwQSAvKiBKU1N0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5OEEyN0QwQzBD
OTk1MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVldEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMwMjU4LDYgKzMwMjg4LDcgQEAKIAkJCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3MUE3NzE1OUJC
MDcwMDAxOTc1NTkgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcwNTg1MTUxN0ZCMEVFQTAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRjc5OEYzMUJFODgzOTQwMDhBRTQ5MSAvKiBJ
REJDdXJzb3JXaXRoVmFsdWVJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTAwMTdE
MTRDRUUwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3MTE1ODkxMTdERjZGNjYwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDc4RTA5MDExN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDc2MSw2ICszMDc5Miw3IEBACiAJCQkJRkQ0
NUE5NTMxNzVEM0ZCODAwQzIxRUM4IC8qIFNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
NDVBOTU2MTc1RDNGQjgwMEMyMUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQjVFQkQwMTk0QTFEMTcwMDU5QUM3MCAvKiBTaGFwZVZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxRjc5OEVGMUJFODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTk1NEQwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJl
ZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJERDhFMzBEOTFFMkI0MDAwRjg5RUUg
LyogU2hhcmVkQnVmZmVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCMUYwMkUxM0IwMjVD
QTAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="289801"
          type_id="1"
          status="-"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="289802"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264719</attachid>
            <date>2015-11-03 13:34:11 -0800</date>
            <delta_ts>2015-11-03 14:25:07 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38787</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjUyZGFjZS4uYWI5YWZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTg2Nyw4ICs4NjcsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ3Vyc29ySW1wbC5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCRGF0YWJhc2VJbXBsLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJGYWN0
b3J5SW1wbC5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNw
cAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcAogICAg
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAgLTkwOCw2ICs5
MTEsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRGF0YWJhc2VJbmZvLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJF
cnJvci5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcAog
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmNlNGQzMi4uMDAzYzk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTExLTAz
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURC
OiBMYW5kIGVtcHR5IElEQkN1cnNvci9JbmRleCBJREwgaW1wbGVtZW50YXRpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChO
byBjaGFuZ2UgaW4gYmVoYXZpb3IpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjp+SURCQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCQ3Vyc29yOjpkaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJDdXJzb3I6OmtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkN1cnNvcjo6cHJpbWFyeUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1
cnNvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OnNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6dXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjphZHZhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaDogQWRkZWQu
CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JX
aXRoVmFsdWVJbXBsLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuaDogQWRkZWQuCisgICAgICAgIAorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6On5JREJJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDbGllbnQ6OklEQkluZGV4OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCSW5kZXg6Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCSW5kZXg6OmtleVBhdGhBbnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJJbmRleDo6a2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQklu
ZGV4Ojp1bmlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6bXVs
dGlFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkluZGV4OjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6OmNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6Z2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCSW5kZXg6OmdldEtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oLgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5SW5kZXguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUluZGV4OjppZCk6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCSW5kZXhJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhJ
bmZvOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4SW5mbzo6a2V5UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleEluZm86OnVuaXF1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleEluZm86Om11bHRpRW50cnkpOgorCiAyMDE1LTExLTAzICBLZWl0aCBSb2xsaW4g
IDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudC50ZXh0IHNo
b3VsZCBuZXZlciByZXR1cm4gdGhlIHZhbHVlIG9mIGxhYmVsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCA1Yzg3ZjcyLi43ZWJhM2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTQ4LDEzICs0OCwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCSW5kZXgoKSB7IH0KIAogICAgIC8vIEltcGxl
bWVudCB0aGUgSURMCi0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcgbmFtZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBSZWZQdHI8SURCQW55PiBrZXlQYXRoQW55KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Y29uc3QgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
SURCS2V5UGF0aCYga2V5UGF0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgaW50NjRfdCBpZCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUmVmUHRy
PElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlv
bkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkN1cnNvckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkN1cnNvckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRh
YWU4MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ3Vyc29ySW1wbC5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJDdXJzb3JJbXBsLmgiCisKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IElEQkNsaWVudCB7CisKK0lEQkN1cnNvcjo6fklEQkN1cnNvcigpCit7Cit9CisKK2NvbnN0IFN0
cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb24oKSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJD
dXJzb3I6OmtleSgpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6cHJpbWFyeUtl
eSgpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6dmFsdWUoKSBjb25zdAorewor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0lEQkFueSogSURCQ3Vyc29y
Ojpzb3VyY2UoKSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSYs
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJDdXJzb3I6OmFkdmFuY2UodW5z
aWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2Vw
dGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg5YjkxYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJ
bXBsLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCQ3Vyc29ySW1w
bF9oCisjZGVmaW5lIElEQkN1cnNvckltcGxfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKKyNpbmNsdWRlICJJREJDdXJzb3JXaXRoVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIElEQkNsaWVudCB7CisKK2NsYXNzIElEQkN1cnNvciA6IHB1YmxpYyBX
ZWJDb3JlOjpJREJDdXJzb3JXaXRoVmFsdWUgeworcHVibGljOgorICAgIHZpcnR1YWwgfklEQkN1
cnNvcigpOworCisgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKKyAgICB2aXJ0dWFsIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIHZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBJREJBbnkq
IHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworCisgICAgdmlydHVhbCBSZWZQdHI8SURC
UmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGFkdmFu
Y2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZp
cnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgSURCQ3Vy
c29yKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIElE
QkN1cnNvckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzJlNzUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0aFZhbHVl
SW1wbC5jcHAKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmgiCisKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFs
dWVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vy
c29yV2l0aFZhbHVlSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRi
MThmMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIElEQkN1cnNvcldpdGhWYWx1ZUltcGxfaAorI2RlZmluZSBJREJDdXJz
b3JXaXRoVmFsdWVJbXBsX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5j
bHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBJREJDbGllbnQgeworCitjbGFzcyBJREJDdXJzb3JXaXRoVmFsdWUgOiBwdWJsaWMgSURC
Q3Vyc29yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JREJDdXJzb3JXaXRoVmFsdWUoKTsKKwor
cHJpdmF0ZToKKyAgICBJREJDdXJzb3JXaXRoVmFsdWUoKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IElEQkNsaWVudAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCQ3Vyc29yV2l0aFZhbHVlSW1wbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRl
eEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNDZiOTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCSW5kZXhJbXBsLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJJbmRleEltcGwuaCIKKworI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURCQ2xpZW50
IHsKKworSURCSW5kZXg6On5JREJJbmRleCgpCit7Cit9CisKK2NvbnN0IFN0cmluZyYgSURCSW5k
ZXg6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZm8ubmFtZSgpOworfQorCitSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IElEQkluZGV4OjpvYmplY3RTdG9yZSgpIGNvbnN0Cit7CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworUmVmUHRyPElEQkFueT4gSURCSW5k
ZXg6OmtleVBhdGhBbnkoKSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK2NvbnN0IElEQktleVBhdGgmIElEQkluZGV4OjprZXlQYXRoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbmZvLmtleVBhdGgoKTsKK30KKworYm9vbCBJREJJbmRleDo6dW5pcXVl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmZvLnVuaXF1ZSgpOworfQorCitib29sIElEQklu
ZGV4OjptdWx0aUVudHJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmZvLm11bHRpRW50cnko
KTsKK30KKworUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJL
ZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9u
Q29kZSYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQoreworICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitSZWZQdHI8SURCUmVxdWVz
dD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBF
eGNlcHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBF
eGNlcHRpb25Db2RlJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBJ
REJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjQ4YzJkZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSURCSW5kZXhJbXBsX2gKKyNkZWZpbmUgSURCSW5kZXhJbXBsX2gKKworI2lu
Y2x1ZGUgIklEQkluZGV4LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2lu
Y2x1ZGUgIklEQkluZGV4SW5mby5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
SURCQ2xpZW50IHsKKworY2xhc3MgSURCSW5kZXggOiBwdWJsaWMgV2ViQ29yZTo6SURCSW5kZXgg
eworcHVibGljOgorICAgIHZpcnR1YWwgfklEQkluZGV4KCk7CisKKyAgICAvLyBJbXBsZW1lbnQg
dGhlIElETAorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8SURCQW55PiBrZXlQYXRo
QW55KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBib29sIHVuaXF1
ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5KCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CisKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmly
dHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2Uq
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8SURC
UmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKworICAg
IHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBv
cGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlIGZpbmFsOworCisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0
PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdl
dEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworCitwcml2YXRlOgorICAg
IElEQkluZGV4SW5mbyBtX2luZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorI2VuZGlmIC8vIElEQkluZGV4SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5SW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lJbmRleC5oCmluZGV4IDU1YjYyMmYuLmVjZmVl
MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kv
TGVnYWN5SW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdh
Y3kvTGVnYWN5SW5kZXguaApAQCAtNTUsMTQgKzU1LDE0IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5
SW5kZXgoKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCi0gICAgdmlydHVhbCBjb25zdCBT
dHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbWV0YWRhdGEubmFt
ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CiAgICAgdmlydHVhbCBSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IG9iamVjdFN0b3JlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9v
YmplY3RTdG9yZTsgfQogICAgIExlZ2FjeU9iamVjdFN0b3JlKiBsZWdhY3lPYmplY3RTdG9yZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmUuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIFJlZlB0
cjxJREJBbnk+IGtleVBhdGhBbnkoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBMZWdh
Y3lBbnk6OmNyZWF0ZShtX21ldGFkYXRhLmtleVBhdGgpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBJ
REJLZXlQYXRoIGtleVBhdGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX21ldGFk
YXRhLmtleVBhdGg7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX21ldGFkYXRhLmtleVBhdGg7IH0KICAgICB2
aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9tZXRh
ZGF0YS51bmlxdWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIG1fbWV0YWRhdGEubXVsdGlFbnRyeTsgfQotICAgIHZpcnR1YWwg
aW50NjRfdCBpZCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbWV0YWRhdGEuaWQ7
IH0KKyAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5pZDsgfQogCiAg
ICAgLy8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgaXMg
dW5uZWVkZWQuCiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5n
ZSo+KG51bGxwdHIpLCBlYyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNjlkYmY5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uY3BwCkBAIC0wLDAgKzEsMzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCSW5kZXhJ
bmZvLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJJbmRleEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJJbmRleEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kOWY3ZmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIElEQkluZGV4SW5mb19oCisjZGVmaW5lIElEQkluZGV4SW5mb19oCisKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJREJJbmRleEluZm8geworcHVibGljOgorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgoKSBjb25z
dCB7IHJldHVybiBtX2tleVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9tdWx0
aUVudHJ5OyB9CisKK3ByaXZhdGU6CisgICAgSURCSW5kZXhJbmZvKCk7CisKKyAgICBTdHJpbmcg
bV9uYW1lOworICAgIElEQktleVBhdGggbV9rZXlQYXRoOworICAgIGJvb2wgbV91bmlxdWUgeyB0
cnVlIH07CisgICAgYm9vbCBtX211bHRpRW50cnkgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5k
aWYgLy8gSURCSW5kZXhJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NWI0NDY0Li45ODllZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjE0LDYg
KzIyMTQsMTQgQEAKIAkJNTFGNDFBN0ExQkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdPcGVu
Q2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
NDFBNTExQkE3M0IyQzAwMkUwNTNCIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjQxQTdCMUJBNzNCNUIw
MDJFMDUzQiAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjNDMUI5RjY4Q0YwMEY3ODlD
RSAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcCAqLzsgfTsKIAkJNTFGNDFBN0Mx
QkE3M0I1QjAwMkUwNTNCIC8qIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjNEMUI5RjY4Q0Yw
MEY3ODlDRSAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmggKi87IH07CisJCTUxRjc5
OEU1MUJFODgwOTIwMDhBRTQ5MSAvKiBJREJDdXJzb3JJbXBsLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEUxMUJFODgwODQwMDhBRTQ5MSAv
KiBJREJDdXJzb3JJbXBsLmNwcCAqLzsgfTsKKwkJNTFGNzk4RTYxQkU4ODA5MjAwOEFFNDkxIC8q
IElEQkN1cnNvckltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRjc5OEUyMUJFODgwODQwMDhBRTQ5MSAvKiBJREJDdXJzb3JJbXBsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFGNzk4RTcxQkU4
ODA5MjAwOEFFNDkxIC8qIElEQkluZGV4SW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY3OThFMzFCRTg4MDg0MDA4QUU0OTEgLyogSURCSW5k
ZXhJbXBsLmNwcCAqLzsgfTsKKwkJNTFGNzk4RTgxQkU4ODA5MjAwOEFFNDkxIC8qIElEQkluZGV4
SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
Nzk4RTQxQkU4ODA4NDAwOEFFNDkxIC8qIElEQkluZGV4SW1wbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxRjc5OEVGMUJFODgwRTcwMDhBRTQ5
MSAvKiBJREJJbmRleEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGNzk4RUIxQkU4ODBEMzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5jcHAg
Ki87IH07CisJCTUxRjc5OEYwMUJFODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEVDMUJFODgw
RDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1MUY3OThGMzFCRTg4Mzk0MDA4QUU0OTEgLyogSURCQ3Vy
c29yV2l0aFZhbHVlSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY3OThGMTFCRTg4MzhEMDA4QUU0OTEgLyogSURCQ3Vyc29yV2l0aFZhbHVl
SW1wbC5jcHAgKi87IH07CisJCTUxRjc5OEY0MUJFODgzOTQwMDhBRTQ5MSAvKiBJREJDdXJzb3JX
aXRoVmFsdWVJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUY3OThGMjFCRTg4MzhEMDA4QUU0OTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRkEy
RDc4MTUyMTMyQjMwMEMxQkEwQiAvKiBET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1
OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUZCNTUwNDExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZC
NTUwMjExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmggKi87IH07CiAJCTUxRkI1NTA1
MTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDMxMTNFM0U5MTAwODIxMTc2IC8qIEpT
Q2xvc2VFdmVudC5jcHAgKi87IH07CkBAIC05NjI1LDYgKzk2MzMsMTQgQEAKIAkJNTFGNDFBNTcx
QkE3M0IyQzAwMkUwNTNCIC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2QTNENTA2NjNCRjA0MDA0RDI5MTkgLyogSFRN
TENhbnZhc0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTENhbnZhc0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTFGNkEzRDYwNjYzQkYw
NDAwNEQyOTE5IC8qIEhUTUxDYW52YXNFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxDYW52YXNFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1MUY3OThF
MTFCRTg4MDg0MDA4QUU0OTEgLyogSURCQ3Vyc29ySW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJREJDdXJzb3JJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFGNzk4RTIxQkU4ODA4NDAwOEFFNDkxIC8qIElEQkN1cnNvckltcGwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29ySW1wbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUY3OThFMzFCRTg4MDg0MDA4QUU0OTEgLyogSURCSW5k
ZXhJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkluZGV4
SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjc5OEU0MUJFODgwODQw
MDhBRTQ5MSAvKiBJREJJbmRleEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSURCSW5kZXhJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjc5OEVC
MUJFODgwRDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSURCSW5kZXhJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFGNzk4RUMxQkU4ODBEMzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJJbmRleEluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNzk4RjExQkU4ODM4RDAwOEFFNDkxIC8qIElEQkN1cnNvcldp
dGhWYWx1ZUltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURC
Q3Vyc29yV2l0aFZhbHVlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
Rjc5OEYyMUJFODgzOEQwMDhBRTQ5MSAvKiBJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvcldpdGhWYWx1ZUltcGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQjU1MDIxMTNFM0U5MTAwODIxMTc2IC8qIEpT
Q2xvc2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Nsb3NlRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQjU1MDMxMTNFM0U5MTAwODIx
MTc2IC8qIEpTQ2xvc2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Nsb3NlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUZC
NjdEOTFBRTZCNUU0MDBEMDZDNUEgLyogQ29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVuc2lvblN0eWxl
U2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3NjksMTAgKzE2Nzg1
LDE2IEBACiAJCQkJNTE4NUZDQkMxQkI1Q0I3NzAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHAgKi8sCiAJCQkJNTEwQTU4RkQxQkIwN0E5NjAwQzE5MjgyIC8qIElEQkNvbm5lY3Rp
b25Ub1NlcnZlci5oICovLAogCQkJCTUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oICovLAorCQkJCTUxRjc5OEUxMUJFODgwODQwMDhBRTQ5
MSAvKiBJREJDdXJzb3JJbXBsLmNwcCAqLywKKwkJCQk1MUY3OThFMjFCRTg4MDg0MDA4QUU0OTEg
LyogSURCQ3Vyc29ySW1wbC5oICovLAorCQkJCTUxRjc5OEYxMUJFODgzOEQwMDhBRTQ5MSAvKiBJ
REJDdXJzb3JXaXRoVmFsdWVJbXBsLmNwcCAqLywKKwkJCQk1MUY3OThGMjFCRTg4MzhEMDA4QUU0
OTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5oICovLAogCQkJCTUxOThGN0FFMUJCREY1OTIw
MEUyQ0M1RiAvKiBJREJEYXRhYmFzZUltcGwuY3BwICovLAogCQkJCTUxOThGN0FGMUJCREY1OTIw
MEUyQ0M1RiAvKiBJREJEYXRhYmFzZUltcGwuaCAqLywKIAkJCQk1MTAzMTA0QTFCQThDNkE2MDAz
MzI5QzAgLyogSURCRmFjdG9yeUltcGwuY3BwICovLAogCQkJCTUxMDMxMDRCMUJBOEM2QTYwMDMz
MjlDMCAvKiBJREJGYWN0b3J5SW1wbC5oICovLAorCQkJCTUxRjc5OEUzMUJFODgwODQwMDhBRTQ5
MSAvKiBJREJJbmRleEltcGwuY3BwICovLAorCQkJCTUxRjc5OEU0MUJFODgwODQwMDhBRTQ5MSAv
KiBJREJJbmRleEltcGwuaCAqLywKIAkJCQk1MTYwNzEyOTFCRDgzMDUzMDBEQkM0RjIgLyogSURC
T2JqZWN0U3RvcmVJbXBsLmNwcCAqLywKIAkJCQk1MTYwNzEyQTFCRDgzMDUzMDBEQkM0RjIgLyog
SURCT2JqZWN0U3RvcmVJbXBsLmggKi8sCiAJCQkJNTEwMzEwNTYxQkE4REIzMDAwMzMyOUMwIC8q
IElEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcCAqLywKQEAgLTE2Nzk2LDYgKzE2ODE4LDggQEAKIAkJ
CQk1MUJBNEFDMjFCQkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi8sCiAJCQkJ
NTE0ODQ1M0MxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmNwcCAqLywKIAkJCQk1MTQ4NDUz
RDFCQjlEMDc2MDA2QTcyRUQgLyogSURCRXJyb3IuaCAqLywKKwkJCQk1MUY3OThFQjFCRTg4MEQz
MDA4QUU0OTEgLyogSURCSW5kZXhJbmZvLmNwcCAqLywKKwkJCQk1MUY3OThFQzFCRTg4MEQzMDA4
QUU0OTEgLyogSURCSW5kZXhJbmZvLmggKi8sCiAJCQkJNTE2MDcxMkMxQkQ4MzA3MjAwREJDNEYy
IC8qIElEQk9iamVjdFN0b3JlSW5mby5jcHAgKi8sCiAJCQkJNTE2MDcxMkQxQkQ4MzA3MjAwREJD
NEYyIC8qIElEQk9iamVjdFN0b3JlSW5mby5oICovLAogCQkJCTUxMEE1OEY1MUJBQ0M0QTUwMEMx
OTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5jcHAgKi8sCkBAIC0yNTE2MSw2ICsyNTE4NSw3IEBACiAJ
CQkJQTQyMjZFOTkxMTYzRDdDQzAwOEI4Mzk3IC8qIERPTUhUTUxQcm9ncmVzc0VsZW1lbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUxODNCNEEwQUE2OTI2MTAwRjE5RkEzIC8qIERP
TUhUTUxRdW90ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUM0MEFDNUQ1MzUw
MDUzMjcwRiAvKiBET01IVE1MUXVvdGVFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxRjc5OEU2MUJFODgwOTIwMDhBRTQ5MSAvKiBJREJDdXJzb3JJbXBsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NURGODE5QjBBQTc3RTRCMDA0ODZBRDcgLyogRE9NSFRNTFNjcmlwdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUM1MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01I
VE1MU2NyaXB0RWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUYzMkFGMDBB
QTYzQjg3MDBGRjMxODQgLyogRE9NSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYyNjgsNiArMjYyOTMsNyBAQAogCQkJCUE4M0I3OEZDMENDQUZGMTUwMDBCMDgyNSAvKiBK
U1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEOTkwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRkEzRDlCMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0dFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MUY3OThGNDFCRTg4Mzk0MDA4QUU0OTEgLyogSURCQ3Vyc29yV2l0aFZh
bHVlSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3QjI4MjgwQ0VGMEMwNzAwRDM5RDU0IC8q
IEpTU1ZHR2x5cGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNEQ5MTI5QTEzQ0E5NzE0
MDBEMjE5MTUgLyogSlNTVkdHbHlwaFJlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
RkEzRDlEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0dyYWRpZW50RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjk2Nyw2ICsyNjk5Myw3IEBACiAJCQkJQkNFQTQ4ODAwOTdEOTMwMjAwOTRD
OUU0IC8qIFJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGQTkzMDgxMDMzMzE5
MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDNCRjU5
RDExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3MuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxRjc5OEU4MUJFODgwOTIwMDhBRTQ5MSAvKiBJREJJbmRleEltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUI1QjY1ODc0MTg2RkRFNEMwMDlDMjZFOCAvKiBSZW5kZXJQdHIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVBNTc0RjI1MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJRdW90ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRDcwQUQ2NTgxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzcyNyw2ICsyNzc1NCw3IEBACiAJCQkJODU0RkU3MzcwQTIy
OTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdGRDQyOTgx
MTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NEQ2NEI1RDEzNEE1QjZCMDBFNThGREEgLyogVHJlZVNjb3BlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MUY3OThGMDFCRTg4MEU3MDA4QUU0OTEgLyogSURCSW5kZXhJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBREJBRDZFRjFCQ0REOTU3MDAzODEzMjUgLyogUmVzb3VyY2VVc2FnZU92ZXJsYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0UxRkYwMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2Nv
cGVBZG9wdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQg
LyogVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTAyNSw2ICsyOTA1Myw3IEBACiAJ
CQkJODQ3MzBEODQxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFTW9ycGhvbG9neS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NDczMEQ4NjEyNDhGMEIzMDBEM0E5QzkgLyogRkVPZmZzZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODQ3MzBEODgxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFU3BlY3VsYXJMaWdo
dGluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUY3OThFNTFCRTg4MDkyMDA4QUU0OTEgLyog
SURCQ3Vyc29ySW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDczMEQ4QTEyNDhGMEIzMDBE
M0E5QzkgLyogRkVUaWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDhDMTI0OEYwQjMw
MEQzQTlDOSAvKiBGRVR1cmJ1bGVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwOTQx
MkIwMjZGNzAwQzFBMzU5IC8qIEZGVENvbnZvbHZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
ODY4LDYgKzI5ODk3LDcgQEAKIAkJCQk1MUUzRjlENjBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9y
YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDBDNTE2MERBQTkwQjcwMDNCMzgzMSAvKiBK
U1N0b3JhZ2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMEJBRUEwREE1NUQ0QTAw
QTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRjc5OEU3
MUJFODgwOTIwMDhBRTQ5MSAvKiBJREJJbmRleEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGNTAyNjkxMDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0UwMTM5QTBDMEJFRjE4MDA0Mzg2MEEgLyogSlNTdHlsZVNoZWV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDOThBMjdEMEMwQzk5NTAwMDRCRUJGNyAvKiBKU1N0eWxlU2hlZXRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDI1OCw2ICszMDI4OCw3IEBACiAJCQkJMDc4
MzIyODQxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ2NzFBNzcxNTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDU4NTE1MTdGQjBFRUEwMDVG
MkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MUY3OThGMzFCRTg4Mzk0MDA4QUU0OTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwNzhFMDkwMDE3RDE0Q0VFMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1F
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzExNTg5MTE3REY2RjY2MDBFREZFMkIgLyog
TWVkaWFTdHJlYW1Qcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTAxMTdEMTRD
RUUwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzA3NjEsNiArMzA3OTIsNyBAQAogCQkJCUZENDVBOTUzMTc1RDNGQjgwMEMyMUVDOCAvKiBTaGFw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1NjE3NUQzRkI4MDBDMjFFQzggLyogU2hh
cGVPdXRzaWRlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI1RUJEMDE5NEExRDE3MDA1
OUFDNzAgLyogU2hhcGVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUY3OThFRjFCRTg4
MEU3MDA4QUU0OTEgLyogSURCSW5kZXhJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5
NTREMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTEyREQ4RTMwRDkxRTJCNDAwMEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QjFGMDJFMTNCMDI1Q0EwMEY1MTAzRiAvKiBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>