<?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>32237</bug_id>
          
          <creation_ts>2009-12-07 12:56:07 -0800</creation_ts>
          <short_desc>Remove partial SharedScript implementation.</short_desc>
          <delta_ts>2009-12-07 13:56:37 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>169433</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-07 12:56:07 -0800</bug_when>
    <thetext>... since we are not implementing it any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169446</commentid>
    <comment_count>1</comment_count>
      <attachid>44429</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-07 13:14:41 -0800</bug_when>
    <thetext>Created attachment 44429
Revert r51374

The patch was obtained by &quot;git revert&quot; with subsequent update of WebCore/ChangeLog to prevent the original change from disappearing.
The ENABLE_SHARED_SCRIPT flags will be removed separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169449</commentid>
    <comment_count>2</comment_count>
      <attachid>44429</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-07 13:17:29 -0800</bug_when>
    <thetext>Comment on attachment 44429
Revert r51374

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169465</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-07 13:56:37 -0800</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/51793</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44429</attachid>
            <date>2009-12-07 13:14:41 -0800</date>
            <delta_ts>2009-12-07 13:17:29 -0800</delta_ts>
            <desc>Revert r51374</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>52445</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTQ1MGExMi4uYWE2YjMyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAwOS0xMi0wNyAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgcGFydGlhbCBTaGFyZWRTY3JpcHQgaW1wbGVtZW50YXRp
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjIz
NworICAgICAgICBUaGUgcGF0Y2ggd2FzIG9idGFpbmVkIGJ5IHJ1bm5pbmcgImdpdCByZXZlcnQi
IGNvbW1hbmQgYW5kIHRoZW4gdW4tcmV2ZXJ0aW5nIFdlYkNvcmUvQ2hhbmdlTG9nLgorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTaGFyZWRTY3JpcHQvU2hhcmVk
U2NyaXB0Q29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkU2NyaXB0L1NoYXJl
ZFNjcmlwdENvbnRleHQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWRTY3JpcHQvU2hhcmVk
U2NyaXB0Q29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkU2NyaXB0L1NoYXJl
ZFNjcmlwdENvbnRyb2xsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWRTY3JpcHQvV2Vi
S2l0U2hhcmVkU2NyaXB0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWRTY3JpcHQvV2Vi
S2l0U2hhcmVkU2NyaXB0Lmg6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkU2NyaXB0L1dlYktp
dFNoYXJlZFNjcmlwdC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkU2NyaXB0L1dlYktp
dFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZFNj
cmlwdC9XZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5Lmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQu
Y3BwOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0Lmg6CisKIDIwMDktMTItMDIgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggOWUwM2YxMy4uOGM4NjQzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzksNyArMzksNiBA
QCBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViQ29y
ZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zIFwKLSAgICAkKFdlYkNvcmUpL1NoYXJl
ZFNjcmlwdCBcCiAgICAgJChXZWJDb3JlKS9zdG9yYWdlIFwKICAgICAkKFdlYkNvcmUpL3htbCBc
CiAgICAgJChXZWJDb3JlKS93bWwgXApAQCAtMjM1LDcgKzIzNCw2IEBAIERPTV9DTEFTU0VTID0g
XAogICAgIFJhbmdlIFwKICAgICBSYW5nZUV4Y2VwdGlvbiBcCiAgICAgUmVjdCBcCi0gICAgU2hh
cmVkU2NyaXB0Q29udGV4dCBcCiAgICAgU2hhcmVkV29ya2VyIFwKICAgICBTaGFyZWRXb3JrZXJD
b250ZXh0IFwKICAgICBTUUxFcnJvciBcCkBAIC00MDQsNyArNDAyLDYgQEAgRE9NX0NMQVNTRVMg
PSBcCiAgICAgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZSBcCiAgICAgV2ViS2l0Q1NTTWF0cml4IFwK
ICAgICBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSBcCi0gICAgV2ViS2l0U2hhcmVkU2NyaXB0IFwK
ICAgICBXZWJLaXRQb2ludCBcCiAgICAgV2ViS2l0VHJhbnNpdGlvbkV2ZW50IFwKICAgICBXZWJT
b2NrZXQgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9TaGFyZWRTY3JpcHQvU2hhcmVkU2NyaXB0Q29u
dGV4dC5jcHAgYi9XZWJDb3JlL1NoYXJlZFNjcmlwdC9TaGFyZWRTY3JpcHRDb250ZXh0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVmOWJlNC4uMDAwMDAwMAotLS0gYS9XZWJD
b3JlL1NoYXJlZFNjcmlwdC9TaGFyZWRTY3JpcHRDb250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNIQVJFRF9T
Q1JJUFQpCi0KLSNpbmNsdWRlICJTaGFyZWRTY3JpcHRDb250ZXh0LmgiCi0jaW5jbHVkZSAiRXZl
bnQuaCIKLSNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRTY3Jp
cHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZFNjcmlwdENvbnRleHQ6OlNoYXJlZFNj
cmlwdENvbnRleHQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKLSAgICA6IG1fbmFtZShuYW1lKQotICAgICwgbV91
cmwodXJsKQotICAgICwgbV9zY3JpcHQobmV3IFNoYXJlZFNjcmlwdENvbnRyb2xsZXIodGhpcykp
Ci0gICAgLCBtX2Rlc3RydWN0aW9uVGltZXIodGhpcywgJlNoYXJlZFNjcmlwdENvbnRleHQ6OmRl
c3RydWN0aW9uVGltZXJGaXJlZCkKLSAgICAsIG1fbG9hZGVkKGZhbHNlKQotewotICAgIHNldFNl
Y3VyaXR5T3JpZ2luKG9yaWdpbik7Ci0gICAgcmVmKCk7IC8vIE1hdGNoaW5nIGRlcmVmIGlzIGlu
IGRlc3RydWN0aW9uVGltZXJGaXJlZCBjYWxsYmFjay4KLX0KLQotdm9pZCBTaGFyZWRTY3JpcHRD
b250ZXh0OjpjbGVhclNjcmlwdCgpCi17Ci0gICAgbV9zY3JpcHQuY2xlYXIoKTsgCi19Ci0KLWNv
bnN0IEtVUkwmIFNoYXJlZFNjcmlwdENvbnRleHQ6OnZpcnR1YWxVUkwoKSBjb25zdAotewotICAg
IHJldHVybiBtX3VybDsKLX0KLQotS1VSTCBTaGFyZWRTY3JpcHRDb250ZXh0Ojp2aXJ0dWFsQ29t
cGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Ci17Ci0gICAgLy8gQWx3YXlzIHJldHVy
biBhIG51bGwgVVJMIHdoZW4gcGFzc2VkIGEgbnVsbCBzdHJpbmcuCi0gICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSBjaGFuZ2UgdGhlIEtVUkwgY29uc3RydWN0b3IgdG8gaGF2ZSB0aGlzIGJlaGF2aW9y
PwotICAgIGlmICh1cmwuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7Ci0gICAgLy8g
QWx3YXlzIHVzZSBVVEYtOCBpbiBXb3JrZXJzLgotICAgIHJldHVybiBLVVJMKG1fdXJsLCB1cmwp
OwotfQotCi12b2lkIFNoYXJlZFNjcmlwdENvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQotewotICAgIGJvb2wgZXJyb3JIYW5kbGVkID0gZmFsc2U7Ci0gICAgaWYgKG9uZXJyb3Io
KSkKLSAgICAgICAgZXJyb3JIYW5kbGVkID0gb25lcnJvcigpLT5yZXBvcnRFcnJvcih0aGlzLCBl
cnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlcik7Ci19Ci0KLXZvaWQgU2hhcmVkU2Ny
aXB0Q29udGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCi17Ci0gICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgY29uc29sZS9pbnNwZWN0
b3Igc3RvcnkgZm9yIFNoYXJlZFNjcmlwdC4gTWF5YmUgc2ltaWxhciB0byBTaGFyZWRXb3JrZXJz
LgotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJj
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOwotICAgIFVOVVNFRF9QQVJBTShsaW5lTnVtYmVyKTsK
LSAgICBVTlVTRURfUEFSQU0oc291cmNlVVJMKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFNoYXJlZFNjcmlwdENvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVx
dWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKQotewotICAgIC8vIEZJWE1F
OiBmaWd1cmUgb3V0IGNvbnNvbGUvaW5zcGVjdG9yIHN0b3J5IGZvciBTaGFyZWRTY3JpcHQuIE1h
eWJlIHNpbWlsYXIgdG8gU2hhcmVkV29ya2Vycy4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFNoYXJlZFNjcmlwdENvbnRleHQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcs
IGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgY29uc29sZS9pbnNw
ZWN0b3Igc3RvcnkgZm9yIFNoYXJlZFNjcmlwdC4gTWF5YmUgc2ltaWxhciB0byBTaGFyZWRXb3Jr
ZXJzLgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgU2hhcmVkU2NyaXB0Q29udGV4
dDo6bWF0Y2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4sIGNvbnN0IEtVUkwmIHVybFRvTWF0Y2gpIGNvbnN0Ci17Ci0gICAgLy8gSWYgdGhlIG9yaWdp
bnMgZG9uJ3QgbWF0Y2gsIG9yIHRoZSBuYW1lcyBkb24ndCBtYXRjaCwgdGhlbiB0aGlzIGlzIG5v
dCB0aGUgY29udGV4dCB3ZSBhcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKCFvcmlnaW4uZXF1YWwo
c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIElmIHRo
ZSBuYW1lcyBhcmUgYm90aCBlbXB0eSwgY29tcGFyZXMgdGhlIFVSTHMgaW5zdGVhZC4KLSAgICBp
ZiAobmFtZS5pc0VtcHR5KCkgJiYgbV9uYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHVy
bFRvTWF0Y2ggPT0gbV91cmw7Ci0KLSAgICByZXR1cm4gbmFtZSA9PSBtX25hbWU7Ci19Ci0KLXZv
aWQgU2hhcmVkU2NyaXB0Q29udGV4dDo6YWRkVG9Eb2N1bWVudHNMaXN0KERvY3VtZW50KiBkb2N1
bWVudCkKLXsKLSAgICBtX2RvY3VtZW50TGlzdC5hZGQoZG9jdW1lbnQpOwotCi0gICAgaWYgKG1f
ZGVzdHJ1Y3Rpb25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2Rlc3RydWN0aW9uVGltZXIu
c3RvcCgpOwotfQotCi12b2lkIFNoYXJlZFNjcmlwdENvbnRleHQ6OmRlc3RydWN0aW9uVGltZXJG
aXJlZChUaW1lcjxTaGFyZWRTY3JpcHRDb250ZXh0PiopCi17Ci0gICAgaWYgKCFtX2RvY3VtZW50
TGlzdC5zaXplKCkpIHsKLSAgICAgICAgV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeTo6cmVt
b3ZlU2hhcmVkU2NyaXB0Q29udGV4dCh0aGlzKTsKLSAgICAgICAgc3RvcEFjdGl2ZURPTU9iamVj
dHMoKTsKLSAgICAgICAgY2xlYXJTY3JpcHQoKTsKLSAgICAgICAgZGVyZWYoKTsKLSAgICB9Ci19
Ci0KLXZvaWQgU2hhcmVkU2NyaXB0Q29udGV4dDo6cmVtb3ZlRnJvbURvY3VtZW50TGlzdChEb2N1
bWVudCogZG9jdW1lbnQpCi17Ci0gICAgSGFzaFNldDxEb2N1bWVudCo+OjppdGVyYXRvciBpdCA9
IG1fZG9jdW1lbnRMaXN0LmZpbmQoZG9jdW1lbnQpOwotICAgIGlmIChpdCA9PSBtX2RvY3VtZW50
TGlzdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kb2N1bWVudExpc3QucmVtb3Zl
KGl0KTsKLQotICAgIC8vIFRoZSB1c2Ugb2YgYSB0aW1lciBtYWtlcyBkZXN0cnVjdGlvbiBvZiB0
aGUgY29udGV4dCBoYXBwZW4gbGF0ZXIgdG8KLSAgICAvLyBhdm9pZCBkZWFsbG9jYXRpbmcgaXQg
cmlnaHQgbm93IHdoaWxlIGl0IGlzIG5vdGlmaWVkLgotICAgIC8vIFRoZSBjb250ZXh0IGNhbiBn
YWluIGEgbmV3IG93bmVyIGJ5IHRoZSB0aW1lIHRoZSB0aW1lciBpcyBmaXJlZC4KLSAgICBpZiAo
IW1fZG9jdW1lbnRMaXN0LnNpemUoKSkKLSAgICAgICAgbV9kZXN0cnVjdGlvblRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKLX0KLQotdm9pZCBTaGFyZWRTY3JpcHRDb250ZXh0Ojpsb2FkKGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYWxTY3JpcHQpCi17Ci0gICAgbV91
c2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAgc2NyaXB0KCktPmV2YWx1YXRlKFNjcmlwdFNvdXJj
ZUNvZGUoaW5pdGlhbFNjcmlwdCwgbV91cmwpKTsKLSAgICBtX2xvYWRlZCA9IHRydWU7Ci19Ci0K
LXZvaWQgU2hhcmVkU2NyaXB0Q29udGV4dDo6cG9zdFRhc2soUGFzc093blB0cjxUYXNrPiB0YXNr
KQotewotICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojpwb3N0VGFza1RvTWFpblRocmVhZCB0byBzaGFyZSBiZXR3ZWVuIERvY3VtZW50IGFuZCBT
aGFyZWRTY3JpcHRDb250ZXh0LgotICAgIFVOVVNFRF9QQVJBTSh0YXNrKTsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi1FdmVudFRhcmdldERhdGEqIFNoYXJlZFNjcmlwdENvbnRleHQ6OmV2
ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQot
RXZlbnRUYXJnZXREYXRhKiBTaGFyZWRTY3JpcHRDb250ZXh0OjplbnN1cmVFdmVudFRhcmdldERh
dGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIFNoYXJlZFNjcmlwdENvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdAotewotICAgIHJldHVybiBjb25zdF9jYXN0PFNoYXJlZFNjcmlwdENvbnRleHQqPih0
aGlzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNI
QVJFRF9TQ1JJUFQpCi0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvU2hhcmVkU2NyaXB0L1NoYXJlZFNj
cmlwdENvbnRleHQuaCBiL1dlYkNvcmUvU2hhcmVkU2NyaXB0L1NoYXJlZFNjcmlwdENvbnRleHQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjEwM2M1ZC4uMDAwMDAwMAotLS0gYS9X
ZWJDb3JlL1NoYXJlZFNjcmlwdC9TaGFyZWRTY3JpcHRDb250ZXh0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgU2hhcmVkU2NyaXB0Q29udGV4dF9oCi0jZGVmaW5lIFNo
YXJlZFNjcmlwdENvbnRleHRfaAotCi0jaWYgRU5BQkxFKFNIQVJFRF9TQ1JJUFQpCi0KLSNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVk
ZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOwotY2xhc3MgU3RyaW5nOwot
Ci1jbGFzcyBTaGFyZWRTY3JpcHRDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkU2Ny
aXB0Q29udGV4dD4sIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMgRXZlbnRU
YXJnZXQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFNjcmlwdENvbnRl
eHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTaGFyZWRTY3JpcHRDb250ZXh0KG5hbWUsIHVybCwgb3JpZ2luKSk7Ci0gICAgfQotCi0g
ICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAotICAgIHZpcnR1YWwgYm9vbCBpc1NoYXJlZFNj
cmlwdENvbnRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdCB7IHJldHVybiBtX3VzZXJBZ2VudDsgfQotCi0g
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZpcnR1YWwgdm9pZCByZXNv
dXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIHNjcmlw
dEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9p
ZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29u
dGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KLQotICAgIC8vIEpTIHdyYXBwZXIgYW5kIEV2
ZW50VGFyZ2V0IHN1cHBvcnQuCi0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTaGFyZWRTY3JpcHRD
b250ZXh0KiB0b1NoYXJlZFNjcmlwdENvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9Ci0gICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7Ci0KLSAgICAvLyBTaGFyZWRTY3Jp
cHRHbG9iYWxTY29wZQotICAgIFNoYXJlZFNjcmlwdENvbnRleHQqIHNlbGYoKSB7IHJldHVybiB0
aGlzOyB9Ci0KLSAgICAvLyBMaWZldGltZSAtIGtlZXAgdGhlIGxpc3Qgb2YgZG9jdW1lbnRzIHRo
YXQgYXJlIGNvbm5lY3RlZCwgZGVyZWYgd2hlbiB0aGUgbGFzdCBkaXNjb25uZWN0cy4KLSAgICB2
b2lkIGFkZFRvRG9jdW1lbnRzTGlzdChEb2N1bWVudCopOwotICAgIHZvaWQgcmVtb3ZlRnJvbURv
Y3VtZW50TGlzdChEb2N1bWVudCopOwotCi0gICAgU2hhcmVkU2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KLSAgICB2b2lkIGNsZWFyU2NyaXB0KCk7
Ci0KLSAgICBib29sIGxvYWRlZCgpIHsgcmV0dXJuIG1fbG9hZGVkOyB9Ci0gICAgdm9pZCBsb2Fk
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYWxTY3JpcHQpOwot
Ci0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBLVVJMJikgY29uc3Q7Ci0gICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWU7IH0KLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8U2hhcmVkU2NyaXB0Q29udGV4dD46
OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFNoYXJlZFNjcmlwdENvbnRleHQ+OjpkZXJlZjsK
LQotcHJvdGVjdGVkOgotICAgIFNoYXJlZFNjcmlwdENvbnRleHQoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOwotCi1wcml2YXRlOgot
ICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YSgpOwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdl
dERhdGEoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KLSAgICAKLSAg
ICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ci0gICAgdmlydHVhbCBjb25zdCBLVVJMJiB2aXJ0
dWFsVVJMKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBLVVJMIHZpcnR1YWxDb21wbGV0ZVVSTChjb25z
dCBTdHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgeyBkZXJlZigpOyB9Ci0gICAgICAgICAgICAKLSAgICB2b2lkIGRlc3RydWN0aW9u
VGltZXJGaXJlZChUaW1lcjxTaGFyZWRTY3JpcHRDb250ZXh0PiopOwotICAgICAgICAgICAgCi0g
ICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV91c2VyQWdlbnQ7Ci0gICAgS1VSTCBtX3Vy
bDsKLSAgICBPd25QdHI8U2hhcmVkU2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7Ci0gICAgSGFz
aFNldDxEb2N1bWVudCo+IG1fZG9jdW1lbnRMaXN0OwotICAgIFRpbWVyPFNoYXJlZFNjcmlwdENv
bnRleHQ+IG1fZGVzdHJ1Y3Rpb25UaW1lcjsKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRh
cmdldERhdGE7Ci0KLSAgICBib29sIG1fbG9hZGVkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9TQ1JJUFQpCi0KLSNlbmRpZiAvLyBTaGFy
ZWRTY3JpcHRDb250ZXh0X2gKLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9TaGFyZWRTY3JpcHQvU2hh
cmVkU2NyaXB0Q29udGV4dC5pZGwgYi9XZWJDb3JlL1NoYXJlZFNjcmlwdC9TaGFyZWRTY3JpcHRD
b250ZXh0LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODExZmZjYS4uMDAwMDAw
MAotLS0gYS9XZWJDb3JlL1NoYXJlZFNjcmlwdC9TaGFyZWRTY3JpcHRDb250ZXh0LmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgd2luZG93IHsKLQotICAgIGludGVyZmFj
ZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPVNIQVJFRF9TQ1JJUFQsCi0gICAgICAgIEN1c3RvbU1h
cmtGdW5jdGlvbiwKLSAgICAgICAgRXZlbnRUYXJnZXQsCi0gICAgICAgIEV4dGVuZHNET01HbG9i
YWxPYmplY3QsCi0gICAgICAgIElzV29ya2VyQ29udGV4dCwKLSAgICAgICAgR2VuZXJhdGVOYXRp
dmVDb252ZXJ0ZXIsCi0gICAgICAgIExlZ2FjeVBhcmVudD1KU1NoYXJlZFNjcmlwdENvbnRleHRC
YXNlLAotICAgICAgICBOb1N0YXRpY1RhYmxlcwotICAgIF0gU2hhcmVkU2NyaXB0Q29udGV4dCB7
Ci0KLSNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJ
UFQKLSAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gU2hhcmVkU2NyaXB0Q29udGV4dCBz
ZWxmOwotI2VuZGlmCi0KLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1l
OwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotCi0gICAgICAgIC8v
IEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlz
dGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29s
ZWFuIHVzZUNhcHR1cmUpOwotICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQg
ZXZ0KQotICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKLQotICAgIH07Ci0KLX0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvU2hhcmVkU2NyaXB0L1NoYXJlZFNjcmlwdENvbnRyb2xsZXIu
aCBiL1dlYkNvcmUvU2hhcmVkU2NyaXB0L1NoYXJlZFNjcmlwdENvbnRyb2xsZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzZTQ0NS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL1No
YXJlZFNjcmlwdC9TaGFyZWRTY3JpcHRDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBTaGFyZWRTY3JpcHRDb250cm9sbGVyX2gKLSNkZWZpbmUgU2hhcmVk
U2NyaXB0Q29udHJvbGxlcl9oCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1NDUklQVCkKLQotLy8gTm9u
LWZ1bmN0aW9uaW5nIFNjcmlwdENvbnRyb2xsZXIuIFdpbGwgYmUgaW1wbGVtZW50ZWQgd2l0aCBj
b3JyZXNwb25kaW5nIGJpbmRpbmdzIChzaW5jZSBpdCdzIEpTQy0gYW5kIFY4LWRlcGVuZGFudCku
Ci0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0gICAgY2xhc3MgU2hhcmVkU2NyaXB0Q29udGV4dDsKLSAgICBjbGFzcyBTY3JpcHRTb3VyY2VD
b2RlOwotCi0gICAgY2xhc3MgU2hhcmVkU2NyaXB0Q29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBTaGFyZWRTY3JpcHRDb250cm9sbGVyKFNoYXJl
ZFNjcmlwdENvbnRleHQqKSB7IH0KLSAgICAgICAgflNoYXJlZFNjcmlwdENvbnRyb2xsZXIoKSB7
IH0KLQotICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKSB7IH0K
LSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU0hB
UkVEX1NDUklQVCkKLQotI2VuZGlmIC8vIFNoYXJlZFNjcmlwdENvbnRyb2xsZXJfaApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9TaGFyZWRTY3JpcHQvV2ViS2l0U2hhcmVkU2NyaXB0LmNwcCBiL1dlYkNv
cmUvU2hhcmVkU2NyaXB0L1dlYktpdFNoYXJlZFNjcmlwdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFhYWY3MDYuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9TaGFyZWRTY3JpcHQv
V2ViS2l0U2hhcmVkU2NyaXB0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNIQVJFRF9TQ1JJUFQpCi0KLSNpbmNsdWRl
ICJXZWJLaXRTaGFyZWRTY3JpcHQuaCIKLQotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAi
RXZlbnRFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRTY3JpcHRDb250ZXh0
LmgiCi0jaW5jbHVkZSAiV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeS5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV2ViS2l0U2hhcmVk
U2NyaXB0OjpXZWJLaXRTaGFyZWRTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLXsKLSAgICBpZiAodXJs
LmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBkeW5hbWljIGdsb2Jh
bCBzY29wZSAoYnVnICMyNzg4NykuCi0gICAgS1VSTCBzY3JpcHRVUkwgPSBjb250ZXh0LT5jb21w
bGV0ZVVSTCh1cmwpOwotICAgIGlmICghc2NyaXB0VVJMLmlzVmFsaWQoKSkgewotICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNj
cmlwdFVSTCkuZ2V0KCkpKSB7Ci0gICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeTo6Y29ubmVj
dCh0aGlzLCBzY3JpcHRVUkwsIG5hbWUsIGVjKTsKLX0KLQotV2ViS2l0U2hhcmVkU2NyaXB0Ojp+
V2ViS2l0U2hhcmVkU2NyaXB0KCkKLXsKLX0KLQotdm9pZCBXZWJLaXRTaGFyZWRTY3JpcHQ6OnNl
dENvbnRleHQoUGFzc1JlZlB0cjxTaGFyZWRTY3JpcHRDb250ZXh0PiBjb250ZXh0KQoteyAKLSAg
ICBtX2lubmVyQ29udGV4dCA9IGNvbnRleHQ7Ci19Ci0KLWNsYXNzIExvYWRFdmVudFRhc2sgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8TG9hZEV2ZW50VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViS2l0U2hhcmVk
U2NyaXB0PiBzaGFyZWRTY3JpcHQsIFBhc3NSZWZQdHI8U2hhcmVkU2NyaXB0Q29udGV4dD4gaW5u
ZXJDb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBMb2FkRXZlbnRUYXNrKHNoYXJl
ZFNjcmlwdCwgaW5uZXJDb250ZXh0KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICAgICAgbV9z
aGFyZWRTY3JpcHQtPnNldENvbnRleHQobV9pbm5lckNvbnRleHQpOwotICAgICAgICBtX3NoYXJl
ZFNjcmlwdC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOwotCi0gICAgICAgIG1fc2hhcmVkU2NyaXB0LT51bnNldFBlbmRp
bmdBY3Rpdml0eShtX3NoYXJlZFNjcmlwdC5nZXQoKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IExvYWRFdmVudFRhc2soUGFzc1JlZlB0cjxXZWJLaXRTaGFyZWRTY3JpcHQ+IHNoYXJlZFNjcmlw
dCwgUGFzc1JlZlB0cjxTaGFyZWRTY3JpcHRDb250ZXh0PiBpbm5lckNvbnRleHQpCi0gICAgICAg
IDogbV9zaGFyZWRTY3JpcHQoc2hhcmVkU2NyaXB0KQotICAgICAgICAsIG1faW5uZXJDb250ZXh0
KGlubmVyQ29udGV4dCkKLSAgICB7Ci0gICAgICAgIC8vIEtlZXAgZXZlbnQgbGlzdGVuZXJzIGFs
aXZlLgotICAgICAgICBtX3NoYXJlZFNjcmlwdC0+c2V0UGVuZGluZ0FjdGl2aXR5KG1fc2hhcmVk
U2NyaXB0LmdldCgpKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViS2l0U2hhcmVkU2NyaXB0PiBt
X3NoYXJlZFNjcmlwdDsKLSAgICBSZWZQdHI8U2hhcmVkU2NyaXB0Q29udGV4dD4gbV9pbm5lckNv
bnRleHQ7Ci19OwotCi12b2lkIFdlYktpdFNoYXJlZFNjcmlwdDo6c2NoZWR1bGVMb2FkRXZlbnQo
UGFzc1JlZlB0cjxTaGFyZWRTY3JpcHRDb250ZXh0PiBpbm5lckNvbnRleHQpCi17Ci0gICAgQVNT
RVJUKCFtX2lubmVyQ29udGV4dCk7Ci0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0
VGFzayhMb2FkRXZlbnRUYXNrOjpjcmVhdGUodGhpcywgaW5uZXJDb250ZXh0KSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfU0NSSVBUKQot
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1NoYXJlZFNjcmlwdC9XZWJLaXRTaGFyZWRTY3JpcHQuaCBi
L1dlYkNvcmUvU2hhcmVkU2NyaXB0L1dlYktpdFNoYXJlZFNjcmlwdC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0ZDlkNDc2Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvU2hhcmVkU2Ny
aXB0L1dlYktpdFNoYXJlZFNjcmlwdC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgV2ViS2l0U2hhcmVkU2NyaXB0X2gKLSNkZWZpbmUgV2ViS2l0U2hhcmVkU2NyaXB0X2gK
LQotI2lmIEVOQUJMRShTSEFSRURfU0NSSVBUKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCi0jaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgotI2luY2x1ZGUgIkV2ZW50TGlzdGVu
ZXIuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIEtVUkw7Ci0gICAgY2xhc3MgU2hh
cmVkU2NyaXB0Q29udGV4dDsKLSAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi0g
ICAgY2xhc3MgV2ViS2l0U2hhcmVkU2NyaXB0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0U2hh
cmVkU2NyaXB0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdFNoYXJlZFNjcmlw
dD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdFNoYXJlZFNjcmlwdCh1cmwsIG5h
bWUsIGNvbnRleHQsIGVjKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB+V2ViS2l0U2hh
cmVkU2NyaXB0KCk7Ci0KLSAgICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJcwotICAgICAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQot
ICAgICAgICB2aXJ0dWFsIFdlYktpdFNoYXJlZFNjcmlwdCogdG9XZWJLaXRTaGFyZWRTY3JpcHQo
KSB7IHJldHVybiB0aGlzOyB9Ci0KLSAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihlcnJvcik7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobG9h
ZCk7Ci0KLSAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXRTaGFyZWRTY3JpcHQ+OjpyZWY7
Ci0gICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViS2l0U2hhcmVkU2NyaXB0Pjo6ZGVyZWY7Ci0K
LSAgICAgICAgU2hhcmVkU2NyaXB0Q29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5uZXJDb250ZXh0LmdldCgpOyB9Ci0gICAgICAgIHZvaWQgc2V0Q29udGV4dChQYXNzUmVmUHRy
PFNoYXJlZFNjcmlwdENvbnRleHQ+IGNvbnRleHQpOwotCi0gICAgICAgIC8vIFdoZW4gZmlyZWQs
IHRoaXMgd2lsbCBzZXQgdGhlIGlubmVyQ29udGV4dCBpbnRvIHRoaXMgV2ViS2l0U2hhcmVkU2Ny
aXB0IGFuZCBkaXNwYXRjaCAnbG9hZCcgZXZlbnQuCi0gICAgICAgIHZvaWQgc2NoZWR1bGVMb2Fk
RXZlbnQoUGFzc1JlZlB0cjxTaGFyZWRTY3JpcHRDb250ZXh0PiBpbm5lckNvbnRleHQpOwotCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgV2ViS2l0U2hhcmVkU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlJik7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQot
ICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1
cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRh
KiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0K
LQotICAgICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRTY3JpcHRDb250ZXh0PiBtX2lubmVyQ29udGV4dDsKLSAgICB9OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1NDUklQVCkKLQot
I2VuZGlmIC8vIFdlYktpdFNoYXJlZFNjcmlwdF9oCi0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvU2hh
cmVkU2NyaXB0L1dlYktpdFNoYXJlZFNjcmlwdC5pZGwgYi9XZWJDb3JlL1NoYXJlZFNjcmlwdC9X
ZWJLaXRTaGFyZWRTY3JpcHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTM0
NTA4Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvU2hhcmVkU2NyaXB0L1dlYktpdFNoYXJlZFNjcmlw
dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHdpbmRvdyB7Ci0KLSAg
ICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1TSEFSRURfU0NSSVBULAotICAgICAg
ICBFdmVudFRhcmdldCwKLSAgICAgICAgR2VuZXJhdGVUb0pTCi0gICAgXSBXZWJLaXRTaGFyZWRT
Y3JpcHQgewotCi0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7Ci0gICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubG9hZDsKLQotICAgICAgICAvLyBFdmVudFRh
cmdldCBpbnRlcmZhY2UKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKGlu
IERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1
cmUpOwotICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQotICAgICAg
ICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKLQotICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgU2hhcmVkU2NyaXB0Q29udGV4dCBjb250ZXh0OwotICAgIH07Ci19CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1NoYXJlZFNjcmlwdC9XZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5LmNwcCBiL1dl
YkNvcmUvU2hhcmVkU2NyaXB0L1dlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjMzMjE4Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUv
U2hhcmVkU2NyaXB0L1dlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU0hB
UkVEX1NDUklQVCkKLQotI2luY2x1ZGUgIldlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuaCIK
LQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hh
cmVkU2NyaXB0Q29udGV4dC5oIgotI2luY2x1ZGUgIldlYktpdFNoYXJlZFNjcmlwdC5oIgotI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRl
ckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEhlbHBlciBjbGFzcyB0byBs
b2FkIHRoZSBpbml0aWFsIHNjcmlwdCBvbiBiZWhhbGYgb2YgYSBTaGFyZWRTY3JpcHQuCi1jbGFz
cyBTaGFyZWRTY3JpcHRMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRTY3JpcHRMb2Fk
ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwcml2YXRlIFdvcmtlclNjcmlwdExvYWRlckNs
aWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkU2NyaXB0TG9hZGVy
PiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJLaXRTaGFyZWRTY3JpcHQ+IHNoYXJlZFNjcmlwdCwgUGFz
c1JlZlB0cjxTaGFyZWRTY3JpcHRDb250ZXh0PiBpbm5lckNvbnRleHQpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZFNjcmlwdExvYWRlcihzaGFyZWRTY3JpcHQsIGlu
bmVyQ29udGV4dCkpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZChjb25zdCBLVVJMJik7Ci0KLXBy
aXZhdGU6Ci0gICAgU2hhcmVkU2NyaXB0TG9hZGVyKFBhc3NSZWZQdHI8V2ViS2l0U2hhcmVkU2Ny
aXB0PiwgUGFzc1JlZlB0cjxTaGFyZWRTY3JpcHRDb250ZXh0Pik7Ci0gICAgLy8gV29ya2VyU2Ny
aXB0TG9hZGVyQ2xpZW50IGNhbGxiYWNrCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVk
KCk7Ci0KLSAgICBSZWZQdHI8V2ViS2l0U2hhcmVkU2NyaXB0PiBtX3NoYXJlZFNjcmlwdDsKLSAg
ICBSZWZQdHI8U2hhcmVkU2NyaXB0Q29udGV4dD4gbV9pbm5lckNvbnRleHQ7Ci0gICAgT3duUHRy
PFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRMb2FkZXI7Ci19OwotCi1TaGFyZWRTY3JpcHRM
b2FkZXI6OlNoYXJlZFNjcmlwdExvYWRlcihQYXNzUmVmUHRyPFdlYktpdFNoYXJlZFNjcmlwdD4g
c2hhcmVkU2NyaXB0LCBQYXNzUmVmUHRyPFNoYXJlZFNjcmlwdENvbnRleHQ+IGlubmVyQ29udGV4
dCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChzaGFyZWRTY3JpcHQtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgdGhpcykKLSAgICAsIG1fc2hhcmVkU2NyaXB0KHNoYXJlZFNjcmlwdCkKLSAgICAs
IG1faW5uZXJDb250ZXh0KGlubmVyQ29udGV4dCkKLXsKLX0KLQotdm9pZCBTaGFyZWRTY3JpcHRM
b2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQotewotICAgIC8vIE1hcmsgdGhpcyBvYmplY3Qg
YXMgYWN0aXZlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGxvYWQuCi0gICAgQVNTRVJUKCFoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSk7Ci0gICAgbV9zY3JpcHRMb2FkZXIgPSBuZXcgV29ya2VyU2NyaXB0
TG9hZGVyKCk7Ci0gICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHVybCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHRoaXMpOwot
Ci0gICAgLy8gU3RheSBhbGl2ZSB1bnRpbCB0aGUgbG9hZCBmaW5pc2hlcy4KLSAgICBzZXRQZW5k
aW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgbV9zaGFyZWRTY3JpcHQtPnNldFBlbmRpbmdBY3Rpdml0
eShtX3NoYXJlZFNjcmlwdC5nZXQoKSk7Ci19Ci0KLXZvaWQgU2hhcmVkU2NyaXB0TG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCgpCi17Ci0gICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkKLSAg
ICAgICAgbV9zaGFyZWRTY3JpcHQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIHRydWUpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8g
SWYgYW5vdGhlciBsb2FkZXIgaGFzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgdGhlIFNoYXJlZFNjcmlw
dENvbnRleHQsIGRvIHNvLgotICAgICAgICBpZiAoIW1faW5uZXJDb250ZXh0LT5sb2FkZWQoKSkK
LSAgICAgICAgICAgIG1faW5uZXJDb250ZXh0LT5sb2FkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+dXNlckFnZW50KG1fc2NyaXB0TG9hZGVyLT51cmwoKSksIG1fc2NyaXB0TG9hZGVyLT5zY3Jp
cHQoKSk7Ci0gICAgCi0gICAgICAgIG1fc2hhcmVkU2NyaXB0LT5zY2hlZHVsZUxvYWRFdmVudCht
X2lubmVyQ29udGV4dCk7Ci0gICAgfQotCi0gICAgbV9zaGFyZWRTY3JpcHQtPnVuc2V0UGVuZGlu
Z0FjdGl2aXR5KG1fc2hhcmVkU2NyaXB0LmdldCgpKTsKLSAgICB1bnNldFBlbmRpbmdBY3Rpdml0
eSh0aGlzKTsgLy8gVGhpcyBmcmVlcyB0aGlzIG9iamVjdCBzbyBpdCBtdXN0IGJlIHRoZSBsYXN0
IGFjdGlvbiBpbiB0aGlzIGZ1bmN0aW9uLgotfQotCi1XZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0
b3J5JiBXZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5OjppbnN0YW5jZSgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChXZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5LCBpbnN0YW5jZSwg
KCkpOwotICAgIHJldHVybiBpbnN0YW5jZTsKLX0KLQotdm9pZCBXZWJLaXRTaGFyZWRTY3JpcHRS
ZXBvc2l0b3J5Ojpjb25uZWN0KFBhc3NSZWZQdHI8V2ViS2l0U2hhcmVkU2NyaXB0PiBzaGFyZWRT
Y3JpcHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKLXsKLSAgICBpbnN0YW5jZSgpLmNvbm5lY3RUb1NoYXJlZFNjcmlwdChzaGFyZWRTY3Jp
cHQsIHVybCwgbmFtZSwgZWMpOwotfQotCi12b2lkIFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRv
cnk6OmRvY3VtZW50RGV0YWNoZWQoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIFdlYktpdFNo
YXJlZFNjcmlwdFJlcG9zaXRvcnkmIHJlcG9zaXRvcnkgPSBpbnN0YW5jZSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCByZXBvc2l0b3J5Lm1fc2hhcmVkU2NyaXB0Q29udGV4dHMuc2l6
ZSgpOyBpKyspCi0gICAgICAgIHJlcG9zaXRvcnkubV9zaGFyZWRTY3JpcHRDb250ZXh0c1tpXS0+
cmVtb3ZlRnJvbURvY3VtZW50TGlzdChkb2N1bWVudCk7Ci19Ci0KLXZvaWQgV2ViS2l0U2hhcmVk
U2NyaXB0UmVwb3NpdG9yeTo6cmVtb3ZlU2hhcmVkU2NyaXB0Q29udGV4dChTaGFyZWRTY3JpcHRD
b250ZXh0KiBjb250ZXh0KQotewotICAgIFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkmIHJl
cG9zaXRvcnkgPSBpbnN0YW5jZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXBv
c2l0b3J5Lm1fc2hhcmVkU2NyaXB0Q29udGV4dHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYg
KGNvbnRleHQgPT0gcmVwb3NpdG9yeS5tX3NoYXJlZFNjcmlwdENvbnRleHRzW2ldKSB7Ci0gICAg
ICAgICAgICByZXBvc2l0b3J5Lm1fc2hhcmVkU2NyaXB0Q29udGV4dHMucmVtb3ZlKGkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFdlYktpdFNoYXJl
ZFNjcmlwdFJlcG9zaXRvcnk6OmNvbm5lY3RUb1NoYXJlZFNjcmlwdChQYXNzUmVmUHRyPFdlYktp
dFNoYXJlZFNjcmlwdD4gc2hhcmVkU2NyaXB0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHNoYXJlZFNjcmlwdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpLmdldCgpKSk7Ci0gICAgUmVmUHRyPFNoYXJlZFNjcmlw
dENvbnRleHQ+IGlubmVyQ29udGV4dCA9IGdldFNoYXJlZFNjcmlwdENvbnRleHQobmFtZSwgdXJs
KTsKLQotICAgIGlmIChpbm5lckNvbnRleHQtPnVybCgpICE9IHVybCkgewotICAgICAgICAvLyBT
aGFyZWRTY3JpcHQgd2l0aCBzYW1lIG5hbWUgYnV0IGRpZmZlcmVudCBVUkwgYWxyZWFkeSBleGlz
dHMgLSByZXR1cm4gYW4gZXJyb3IuCi0gICAgICAgIGVjID0gVVJMX01JU01BVENIX0VSUjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChzaGFyZWRTY3JpcHQtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAgICBpbm5lckNvbnRleHQtPmFkZFRv
RG9jdW1lbnRzTGlzdChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNoYXJlZFNjcmlwdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSk7Ci0KLSAgICAvLyBJZiBTaGFyZWRTY3JpcHRDb250ZXh0IGlz
IGFscmVhZHkgcnVubmluZywganVzdCBzY2hlZHVsZSBhIGxvYWQgZXZlbnQgLSBvdGhlcndpc2Us
IGtpY2sgb2ZmIGEgbG9hZGVyIHRvIGxvYWQgdGhlIHNjcmlwdC4KLSAgICBpZiAoaW5uZXJDb250
ZXh0LT5sb2FkZWQoKSkKLSAgICAgICAgc2hhcmVkU2NyaXB0LT5zY2hlZHVsZUxvYWRFdmVudChp
bm5lckNvbnRleHQpOwotICAgIGVsc2UgewotICAgICAgICBSZWZQdHI8U2hhcmVkU2NyaXB0TG9h
ZGVyPiBsb2FkZXIgPSBTaGFyZWRTY3JpcHRMb2FkZXI6OmNyZWF0ZShzaGFyZWRTY3JpcHQsIGlu
bmVyQ29udGV4dC5yZWxlYXNlKCkpOwotICAgICAgICBsb2FkZXItPmxvYWQodXJsKTsgLy8gUGVu
ZGluZyBhY3Rpdml0eSB3aWxsIGtlZXAgdGhlIGxvYWRlciBhbGl2ZS4KLSAgICB9Ci19Ci0KLS8v
IENyZWF0ZXMgYSBuZXcgU2hhcmVkU2NyaXB0Q29udGV4dCBvciByZXR1cm5zIGFuIGV4aXN0aW5n
IG9uZSBmcm9tIHRoZSByZXBvc2l0b3J5LgotUGFzc1JlZlB0cjxTaGFyZWRTY3JpcHRDb250ZXh0
PiBXZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5OjpnZXRTaGFyZWRTY3JpcHRDb250ZXh0KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsKQotewotICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NoYXJlZFNjcmlwdENvbnRleHRzLnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIGlmIChtX3NoYXJlZFNjcmlwdENvbnRleHRzW2ldLT5tYXRjaGVzKG5hbWUsICpv
cmlnaW4sIHVybCkpCi0gICAgICAgICAgICByZXR1cm4gbV9zaGFyZWRTY3JpcHRDb250ZXh0c1tp
XTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8U2hhcmVkU2NyaXB0Q29udGV4dD4gc2hhcmVkU2NyaXB0
Q29udGV4dCA9IFNoYXJlZFNjcmlwdENvbnRleHQ6OmNyZWF0ZShuYW1lLCB1cmwsIG9yaWdpbi5y
ZWxlYXNlKCkpOwotICAgIG1fc2hhcmVkU2NyaXB0Q29udGV4dHMuYXBwZW5kKHNoYXJlZFNjcmlw
dENvbnRleHQuZ2V0KCkpOwotICAgIHJldHVybiBzaGFyZWRTY3JpcHRDb250ZXh0LnJlbGVhc2Uo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJF
RF9TQ1JJUFQpCi0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvU2hhcmVkU2NyaXB0L1dlYktpdFNoYXJl
ZFNjcmlwdFJlcG9zaXRvcnkuaCBiL1dlYkNvcmUvU2hhcmVkU2NyaXB0L1dlYktpdFNoYXJlZFNj
cmlwdFJlcG9zaXRvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdjNjBkMC4u
MDAwMDAwMAotLS0gYS9XZWJDb3JlL1NoYXJlZFNjcmlwdC9XZWJLaXRTaGFyZWRTY3JpcHRSZXBv
c2l0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJLaXRTaGFy
ZWRTY3JpcHRSZXBvc2l0b3J5X2gKLSNkZWZpbmUgV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9y
eV9oCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1NDUklQVCkKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VS
TDsKLWNsYXNzIFNoYXJlZFNjcmlwdENvbnRleHQ7Ci1jbGFzcyBTdHJpbmc7Ci1jbGFzcyBXZWJL
aXRTaGFyZWRTY3JpcHQ7Ci0KLS8vIEludGVyZmFjZSB0byBhIHJlcG9zaXRvcnkgd2hpY2ggbWFu
YWdlcyByZWZlcmVuY2VzIHRvIHRoZSBzZXQgb2YgYWN0aXZlIFNoYXJlZFNjcmlwdENvbnRleHRz
LgotY2xhc3MgV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeSB7Ci1wdWJsaWM6Ci0gICAgLy8g
Q29ubmVjdHMgdGhlIHBhc3NlZCBXZWJLaXRTaGFyZWRTY3JpcHQgb2JqZWN0IHdpdGggYSBTaGFy
ZWRTY3JpcHRDb250ZXh0LCBjcmVhdGluZyBhIG5ldyBvbmUgaWYgbmVjZXNzYXJ5LgotICAgIHN0
YXRpYyB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxXZWJLaXRTaGFyZWRTY3JpcHQ+LCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICBzdGF0aWMg
dm9pZCByZW1vdmVTaGFyZWRTY3JpcHRDb250ZXh0KFNoYXJlZFNjcmlwdENvbnRleHQqKTsKLSAg
ICBzdGF0aWMgdm9pZCBkb2N1bWVudERldGFjaGVkKERvY3VtZW50Kik7Ci0KLXByaXZhdGU6Ci0g
ICAgV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeSgpIHsgfQotICAgIHN0YXRpYyBXZWJLaXRT
aGFyZWRTY3JpcHRSZXBvc2l0b3J5JiBpbnN0YW5jZSgpOwotICAgIHZvaWQgY29ubmVjdFRvU2hh
cmVkU2NyaXB0KFBhc3NSZWZQdHI8V2ViS2l0U2hhcmVkU2NyaXB0PiwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8U2hhcmVk
U2NyaXB0Q29udGV4dD4gZ2V0U2hhcmVkU2NyaXB0Q29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IEtVUkwmKTsKLQotICAgIC8vIExpc3Qgb2YgU2hhcmVkU2NyaXB0Q29udGV4dHMuCi0g
ICAgLy8gRXhwZWN0YXRpb24gaXMgdGhhdCB0aGVyZSB3aWxsIGJlIGEgbGltaXRlZCBudW1iZXIg
b2YgU2hhcmVkU2NyaXB0Q29udGV4dHMsIGFuZCBzbyB0cmFja2luZyB0aGVtIGluIGEgVmVjdG9y
IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gbmVzdGVkIEhhc2hNYXBzLgotICAgIHR5cGVkZWYgVmVj
dG9yPFNoYXJlZFNjcmlwdENvbnRleHQqPiBTaGFyZWRTY3JpcHRDb250ZXh0TGlzdDsKLSAgICBT
aGFyZWRTY3JpcHRDb250ZXh0TGlzdCBtX3NoYXJlZFNjcmlwdENvbnRleHRzOwotCi19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1NDUklQVCkK
LQotI2VuZGlmIC8vIFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnlfaAotCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhYTUzYTg1Li5mM2NjNzdiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQxODMyLDM4ICs0MTgzMiw2IEBACiAJCQk8
L0ZpbHRlcj4NCiAJCTwvRmlsdGVyPg0KIAkJPEZpbHRlcg0KLQkJCU5hbWU9IlNoYXJlZFNjcmlw
dCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRTY3JpcHRc
U2hhcmVkU2NyaXB0Q29udGV4dC5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUN
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRTY3JpcHRcU2hhcmVkU2NyaXB0Q29udGV4dC5o
Ig0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
U2hhcmVkU2NyaXB0XFNoYXJlZFNjcmlwdENvbnRyb2xsZXIuaCINCi0JCQkJPg0KLQkJCTwvRmls
ZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFNjcmlwdFxXZWJLaXRT
aGFyZWRTY3JpcHQuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkU2NyaXB0XFdlYktpdFNoYXJlZFNjcmlwdC5oIg0KLQkJCQk+
DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkU2Ny
aXB0XFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxl
Pg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkU2NyaXB0XFdlYktpdFNo
YXJlZFNjcmlwdFJlcG9zaXRvcnkuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVy
Pg0KLQkJPEZpbHRlcg0KIAkJCU5hbWU9InN0b3JhZ2UiDQogCQkJPg0KIAkJCTxGaWxlDQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNmYwNzcyLi4zNGU2
OTY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQy
LDEyICsyNDIsNiBAQAogCQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODVCQ0Yy
NzBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi87IH07CiAJCTE4ODYwNEIzMEYy
RTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxODg2MDRCMTBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIu
Y3BwICovOyB9OwogCQkxODg2MDRCNDBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4ODYwNEIyMEYyRTY1
NEEwMDBCNjQ0MyAvKiBET01UaW1lci5oICovOyB9OwotCQkxOEM1RkNBNTEwQTM5OTFGMDA0ODQz
OEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE4QzVGQ0EwMTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFy
ZWRTY3JpcHQuY3BwICovOyB9OwotCQkxOEM1RkNBNjEwQTM5OTFGMDA0ODQzOEQgLyogV2ViS2l0
U2hhcmVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxOEM1RkNBMTEwQTM5OTFGMDA0ODQzOEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0LmggKi87
IH07Ci0JCTE4QzVGQ0E4MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRTY3JpcHRSZXBv
c2l0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE4QzVGQ0EzMTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5
LmNwcCAqLzsgfTsKLQkJMThDNUZDQTkxMEEzOTkxRjAwNDg0MzhEIC8qIFdlYktpdFNoYXJlZFNj
cmlwdFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE4QzVGQ0E0MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRTY3JpcHRSZXBv
c2l0b3J5LmggKi87IH07Ci0JCTE4QzVGQ0I3MTBBM0M2RjIwMDQ4NDM4RCAvKiBTaGFyZWRTY3Jp
cHRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE4QzVGQ0I0MTBBM0M2RjIwMDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHRDb250ZXh0LmNwcCAq
LzsgfTsKLQkJMThDNUZDQjgxMEEzQzZGMjAwNDg0MzhEIC8qIFNoYXJlZFNjcmlwdENvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4QzVGQ0I1
MTBBM0M2RjIwMDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHRDb250ZXh0LmggKi87IH07CiAJCTE4Rjgz
MUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThGODMxQjcwRkQ0OEM3ODAwRDhDNTZC
IC8qIFdvcmtlckxvYWRlclByb3h5LmggKi87IH07CiAJCTFBMEQ1NzM2MEE1Qzc3RkUwMDdFREQ0
QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMEQ1NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNw
cCAqLzsgfTsKIAkJMUEwRDU3MzcwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1NzM1MEE1
Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggKi87IH07CkBAIC01NDQ2LDE0ICs1NDQw
LDYgQEAKIAkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRUaW1lcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTg4NjA0QjEwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRpbWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTg4NjA0QjIwRjJFNjU0QTAwMEI2NDQzIC8qIERP
TVRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRpbWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE4QzVGQ0EwMTBBMzk5MUYwMDQ4NDM4RCAvKiBX
ZWJLaXRTaGFyZWRTY3JpcHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViS2l0U2hhcmVkU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MThDNUZDQTExMEEzOTkxRjAwNDg0MzhEIC8qIFdlYktpdFNoYXJlZFNjcmlwdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRTaGFyZWRTY3JpcHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMThDNUZDQTIxMEEzOTkxRjAwNDg0MzhEIC8qIFdlYktpdFNo
YXJlZFNjcmlwdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0U2hhcmVkU2NyaXB0
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMThDNUZDQTMxMEEzOTkxRjAwNDg0
MzhEIC8qIFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE4QzVGQ0E0MTBBMzk5MUYwMDQ4NDM4RCAvKiBX
ZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMThDNUZDQjQxMEEzQzZGMjAwNDg0MzhEIC8qIFNoYXJlZFNjcmlwdENvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkU2NyaXB0
Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE4QzVGQ0I1MTBBM0M2
RjIwMDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFNjcmlwdENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMThDNUZDQjYxMEEzQzZGMjAwNDg0MzhEIC8qIFNoYXJlZFNjcmlwdENvbnRleHQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYXJlZFNjcmlwdENvbnRleHQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxOEY4MzFCNzBGRDQ4Qzc4MDBEOEM1NkIgLyogV29y
a2VyTG9hZGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29ya2Vy
TG9hZGVyUHJveHkuaDsgcGF0aCA9IHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwRDU3MzQwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJm
bG93RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE92ZXJm
bG93RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTBENTczNTBBNUM3
N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gT3ZlcmZsb3dFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAwOTQsNyArMTAwODAsNiBAQAogCQkJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0
Zm9ybSAqLywKIAkJCQk1RENGODM2OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lucyAqLywKIAkJ
CQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovLAotCQkJCTE4QzVGQzlG
MTBBMzk5MUYwMDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHQgKi8sCiAJCQkJMUFFODJFQzkwQ0FBRTE3
NzAwMjIzN0FFIC8qIHN0b3JhZ2UgKi8sCiAJCQkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8q
IHN2ZyAqLywKIAkJCQk1MThBMzRCRDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLywK
QEAgLTEwMTk2LDIxICsxMDE4MSw2IEBACiAJCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZTsKIAkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CiAJCX07Ci0JCTE4QzVGQzlG
MTBBMzk5MUYwMDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTE4QzVGQ0I0MTBBM0M2RjIwMDQ4NDM4RCAvKiBTaGFy
ZWRTY3JpcHRDb250ZXh0LmNwcCAqLywKLQkJCQkxOEM1RkNCNTEwQTNDNkYyMDA0ODQzOEQgLyog
U2hhcmVkU2NyaXB0Q29udGV4dC5oICovLAotCQkJCTE4QzVGQ0I2MTBBM0M2RjIwMDQ4NDM4RCAv
KiBTaGFyZWRTY3JpcHRDb250ZXh0LmlkbCAqLywKLQkJCQkxOEM1RkNBMDEwQTM5OTFGMDA0ODQz
OEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0LmNwcCAqLywKLQkJCQkxOEM1RkNBMTEwQTM5OTFGMDA0
ODQzOEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0LmggKi8sCi0JCQkJMThDNUZDQTIxMEEzOTkxRjAw
NDg0MzhEIC8qIFdlYktpdFNoYXJlZFNjcmlwdC5pZGwgKi8sCi0JCQkJMThDNUZDQTMxMEEzOTkx
RjAwNDg0MzhEIC8qIFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuY3BwICovLAotCQkJCTE4
QzVGQ0E0MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5Lmgg
Ki8sCi0JCQkpOwotCQkJcGF0aCA9IFNoYXJlZFNjcmlwdDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7Ci0JCX07CiAJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTgxOTcsOSArMTgxNjcsNiBA
QAogCQkJCTE0NzlGQUYwMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjIxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlSdW4u
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzlGQUY0MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJS
dWJ5VGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMThDNUZDQTYxMEEzOTkxRjAwNDg0MzhEIC8q
IFdlYktpdFNoYXJlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMThDNUZDQTkxMEEzOTkx
RjAwNDg0MzhEIC8qIFdlYktpdFNoYXJlZFNjcmlwdFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICov
LAotCQkJCTE4QzVGQ0I4MTBBM0M2RjIwMDQ4NDM4RCAvKiBTaGFyZWRTY3JpcHRDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTI0NzQ4NDEwQUExNjFEMDBCNzk0OTMgLyogQXV0aGVudGlj
YXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODJERjU4MTBBOEQ1QzkwMDkyNTY1
MiAvKiBDb2xvclNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhFMDAw
QzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMjAzNDksOSArMjAz
MTYsNiBAQAogCQkJCTE0NzlGQUVGMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDc5RkFGMTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVy
UnVieVJ1bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDc5RkFGMzEwOUFFMzc1MDBERUQ2NTUg
LyogUmVuZGVyUnVieVRleHQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMThDNUZDQTUxMEEzOTkx
RjAwNDg0MzhEIC8qIFdlYktpdFNoYXJlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkx
OEM1RkNBODEwQTM5OTFGMDA0ODQzOEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkxOEM1RkNCNzEwQTNDNkYyMDA0ODQzOEQgLyogU2hhcmVk
U2NyaXB0Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUI0Q0QyNTEwQjMyMkUyMDBC
RkZEN0UgLyogQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTQ3
RTY2MDEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdBMEU3NkQ1MTBCRjA1MDcwMEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3MjNjNmRjLi4yN2FhNGQ1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0xNDMsMTAgKzE0Myw2IEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU0hBUkVEX1NDUklQVCkKLSNpbmNsdWRlICJX
ZWJLaXRTaGFyZWRTY3JpcHRSZXBvc2l0b3J5LmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShET01f
U1RPUkFHRSkKICNpbmNsdWRlICJTdG9yYWdlRXZlbnQuaCIKICNlbmRpZgpAQCAtMTQ0NiwxMCAr
MTQ0Miw2IEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAgICAgU2hhcmVkV29ya2VyUmVwb3Np
dG9yeTo6ZG9jdW1lbnREZXRhY2hlZCh0aGlzKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNIQVJF
RF9TQ1JJUFQpCi0gICAgV2ViS2l0U2hhcmVkU2NyaXB0UmVwb3NpdG9yeTo6ZG9jdW1lbnREZXRh
Y2hlZCh0aGlzKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fZnJhbWUpIHsKICAgICAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwogICAgICAgICBpZiAodmlldykKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmNwcAppbmRleCA4ZWUxZjUyLi42NWQ3NTFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0xNTYsMTgg
KzE1Niw2IEBAIE5vdGlmaWNhdGlvbiogRXZlbnRUYXJnZXQ6OnRvTm90aWZpY2F0aW9uKCkKIH0K
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFNIQVJFRF9TQ1JJUFQpCi1XZWJLaXRTaGFyZWRTY3JpcHQq
IEV2ZW50VGFyZ2V0Ojp0b1dlYktpdFNoYXJlZFNjcmlwdCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVNoYXJlZFNjcmlwdENvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b1NoYXJlZFNjcmlwdENvbnRl
eHQoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KIGJvb2wgRXZlbnRUYXJnZXQ6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBFdmVudFRh
cmdldERhdGEqIGQgPSBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGQw
YzFiNjcuLjJkNzdjODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysr
IGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTksMTEgKzU5LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogICAgIGNsYXNzIFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkOwogCi0jaWYgRU5BQkxFKFNIQVJFRF9TQ1JJUFQpCi0gICAgY2xhc3MgU2hh
cmVkU2NyaXB0Q29udGV4dDsKLSAgICBjbGFzcyBXZWJLaXRTaGFyZWRTY3JpcHQ7Ci0jZW5kaWYK
LQogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKICAgICBzdHJ1Y3QgRmlyaW5nRXZl
bnRJdGVyYXRvciB7CkBAIC0xMjMsMTEgKzExOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShTSEFSRURfU0NSSVBUKQotICAgICAgICB2aXJ0dWFsIFdlYktpdFNoYXJlZFNj
cmlwdCogdG9XZWJLaXRTaGFyZWRTY3JpcHQoKTsKLSAgICAgICAgdmlydHVhbCBTaGFyZWRTY3Jp
cHRDb250ZXh0KiB0b1NoYXJlZFNjcmlwdENvbnRleHQoKTsKLSNlbmRpZgotCiAgICAgICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0ID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBjOWQ0ZWY3
Li5jZjMzMmMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC01OCw5ICs1
OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dv
cmtlckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2lmIEVOQUJMRShTSEFSRURf
U0NSSVBUKQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRTY3JpcHRDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSNlbmRpZgogCiAgICAgICAgIGNvbnN0IEtVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxVUkwoKTsgfQogICAgICAgICBLVVJMIGNvbXBsZXRlVVJM
KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsQ29tcGxldGVVUkwodXJs
KTsgfQo=
</data>
<flag name="review"
          id="26286"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="26287"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>