<?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>129284</bug_id>
          
          <creation_ts>2014-02-24 19:04:36 -0800</creation_ts>
          <short_desc>[Cocoa] Start adding API for customizing actions on activated elements</short_desc>
          <delta_ts>2014-02-24 19:54:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>enrica</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>984154</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-24 19:04:36 -0800</bug_when>
    <thetext>[Cocoa] Start adding API for customizing actions on activated elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984155</commentid>
    <comment_count>1</comment_count>
      <attachid>225112</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-24 19:10:31 -0800</bug_when>
    <thetext>Created attachment 225112
Add WKActivatedElementInfo and WKElementAction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984162</commentid>
    <comment_count>2</comment_count>
      <attachid>225115</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-24 19:45:26 -0800</bug_when>
    <thetext>Created attachment 225115
Add _WKActivatedElementInfo and _WKElementAction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984166</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-24 19:54:57 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r164626&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225112</attachid>
            <date>2014-02-24 19:10:31 -0800</date>
            <delta_ts>2014-02-24 19:18:32 -0800</delta_ts>
            <desc>Add WKActivatedElementInfo and WKElementAction</desc>
            <filename>bug-129284-20140224191031.patch</filename>
            <type>text/plain</type>
            <size>41044</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDYyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE0LTAyLTI0ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdGFydCBhZGRpbmcg
QVBJIGZvciBjdXN0b21pemluZyBhY3Rpb25zIG9uIGFjdGl2YXRlZCBlbGVtZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5Mjg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaDogQWRkZWQuIEluY2x1ZGVzIHRoZSBwdWJs
aWMgaW50ZXJmYWNlIG9mIHdoYXQKKyAgICAgICAgd2FzIFdLRWxlbWVudEFjdGlvbkluZm8uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm06IEFk
ZGVkLgorICAgICAgICAoLVtXS0FjdGl2YXRlZEVsZW1lbnRJbmZvIF9pbml0V2l0aFVSTDpsb2Nh
dGlvbjp0aXRsZTpyZWN0Ol0pOiBNb3ZlZCBhbmQgcmVuYW1lZCBpbnRlcm5hbAorICAgICAgICBp
bml0aWFsaXplciBmcm9tIFdLRWxlbWVudEFjdGlvbkluZm8uCisgICAgICAgICgtW1dLQWN0aXZh
dGVkRWxlbWVudEluZm8gZGVhbGxvY10pOiBNb3ZlZCBmcm9tIFdLRWxlbWVudEFjdGlvbkluZm8u
CisgICAgICAgICgtW1dLQWN0aXZhdGVkRWxlbWVudEluZm8gX2JvdW5kaW5nUmVjdF0pOiBBZGRl
ZCBwcml2YXRlIGFjY2Vzc29yLgorICAgICAgICAoLVtXS0FjdGl2YXRlZEVsZW1lbnRJbmZvIF9p
bnRlcmFjdGlvbkxvY2F0aW9uXSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmg6IEFkZGVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0VsZW1lbnRBY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChX
S0VsZW1lbnRBY3Rpb25UeXBlKTogTW92ZWQgZnJvbSBXS0FjdGlvblNoZWV0LmggYW5kIHR1cm5l
ZCBpbnRvIGEgcHJvcGVyIE5TX0VOVU0uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0VsZW1lbnRBY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtXS0VsZW1lbnRBY3Rpb24gX2lu
aXRXaXRoVGl0bGU6YWN0aW9uSGFuZGxlcjp0eXBlOl0pOiBNb3ZlZCBhbmQgcmVuYW1lZCBpbnRl
cm5hbAorICAgICAgICBpbml0aWFsaXplciBmcm9tIFdLQWN0aW9uU2hlZXQubW0uCisgICAgICAg
ICgtW1dLRWxlbWVudEFjdGlvbiBkZWFsbG9jXSk6IE1vdmVkIGZyb20gV0tBY3Rpb25TaGVldC5t
bS4KKyAgICAgICAgKCtbV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6YWN0
aW9uSGFuZGxlcjpdKTogTW92ZWQgYW5kIHJlbmFtZWQuCisgICAgICAgIChjb3B5RWxlbWVudCk6
IE1vdmVkIGZyb20gV0tBY3Rpb25TaGVldC5tbS4KKyAgICAgICAgKHNhdmVJbWFnZSk6IERpdHRv
LgorICAgICAgICAoYWRkVG9SZWFkaW5nTGlzdCk6IERpdHRvLgorICAgICAgICAoK1tXS0VsZW1l
bnRBY3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOmN1c3RvbVRpdGxlOl0pOiBNb3ZlZCBhbmQg
cmVuYW1lZC4KKyAgICAgICAgKCtbV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rpb25XaXRoVHlw
ZTpdKTogRGl0dG8uCisgICAgICAgICgtW1dLRWxlbWVudEFjdGlvbiBfcnVuQWN0aW9uV2l0aEVs
ZW1lbnRJbmZvOnZpZXc6XSk6IE1vdmVkIGZyb20gV0tBY3Rpb25TaGVldC5tbS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRWxlbWVudEFjdGlvbkludGVybmFsLmg6IEFkZGVkLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lmg6IFJlbW92ZWQgZGVjbGFy
YXRpb25zIHRoYXQgd2VyZSBtb3ZlZCBlbHNld2hlcmUuCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0FjdGlvblNoZWV0Lm1tOiBSZW1vdmVkIGNvZGUgdGhhdCB3YXMgbW92ZWQgZWxzZXdoZXJl
LgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbToKKyAg
ICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBhY3Rpb25TaGVldDpjbGlja2VkQnV0dG9u
QXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBzaG93SW1hZ2VT
aGVldF0pOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IHNob3dMaW5rU2hlZXRd
KToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBzaG93RGF0YURldGVjdG9yc1No
ZWV0XSk6CisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFk
ZGVkIHJlZmVyZW5jZXMgdG8gbmV3IGZpbGVzLgorCiAyMDE0LTAyLTI0ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBSZXRhaW5QdHJzIGZvciB0
d28gV0tDb250ZW50VmlldyBkYXRhIG1lbWJlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElf
RU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworV0tfQVBJX0NM
QVNTCitAaW50ZXJmYWNlIFdLQWN0aXZhdGVkRWxlbWVudEluZm8gOiBOU09iamVjdAorCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpVUkw7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp0aXRsZTsKKworQGVuZAorCisjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mby5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
Lm0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCitAaW1wbGVtZW50YXRpb24gV0tBY3RpdmF0ZWRFbGVtZW50
SW5mbyAgeworICAgIE5TVVJMICpfVVJMOworICAgIENHUG9pbnQgX2ludGVyYWN0aW9uTG9jYXRp
b247CisgICAgQ0dSZWN0IF9ib3VuZGluZ1JlY3Q7Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhVUkw6KE5TVVJMICopdXJsIGxvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIHRpdGxlOihO
U1N0cmluZyAqKXRpdGxlIHJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfVVJMID0gW3VybCBjb3B5
XTsKKyAgICBfaW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGxvY2F0aW9uOworICAgIF90aXRsZSA9IFt0
aXRsZSBjb3B5XTsKKyAgICBfYm91bmRpbmdSZWN0ID0gcmVjdDsKKworICAgIHJldHVybiBzZWxm
OworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3RpdGxlIHJlbGVhc2VdOworICAgIFtf
VVJMIHJlbGVhc2VdOworCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChDR1JlY3QpX2Jv
dW5kaW5nUmVjdAoreworICAgIHJldHVybiBfYm91bmRpbmdSZWN0OworfQorCistIChDR1BvaW50
KV9pbnRlcmFjdGlvbkxvY2F0aW9uCit7CisgICAgcmV0dXJuIF9pbnRlcmFjdGlvbkxvY2F0aW9u
OworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQWN0
aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mby5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFj
ZSBXS0FjdGl2YXRlZEVsZW1lbnRJbmZvICgpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhV
Ukw6KE5TVVJMICopdXJsIGxvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIHRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIHJlY3Q6KENHUmVjdClyZWN0OworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIENHUG9pbnQgX2ludGVyYWN0aW9uTG9jYXRpb247CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIENHUmVjdCBfYm91bmRpbmdSZWN0OworCitAZW5kCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0VsZW1lbnRBY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRWxlbWVudEFjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0VsZW1lbnRBY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRp
b24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisKKyNp
bXBvcnQgPFdlYktpdDIvV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorCit0eXBlZGVmIHZvaWQg
KF5XS0VsZW1lbnRBY3Rpb25IYW5kbGVyKShXS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopOworCit0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0VsZW1lbnRBY3Rpb25UeXBlKSB7CisgICAgV0tF
bGVtZW50QWN0aW9uVHlwZUN1c3RvbSwKKyAgICBXS0VsZW1lbnRBY3Rpb25UeXBlT3BlbiwKKyAg
ICBXS0VsZW1lbnRBY3Rpb25UeXBlQ29weSwKKyAgICBXS0VsZW1lbnRBY3Rpb25UeXBlU2F2ZUlt
YWdlLAorICAgIFdLRWxlbWVudEFjdGlvblR5cGVBZGRUb1JlYWRpbmdMaXN0LAorfTsKKworV0tf
QVBJX0NMQVNTCitAaW50ZXJmYWNlIFdLRWxlbWVudEFjdGlvbiA6IE5TT2JqZWN0CisKKysgKGlu
c3RhbmNldHlwZSllbGVtZW50QWN0aW9uV2l0aFR5cGU6KFdLRWxlbWVudEFjdGlvblR5cGUpdHlw
ZTsKKysgKGluc3RhbmNldHlwZSllbGVtZW50QWN0aW9uV2l0aFR5cGU6KFdLRWxlbWVudEFjdGlv
blR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKil0aXRsZTsKKworKyAoaW5zdGFuY2V0
eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgYWN0aW9uSGFuZGxl
cjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5kbGVyOworCitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIFdLRWxlbWVudEFjdGlvblR5cGUgdHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNTdHJpbmcqIHRpdGxlOworCitAZW5kCisKKyNlbmRpZiAvLyBUQVJH
RVRfT1NfSVBIT05FCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0VsZW1lbnRBY3Rpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0VsZW1lbnRBY3Rpb24ubW0J
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRWxl
bWVudEFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwu
aCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQg
IldLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgiCisjaW1wb3J0ICJXS0dlc3R1cmVUeXBlcy5oIgorI2ltcG9ydCA8U2Fm
YXJpU2VydmljZXMvU1NSZWFkaW5nTGlzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhTYWZhcmlTZXJ2aWNlcyk7
CitTT0ZUX0xJTktfQ0xBU1MoU2FmYXJpU2VydmljZXMsIFNTUmVhZGluZ0xpc3QpOworCit0eXBl
ZGVmIHZvaWQgKF5XS0VsZW1lbnRBY3Rpb25IYW5kbGVySW50ZXJuYWwpKFdLQ29udGVudFZpZXcg
KiwgV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKTsKKworQGltcGxlbWVudGF0aW9uIFdLRWxlbWVu
dEFjdGlvbiAgeworICAgIE5TU3RyaW5nICpfdGl0bGU7CisgICAgV0tFbGVtZW50QWN0aW9uSGFu
ZGxlckludGVybmFsIF9hY3Rpb25IYW5kbGVyOworICAgIFdLRWxlbWVudEFjdGlvblR5cGUgX3R5
cGU7Cit9CisKKy0gKGlkKV9pbml0V2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhh
bmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCloYW5kbGVyIHR5cGU6KFdLRWxl
bWVudEFjdGlvblR5cGUpdHlwZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3RpdGxlID0gW3RpdGxlIGNvcHldOworICAgIF90
eXBlID0gdHlwZTsKKyAgICBfYWN0aW9uSGFuZGxlciA9IFtoYW5kbGVyIGNvcHldOworICAgIHJl
dHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3RpdGxlIHJlbGVhc2Vd
OworICAgIFtfYWN0aW9uSGFuZGxlciByZWxlYXNlXTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsK
K30KKworKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5TU3RyaW5nICop
dGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5kbGVyCit7Cisg
ICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbkhhbmRs
ZXI6XihXS0NvbnRlbnRWaWV3ICp2aWV3LCBXS0FjdGl2YXRlZEVsZW1lbnRJbmZvICphY3Rpb25J
bmZvKSB7IGhhbmRsZXIoYWN0aW9uSW5mbyk7IH0KKyAgICAgICB0eXBlOldLRWxlbWVudEFjdGlv
blR5cGVDdXN0b21dIGF1dG9yZWxlYXNlXTsKK30KKworc3RhdGljIHZvaWQgY29weUVsZW1lbnQo
V0tDb250ZW50VmlldyAqdmlldykKK3sKKyAgICBbdmlldyBfcGVyZm9ybUFjdGlvbjpXZWJLaXQ6
OldLU2hlZXRBY3Rpb25Db3B5XTsKK30KKworc3RhdGljIHZvaWQgc2F2ZUltYWdlKFdLQ29udGVu
dFZpZXcgKnZpZXcpCit7CisgICAgW3ZpZXcgX3BlcmZvcm1BY3Rpb246V2ViS2l0OjpXS1NoZWV0
QWN0aW9uU2F2ZUltYWdlXTsKK30KKworc3RhdGljIHZvaWQgYWRkVG9SZWFkaW5nTGlzdChOU1VS
TCAqdGFyZ2V0VVJMLCBOU1N0cmluZyAqdGl0bGUpCit7CisgICAgaWYgKCF0aXRsZSB8fCBbdGl0
bGUgbGVuZ3RoXSA9PSAwKQorICAgICAgICB0aXRsZSA9IFt0YXJnZXRVUkwgYWJzb2x1dGVTdHJp
bmddOworCisgICAgW1tnZXRTU1JlYWRpbmdMaXN0Q2xhc3MoKSBkZWZhdWx0UmVhZGluZ0xpc3Rd
IGFkZFJlYWRpbmdMaXN0SXRlbVdpdGhVUkw6dGFyZ2V0VVJMIHRpdGxlOnRpdGxlIHByZXZpZXdU
ZXh0Om5pbCBlcnJvcjpuaWxdOworfQorCisrIChpbnN0YW5jZXR5cGUpZWxlbWVudEFjdGlvbldp
dGhUeXBlOihXS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE5TU3RyaW5nICop
Y3VzdG9tVGl0bGUKK3sKKyAgICBOU1N0cmluZyAqdGl0bGU7CisgICAgV0tFbGVtZW50QWN0aW9u
SGFuZGxlckludGVybmFsIGhhbmRsZXI7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBX
S0VsZW1lbnRBY3Rpb25UeXBlQ29weToKKyAgICAgICAgdGl0bGUgPSBXRUJfVUlfU1RSSU5HX0tF
WSgiQ29weSIsICJDb3B5IEFjdGlvblNoZWV0IExpbmsiLCAiVGl0bGUgZm9yIENvcHkgTGluayBv
ciBJbWFnZSBhY3Rpb24gYnV0dG9uIik7CisgICAgICAgIGhhbmRsZXIgPSBeKFdLQ29udGVudFZp
ZXcgKnZpZXcsIFdLQWN0aXZhdGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8pIHsKKyAgICAgICAg
ICAgIGNvcHlFbGVtZW50KHZpZXcpOworICAgICAgICB9OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdLRWxlbWVudEFjdGlvblR5cGVPcGVuOgorICAgICAgICB0aXRsZSA9IFdFQl9VSV9TVFJJ
TkdfS0VZKCJPcGVuIiwgIk9wZW4gQWN0aW9uU2hlZXQgTGluayIsICJUaXRsZSBmb3IgT3BlbiBM
aW5rIGFjdGlvbiBidXR0b24iKTsKKyAgICAgICAgaGFuZGxlciA9IF4oV0tDb250ZW50VmlldyAq
dmlldywgV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5mbykgeworICAgICAgICAgICAg
W3ZpZXcgX2F0dGVtcHRDbGlja0F0TG9jYXRpb246YWN0aW9uSW5mby5faW50ZXJhY3Rpb25Mb2Nh
dGlvbl07CisgICAgICAgIH07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0tFbGVtZW50QWN0
aW9uVHlwZVNhdmVJbWFnZToKKyAgICAgICAgdGl0bGUgPSBXRUJfVUlfU1RSSU5HX0tFWSgiU2F2
ZSBJbWFnZSIsICJTYXZlIEltYWdlIiwgIlRpdGxlIGZvciBTYXZlIEltYWdlIGFjdGlvbiBidXR0
b24iKTsKKyAgICAgICAgaGFuZGxlciA9IF4oV0tDb250ZW50VmlldyAqdmlldywgV0tBY3RpdmF0
ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5mbykgeworICAgICAgICAgICAgc2F2ZUltYWdlKHZpZXcp
OworICAgICAgICB9OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdLRWxlbWVudEFjdGlvblR5
cGVBZGRUb1JlYWRpbmdMaXN0OgorICAgICAgICB0aXRsZSA9IFdFQl9VSV9TVFJJTkcoIkFkZCB0
byBSZWFkaW5nIExpc3QiLCAiVGl0bGUgZm9yIEFkZCB0byBSZWFkaW5nIExpc3QgYWN0aW9uIGJ1
dHRvbiIpOworICAgICAgICBoYW5kbGVyID0gXihXS0NvbnRlbnRWaWV3ICp2aWV3LCBXS0FjdGl2
YXRlZEVsZW1lbnRJbmZvICphY3Rpb25JbmZvKSB7CisgICAgICAgICAgICBhZGRUb1JlYWRpbmdM
aXN0KGFjdGlvbkluZm8uVVJMLCBhY3Rpb25JbmZvLnRpdGxlKTsKKyAgICAgICAgfTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRoZXJlIGlzIG5vIHN0YW5kYXJkIHdlYiBl
bGVtZW50IGFjdGlvbiBvZiB0eXBlICVsZC4iLCB0eXBlXTsKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICB9CisKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoVGl0bGU6KGN1c3Rv
bVRpdGxlID8gY3VzdG9tVGl0bGUgOiB0aXRsZSkgYWN0aW9uSGFuZGxlcjpoYW5kbGVyIHR5cGU6
dHlwZV0gYXV0b3JlbGVhc2VdOworfQorCisrIChpbnN0YW5jZXR5cGUpZWxlbWVudEFjdGlvbldp
dGhUeXBlOihXS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUKK3sKKyAgICByZXR1cm4gW3NlbGYgZWxl
bWVudEFjdGlvbldpdGhUeXBlOnR5cGUgY3VzdG9tVGl0bGU6bmlsXTsKK30KKworLSAodm9pZClf
cnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihXS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopaW5mbyB2
aWV3OihXS0NvbnRlbnRWaWV3ICopdmlldworeworICAgIF9hY3Rpb25IYW5kbGVyKHZpZXcsIGlu
Zm8pOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFbGVtZW50QWN0aW9uSW50
ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiV0tFbGVtZW50QWN0aW9uLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaWYgUExB
VEZPUk0oSU9TKQorCitAY2xhc3MgV0tDb250ZW50VmlldzsKKworQGludGVyZmFjZSBXS0VsZW1l
bnRBY3Rpb24gKCkKKworLSAodm9pZClfcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihXS0FjdGl2
YXRlZEVsZW1lbnRJbmZvICopaW5mbyB2aWV3OihXS0NvbnRlbnRWaWV3ICopdmlldzsKKworQGVu
ZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5oCShy
ZXZpc2lvbiAxNjQ2MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9u
U2hlZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjaW1wb3J0IDxVSUtp
dC9VSUFjdGlvblNoZWV0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVBvcG92ZXJDb250cm9sbGVyLmg+
Ci0jaW1wb3J0IDxXZWJLaXQyL1dLRGVjbGFyYXRpb25TcGVjaWZpZXJzLmg+CiAKIEBwcm90b2Nv
bCBXS0FjdGlvblNoZWV0RGVsZWdhdGU7CiBAY2xhc3MgV0tDb250ZW50VmlldzsKQEAgLTQxLDQz
ICs0MCw5IEBACiAtICh2b2lkKXVwZGF0ZVNoZWV0UG9zaXRpb247CiBAZW5kCiAKLQogQHByb3Rv
Y29sIFdLQWN0aW9uU2hlZXREZWxlZ2F0ZTxVSUFjdGlvblNoZWV0RGVsZWdhdGU+CiBAcmVxdWly
ZWQKIC0gKFVJVmlldyAqKWhvc3RWaWV3Rm9yU2hlZXQ7CiAtIChDR1JlY3QpaW5pdGlhbFByZXNl
bnRhdGlvblJlY3RJbkhvc3RWaWV3Rm9yU2hlZXQ7CiAtIChDR1JlY3QpcHJlc2VudGF0aW9uUmVj
dEluSG9zdFZpZXdGb3JTaGVldDsKIEBlbmQKLQotLy8gRWxlbWVudHMgdG8gZGVzY3JpYmUgYWN0
aW9uIHNoZWV0IGNvbnRlbnQuCi0KLVdLX0VYUE9SVCBAaW50ZXJmYWNlIFdLRWxlbWVudEFjdGlv
bkluZm8gOiBOU09iamVjdAotCi0tIChXS0VsZW1lbnRBY3Rpb25JbmZvICopaW5pdFdpdGhJbmZv
OihOU1VSTCAqKXVybCBsb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiB0aXRsZTooTlNTdHJpbmcg
Kil0aXRsZSByZWN0OihDR1JlY3QpcmVjdDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgQ0dQb2ludCBpbnRlcmFjdGlvbkxvY2F0aW9uOwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU1VSTCAqdXJsOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0
cmluZyAqdGl0bGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUmVjdCBib3Vu
ZGluZ1JlY3Q7Ci1AZW5kCi0KLXR5cGVkZWYgdm9pZCAoXldLRWxlbWVudEFjdGlvbkhhbmRsZXIp
KFdLRWxlbWVudEFjdGlvbkluZm8gKik7Ci10eXBlZGVmIHZvaWQgKF5XS0VsZW1lbnRBY3Rpb25I
YW5kbGVySW50ZXJuYWwpKFdLQ29udGVudFZpZXcgKiwgV0tFbGVtZW50QWN0aW9uSW5mbyAqKTsK
LQotdHlwZWRlZiBlbnVtIHsKLSAgICBXS0VsZW1lbnRBY3Rpb25UeXBlQ3VzdG9tID0gMCwKLSAg
ICBXS0VsZW1lbnRBY3Rpb25UeXBlT3BlbiwKLSAgICBXS0VsZW1lbnRBY3Rpb25UeXBlQ29weSwK
LSAgICBXS0VsZW1lbnRBY3Rpb25UeXBlU2F2ZUltYWdlLAotICAgIFdLRWxlbWVudEFjdGlvblR5
cGVBZGRUb1JlYWRpbmdMaXN0LAotfSBXS0VsZW1lbnRBY3Rpb25UeXBlOwotCi1XS19FWFBPUlQg
QGludGVyZmFjZSBXS0VsZW1lbnRBY3Rpb24gOiBOU09iamVjdAotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBXS0VsZW1lbnRBY3Rpb25UeXBlIHR5cGU7Ci1AcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nKiB0aXRsZTsKLQotKyAoV0tFbGVtZW50QWN0aW9uICop
Y3VzdG9tRWxlbWVudEFjdGlvbldpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBhY3Rpb25IYW5k
bGVyOihXS0VsZW1lbnRBY3Rpb25IYW5kbGVyKWhhbmRsZXI7Ci0rIChXS0VsZW1lbnRBY3Rpb24g
KilzdGFuZGFyZEVsZW1lbnRBY3Rpb25XaXRoVHlwZTooV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBl
OwotKyAoV0tFbGVtZW50QWN0aW9uICopc3RhbmRhcmRFbGVtZW50QWN0aW9uV2l0aFR5cGU6KFdL
RWxlbWVudEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKil0aXRsZTsKLS0g
KHZvaWQpcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihXS0VsZW1lbnRBY3Rpb25JbmZvICopaW5m
byB2aWV3OihXS0NvbnRlbnRWaWV3ICopdmlldzsKLQotQGVuZApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbQkocmV2aXNpb24gMTY0NjIxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwyOSArMjYsMTMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tBY3Rpb25TaGVldC5oIgogCi0jaW1wb3J0ICJXS0dlc3R1cmVUeXBlcy5oIgogI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCi0jaW1wb3J0IDxTYWZhcmlTZXJ2aWNlcy9TU1Jl
YWRpbmdMaXN0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSUFjdGlvblNoZWV0X1ByaXZhdGUuaD4KLSNp
bXBvcnQgPFVJS2l0L1VJVmlldy5oPgogI2ltcG9ydCA8VUlLaXQvVUlXaW5kb3dfUHJpdmF0ZS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1NvZnRMaW5raW5nLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SSyhTYWZhcmlTZXJ2aWNlcyk7
Ci1TT0ZUX0xJTktfQ0xBU1MoU2FmYXJpU2VydmljZXMsIFNTUmVhZGluZ0xpc3QpOwotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1AaW50ZXJmYWNlIFdLRWxlbWVudEFjdGlvbihQcml2YXRl
KQotLSAodm9pZClfcnVuQWN0aW9uV2l0aEVsZW1lbnQ6KE5TVVJMICopdGFyZ2V0VVJMIGRvY3Vt
ZW50VmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgaW50ZXJhY3Rpb25Mb2NhdGlvbjooQ0dQb2lu
dClpbnRlcmFjdGlvbkxvY2F0aW9uOwotQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tBY3Rpb25T
aGVldCB7Ci0gICAgaWQ8V0tBY3Rpb25TaGVldERlbGVnYXRlPiBfc2hlZXREZWxlZ2F0ZTsKLSAg
ICBpZDxVSUFjdGlvblNoZWV0RGVsZWdhdGU+IF9kZWxlZ2F0ZVdoaWxlUm90YXRpbmc7CisgICAg
aWQgPFdLQWN0aW9uU2hlZXREZWxlZ2F0ZT4gX3NoZWV0RGVsZWdhdGU7CisgICAgaWQgPFVJQWN0
aW9uU2hlZXREZWxlZ2F0ZT4gX2RlbGVnYXRlV2hpbGVSb3RhdGluZzsKICAgICBXS0NvbnRlbnRW
aWV3ICpfdmlldzsKICAgICBVSVBvcG92ZXJBcnJvd0RpcmVjdGlvbiBfYXJyb3dEaXJlY3Rpb25z
OwogICAgIEJPT0wgX2lzUm90YXRpbmc7CkBAIC0xNzMsMTI4ICsxNTcsMyBAQCAtICh2b2lkKWRp
ZFJvdGF0ZQogfQogCiBAZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0VsZW1lbnRBY3Rpb25JbmZv
ICB7Ci0gICAgQ0dQb2ludCBfaW50ZXJhY3Rpb25Mb2NhdGlvbjsKLSAgICBOU1VSTCAqX3VybDsK
LSAgICBOU1N0cmluZyAqX3RpdGxlOwotICAgIENHUmVjdCBfYm91bmRpbmdSZWN0OwotICAgIENH
SW1hZ2VSZWYgX3NuYXBzaG90OwotfQotCi0tIChXS0VsZW1lbnRBY3Rpb25JbmZvICopIGluaXRX
aXRoSW5mbzooTlNVUkwgKil1cmwgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gdGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgcmVjdDooQ0dSZWN0KXJlY3QKLXsKLSAgICBfdXJsID0gW3VybCBjb3B5
XTsKLSAgICBfaW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGxvY2F0aW9uOwotICAgIF90aXRsZSA9IFt0
aXRsZSBjb3B5XTsKLSAgICBfYm91bmRpbmdSZWN0ID0gcmVjdDsKLQotICAgIHJldHVybiBzZWxm
OwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX3RpdGxlIHJlbGVhc2VdOwotICAgIFtf
dXJsIHJlbGVhc2VdOwotICAgIAotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gV0tFbGVtZW50QWN0aW9uICB7Ci0gICAgTlNTdHJpbmcgKl90aXRsZTsK
LSAgICBXS0VsZW1lbnRBY3Rpb25IYW5kbGVySW50ZXJuYWwgX2FjdGlvbkhhbmRsZXI7Ci0gICAg
V0tFbGVtZW50QWN0aW9uVHlwZSBfdHlwZTsKLX0KLQotLSAoaWQpaW5pdFdpdGhUaXRsZTooTlNT
dHJpbmcgKil0aXRsZSBhY3Rpb25IYW5kbGVyOihXS0VsZW1lbnRBY3Rpb25IYW5kbGVySW50ZXJu
YWwpaGFuZGxlciB0eXBlOihXS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUKLXsKLSAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfdGl0bGUgPSBb
dGl0bGUgY29weV07Ci0gICAgX3R5cGUgPSB0eXBlOwotICAgIF9hY3Rpb25IYW5kbGVyID0gQmxv
Y2tfY29weShoYW5kbGVyKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9j
Ci17Ci0gICAgW190aXRsZSByZWxlYXNlXTsKLSAgICBbX2FjdGlvbkhhbmRsZXIgcmVsZWFzZV07
Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0rIChXS0VsZW1lbnRBY3Rpb24gKiljdXN0b21F
bGVtZW50QWN0aW9uV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdL
RWxlbWVudEFjdGlvbkhhbmRsZXIpaGFuZGxlcgotewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9j
XSBpbml0V2l0aFRpdGxlOnRpdGxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbkhh
bmRsZXI6XihXS0NvbnRlbnRWaWV3ICp2aWV3LCBXS0VsZW1lbnRBY3Rpb25JbmZvICphY3Rpb25J
bmZvKSB7IGhhbmRsZXIoYWN0aW9uSW5mbyk7IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZTpXS0VsZW1lbnRBY3Rpb25UeXBlQ3VzdG9tXSBhdXRvcmVsZWFzZV07Ci19
Ci0KLXN0YXRpYyB2b2lkIGNvcHlFbGVtZW50KFdLQ29udGVudFZpZXcgKnZpZXcpCi17Ci0gICAg
W3ZpZXcgX3BlcmZvcm1BY3Rpb246V2ViS2l0OjpXS1NoZWV0QWN0aW9uQ29weV07Ci19Ci0KLXN0
YXRpYyB2b2lkIHNhdmVJbWFnZShXS0NvbnRlbnRWaWV3ICp2aWV3KQotewotICAgIFt2aWV3IF9w
ZXJmb3JtQWN0aW9uOldlYktpdDo6V0tTaGVldEFjdGlvblNhdmVJbWFnZV07Ci19Ci0KLXN0YXRp
YyB2b2lkIGFkZFRvUmVhZGluZ0xpc3QoTlNVUkwgKnRhcmdldFVSTCwgTlNTdHJpbmcgKnRpdGxl
KQotewotICAgIGlmICghdGl0bGUgfHwgW3RpdGxlIGxlbmd0aF0gPT0gMCkKLSAgICAgICAgdGl0
bGUgPSBbdGFyZ2V0VVJMIGFic29sdXRlU3RyaW5nXTsKLQotICAgIFtbZ2V0U1NSZWFkaW5nTGlz
dENsYXNzKCkgZGVmYXVsdFJlYWRpbmdMaXN0XSBhZGRSZWFkaW5nTGlzdEl0ZW1XaXRoVVJMOnRh
cmdldFVSTCB0aXRsZTp0aXRsZSBwcmV2aWV3VGV4dDpuaWwgZXJyb3I6bmlsXTsKLX0KLQotKyAo
V0tFbGVtZW50QWN0aW9uICopc3RhbmRhcmRFbGVtZW50QWN0aW9uV2l0aFR5cGU6KFdLRWxlbWVu
dEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKiljdXN0b21UaXRsZQotewot
ICAgIE5TU3RyaW5nICp0aXRsZTsKLSAgICBXS0VsZW1lbnRBY3Rpb25IYW5kbGVySW50ZXJuYWwg
aGFuZGxlcjsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFdLRWxlbWVudEFjdGlvblR5
cGVDb3B5OgotICAgICAgICB0aXRsZSA9IFdFQl9VSV9TVFJJTkdfS0VZKCJDb3B5IiwgIkNvcHkg
QWN0aW9uU2hlZXQgTGluayIsICJUaXRsZSBmb3IgQ29weSBMaW5rIG9yIEltYWdlIGFjdGlvbiBi
dXR0b24iKTsKLSAgICAgICAgaGFuZGxlciA9IF4oV0tDb250ZW50VmlldyAqdmlldywgV0tFbGVt
ZW50QWN0aW9uSW5mbyAqYWN0aW9uSW5mbykgewotICAgICAgICAgICAgY29weUVsZW1lbnQodmll
dyk7Ci0gICAgICAgIH07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0tFbGVtZW50QWN0aW9u
VHlwZU9wZW46Ci0gICAgICAgIHRpdGxlID0gV0VCX1VJX1NUUklOR19LRVkoIk9wZW4iLCAiT3Bl
biBBY3Rpb25TaGVldCBMaW5rIiwgIlRpdGxlIGZvciBPcGVuIExpbmsgYWN0aW9uIGJ1dHRvbiIp
OwotICAgICAgICBoYW5kbGVyID0gXihXS0NvbnRlbnRWaWV3ICp2aWV3LCBXS0VsZW1lbnRBY3Rp
b25JbmZvICphY3Rpb25JbmZvKSB7Ci0gICAgICAgICAgICBbdmlldyBfYXR0ZW1wdENsaWNrQXRM
b2NhdGlvbjphY3Rpb25JbmZvLmludGVyYWN0aW9uTG9jYXRpb25dOwotICAgICAgICB9OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFdLRWxlbWVudEFjdGlvblR5cGVTYXZlSW1hZ2U6Ci0gICAg
ICAgIHRpdGxlID0gV0VCX1VJX1NUUklOR19LRVkoIlNhdmUgSW1hZ2UiLCAiU2F2ZSBJbWFnZSIs
ICJUaXRsZSBmb3IgU2F2ZSBJbWFnZSBhY3Rpb24gYnV0dG9uIik7Ci0gICAgICAgIGhhbmRsZXIg
PSBeKFdLQ29udGVudFZpZXcgKnZpZXcsIFdLRWxlbWVudEFjdGlvbkluZm8gKmFjdGlvbkluZm8p
IHsKLSAgICAgICAgICAgIHNhdmVJbWFnZSh2aWV3KTsKLSAgICAgICAgfTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXS0VsZW1lbnRBY3Rpb25UeXBlQWRkVG9SZWFkaW5nTGlzdDoKLSAgICAg
ICAgdGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJBZGQgdG8gUmVhZGluZyBMaXN0IiwgIlRpdGxlIGZv
ciBBZGQgdG8gUmVhZGluZyBMaXN0IGFjdGlvbiBidXR0b24iKTsKLSAgICAgICAgaGFuZGxlciA9
IF4oV0tDb250ZW50VmlldyAqdmlldywgV0tFbGVtZW50QWN0aW9uSW5mbyAqYWN0aW9uSW5mbykg
ewotICAgICAgICAgICAgYWRkVG9SZWFkaW5nTGlzdChhY3Rpb25JbmZvLnVybCwgYWN0aW9uSW5m
by50aXRsZSk7Ci0gICAgICAgIH07Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6
QCJUaGVyZSBpcyBubyBzdGFuZGFyZCB3ZWIgZWxlbWVudCBhY3Rpb24gb2YgdHlwZSAlZC4iLCB0
eXBlXTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgcmV0dXJuIFtbW1dLRWxlbWVu
dEFjdGlvbiBhbGxvY10gaW5pdFdpdGhUaXRsZTooY3VzdG9tVGl0bGUgPyBjdXN0b21UaXRsZSA6
IHRpdGxlKSBhY3Rpb25IYW5kbGVyOmhhbmRsZXIgdHlwZTp0eXBlXSBhdXRvcmVsZWFzZV07Ci19
Ci0KLSsgKFdLRWxlbWVudEFjdGlvbiAqKXN0YW5kYXJkRWxlbWVudEFjdGlvbldpdGhUeXBlOihX
S0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYgc3RhbmRhcmRFbGVt
ZW50QWN0aW9uV2l0aFR5cGU6dHlwZSBjdXN0b21UaXRsZTpuaWxdOwotfQotCi0tICh2b2lkKXJ1
bkFjdGlvbldpdGhFbGVtZW50SW5mbzooV0tFbGVtZW50QWN0aW9uSW5mbyAqKWluZm8gdmlldzoo
V0tDb250ZW50VmlldyAqKXZpZXcKLXsKLSAgICBfYWN0aW9uSGFuZGxlcih2aWV3LCBpbmZvKTsK
LX0KLUBlbmQKLQotCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCShyZXZpc2lvbiAxNjQ2MjEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5oIgogCisjaW1wb3J0ICJXS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQWN0aW9uU2hlZXQuaCIKKyNpbXBvcnQgIldLRWxl
bWVudEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8VENDL1RDQy5oPgpAQCAtNTEs
MTAgKzUzLDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VQaG90bwogU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKERhdGFEZXRlY3RvcnNVSSkKIFNPRlRfTElOS19DTEFT
UyhEYXRhRGV0ZWN0b3JzVUksIERERGV0ZWN0aW9uQ29udHJvbGxlcikKIAotQGludGVyZmFjZSBX
S0VsZW1lbnRBY3Rpb24oUHJpdmF0ZSkKLS0gKHZvaWQpX3J1bkFjdGlvbldpdGhFbGVtZW50OihO
U1VSTCAqKXRhcmdldFVSTCBkb2N1bWVudFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGludGVy
YWN0aW9uTG9jYXRpb246KENHUG9pbnQpaW50ZXJhY3Rpb25Mb2NhdGlvbjsKLUBlbmQKLQogQGlt
cGxlbWVudGF0aW9uIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgewogICAgIFJldGFpblB0cjxXS0Fj
dGlvblNoZWV0PiBfaW50ZXJhY3Rpb25TaGVldDsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gX2Vs
ZW1lbnRBY3Rpb25zOwpAQCAtMTU3LDExICsxNTUsOSBAQCAtICh2b2lkKWFjdGlvblNoZWV0OihV
SUFjdGlvblNoZWV0ICopYWN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChfZWxlbWVudEFj
dGlvbnMgJiYgYnV0dG9uSW5kZXggPCAoTlNJbnRlZ2VyKVtfZWxlbWVudEFjdGlvbnMgY291bnRd
KSB7Ci0gICAgICAgIFdLRWxlbWVudEFjdGlvbkluZm8qIGFjdGlvbkluZm8gPSBbW1dLRWxlbWVu
dEFjdGlvbkluZm8gYWxsb2NdIGluaXRXaXRoSW5mbzpbTlNVUkwgVVJMV2l0aFN0cmluZzpfdmll
dy5wb3NpdGlvbkluZm9ybWF0aW9uLnVybF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOl92
aWV3LnBvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxl
Ol92aWV3LnBvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWN0Ol92aWV3LnBvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzXTsKLSAgICAgICAgW1tfZWxlbWVu
dEFjdGlvbnMgb2JqZWN0QXRJbmRleDpidXR0b25JbmRleF0gcnVuQWN0aW9uV2l0aEVsZW1lbnRJ
bmZvOmFjdGlvbkluZm8gdmlldzpfdmlld107CisgICAgICAgIFdLQWN0aXZhdGVkRWxlbWVudElu
Zm8gKmFjdGlvbkluZm8gPSBbW1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpfdmlldy5wb3NpdGlvbkluZm9ybWF0aW9uLnVybF0K
KyAgICAgICAgICAgIGxvY2F0aW9uOl92aWV3LnBvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQgdGl0
bGU6X3ZpZXcucG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSByZWN0Ol92aWV3LnBvc2l0aW9uSW5m
b3JtYXRpb24uYm91bmRzXTsKKyAgICAgICAgW1tfZWxlbWVudEFjdGlvbnMgb2JqZWN0QXRJbmRl
eDpidXR0b25JbmRleF0gX3J1bkFjdGlvbldpdGhFbGVtZW50SW5mbzphY3Rpb25JbmZvIHZpZXc6
X3ZpZXddOwogICAgICAgICBbYWN0aW9uSW5mbyByZWxlYXNlXTsKICAgICB9CiAKQEAgLTIyMywx
MyArMjE5LDEzIEBAIC0gKHZvaWQpc2hvd0ltYWdlU2hlZXQKICAgICBOU1VSTCAqdGFyZ2V0VVJM
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6X3ZpZXcucG9zaXRpb25JbmZvcm1hdGlvbi51cmxdOwog
ICAgIE5TTXV0YWJsZUFycmF5ICphY3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAg
ICBpZiAoIV92aWV3LnBvc2l0aW9uSW5mb3JtYXRpb24udXJsLmlzRW1wdHkoKSkKLSAgICAgICAg
W2FjdGlvbnMgYWRkT2JqZWN0OltXS0VsZW1lbnRBY3Rpb24gc3RhbmRhcmRFbGVtZW50QWN0aW9u
V2l0aFR5cGU6V0tFbGVtZW50QWN0aW9uVHlwZU9wZW5dXTsKKyAgICAgICAgW2FjdGlvbnMgYWRk
T2JqZWN0OltXS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOldLRWxlbWVudEFj
dGlvblR5cGVPcGVuXV07CiAgICAgaWYgKFtnZXRTU1JlYWRpbmdMaXN0Q2xhc3MoKSBzdXBwb3J0
c1VSTDp0YXJnZXRVUkxdKQotICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxlbWVudEFj
dGlvbiBzdGFuZGFyZEVsZW1lbnRBY3Rpb25XaXRoVHlwZTpXS0VsZW1lbnRBY3Rpb25UeXBlQWRk
VG9SZWFkaW5nTGlzdF1dOworICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxlbWVudEFj
dGlvbiBlbGVtZW50QWN0aW9uV2l0aFR5cGU6V0tFbGVtZW50QWN0aW9uVHlwZUFkZFRvUmVhZGlu
Z0xpc3RdXTsKICAgICBpZiAoVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlUGhvdG9z
KCksIE5VTEwpICE9IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQpCi0gICAgICAgIFthY3Rpb25z
IGFkZE9iamVjdDpbV0tFbGVtZW50QWN0aW9uIHN0YW5kYXJkRWxlbWVudEFjdGlvbldpdGhUeXBl
OldLRWxlbWVudEFjdGlvblR5cGVTYXZlSW1hZ2VdXTsKKyAgICAgICAgW2FjdGlvbnMgYWRkT2Jq
ZWN0OltXS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOldLRWxlbWVudEFjdGlv
blR5cGVTYXZlSW1hZ2VdXTsKICAgICBpZiAoIVtbdGFyZ2V0VVJMIHNjaGVtZV0gbGVuZ3RoXSB8
fCBbW3RhcmdldFVSTCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJqYXZhc2NyaXB0
Il0gIT0gTlNPcmRlcmVkU2FtZSkKLSAgICAgICAgW2FjdGlvbnMgYWRkT2JqZWN0OltXS0VsZW1l
bnRBY3Rpb24gc3RhbmRhcmRFbGVtZW50QWN0aW9uV2l0aFR5cGU6V0tFbGVtZW50QWN0aW9uVHlw
ZUNvcHldXTsKKyAgICAgICAgW2FjdGlvbnMgYWRkT2JqZWN0OltXS0VsZW1lbnRBY3Rpb24gZWxl
bWVudEFjdGlvbldpdGhUeXBlOldLRWxlbWVudEFjdGlvblR5cGVDb3B5XV07CiAKICAgICAvLyBG
SVhNRTogQWRkIGNhbGwgdG8gZGVsZWdhdGUgdG8gYWRkIGN1c3RvbSBhY3Rpb25zLgogCkBAIC0y
NDksMTEgKzI0NSwxMSBAQCAtICh2b2lkKXNob3dMaW5rU2hlZXQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgTlNNdXRhYmxlQXJyYXkgKmFjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwot
ICAgIFthY3Rpb25zIGFkZE9iamVjdDpbV0tFbGVtZW50QWN0aW9uIHN0YW5kYXJkRWxlbWVudEFj
dGlvbldpdGhUeXBlOldLRWxlbWVudEFjdGlvblR5cGVPcGVuXV07CisgICAgW2FjdGlvbnMgYWRk
T2JqZWN0OltXS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOldLRWxlbWVudEFj
dGlvblR5cGVPcGVuXV07CiAgICAgaWYgKFtnZXRTU1JlYWRpbmdMaXN0Q2xhc3MoKSBzdXBwb3J0
c1VSTDp0YXJnZXRVUkxdKQotICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxlbWVudEFj
dGlvbiBzdGFuZGFyZEVsZW1lbnRBY3Rpb25XaXRoVHlwZTpXS0VsZW1lbnRBY3Rpb25UeXBlQWRk
VG9SZWFkaW5nTGlzdF1dOworICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxlbWVudEFj
dGlvbiBlbGVtZW50QWN0aW9uV2l0aFR5cGU6V0tFbGVtZW50QWN0aW9uVHlwZUFkZFRvUmVhZGlu
Z0xpc3RdXTsKICAgICBpZiAoIVtbdGFyZ2V0VVJMIHNjaGVtZV0gbGVuZ3RoXSB8fCBbW3Rhcmdl
dFVSTCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJqYXZhc2NyaXB0Il0gIT0gTlNP
cmRlcmVkU2FtZSkKLSAgICAgICAgW2FjdGlvbnMgYWRkT2JqZWN0OltXS0VsZW1lbnRBY3Rpb24g
c3RhbmRhcmRFbGVtZW50QWN0aW9uV2l0aFR5cGU6V0tFbGVtZW50QWN0aW9uVHlwZUNvcHldXTsK
KyAgICAgICAgW2FjdGlvbnMgYWRkT2JqZWN0OltXS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlv
bldpdGhUeXBlOldLRWxlbWVudEFjdGlvblR5cGVDb3B5XV07CiAKICAgICAvLyBGSVhNRTogQWRk
IGNhbGwgdG8gZGVsZWdhdGUgdG8gYWRkIGN1c3RvbSBhY3Rpb25zLgogCkBAIC0yODgsNyArMjg0
LDcgQEAgLSAodm9pZClzaG93RGF0YURldGVjdG9yc1NoZWV0CiAgICAgTlNNdXRhYmxlQXJyYXkg
KmVsZW1lbnRBY3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBmb3IgKE5TVUlu
dGVnZXIgYWN0aW9uTnVtYmVyID0gMDsgYWN0aW9uTnVtYmVyIDwgW2RhdGFEZXRlY3RvcnNBY3Rp
b25zIGNvdW50XTsgYWN0aW9uTnVtYmVyKyspIHsKICAgICAgICAgRERBY3Rpb24gKmFjdGlvbiA9
IFtkYXRhRGV0ZWN0b3JzQWN0aW9ucyBvYmplY3RBdEluZGV4OmFjdGlvbk51bWJlcl07Ci0gICAg
ICAgIFtlbGVtZW50QWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxlbWVudEFjdGlvbiBjdXN0b21FbGVt
ZW50QWN0aW9uV2l0aFRpdGxlOlthY3Rpb24gbG9jYWxpemVkTmFtZV0gYWN0aW9uSGFuZGxlcjpe
KFdLRWxlbWVudEFjdGlvbkluZm8gKmFjdGlvbkluZm8pIHsKKyAgICAgICAgW2VsZW1lbnRBY3Rp
b25zIGFkZE9iamVjdDpbV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6W2Fj
dGlvbiBsb2NhbGl6ZWROYW1lXSBhY3Rpb25IYW5kbGVyOl4oV0tBY3RpdmF0ZWRFbGVtZW50SW5m
byAqYWN0aW9uSW5mbykgewogICAgICAgICAgICAgVUlQb3BvdmVyQ29udHJvbGxlciAqcG9wb3Zl
ckNvbnRyb2xsZXIgPSBuaWw7CiAgICAgICAgICAgICBpZiAoVUlfVVNFUl9JTlRFUkZBQ0VfSURJ
T00oKSAhPSBVSVVzZXJJbnRlcmZhY2VJZGlvbVBob25lKSB7CiAgICAgICAgICAgICAgICAgW19p
bnRlcmFjdGlvblNoZWV0IHNldFVzZXJJbnRlcmFjdGlvbkVuYWJsZWQ6Tk9dOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTY0NjIxKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsNiArNjIzLDEyIEBACiAJCTM3OTQ4NDA4
MTUwQzRCOTcwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTQ4NDA2MTUwQzRCOTYwMEU1MkNFOSAvKiBX
S1JlbmRlckxheWVyLmNwcCAqLzsgfTsKIAkJMzc5NDg0MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdL
UmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzc5NTc4OUMxOEFENEYx
OTAwQjlFRDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTU3ODlCMThBRDRG
MTEwMEI5RUQyRSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzc5QTg3MzYx
OEJCRkE0MzAwNTg4QUYyIC8qIFdLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5QTg3MzUxOEJCRkE0
MzAwNTg4QUYyIC8qIFdLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oICovOyB9OworCQkz
NzlBODczOTE4QkJGRTBGMDA1ODhBRjIgLyogV0tFbGVtZW50QWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5QTg3MzcxOEJCRkUwRjAwNTg4
QUYyIC8qIFdLRWxlbWVudEFjdGlvbi5tbSAqLzsgfTsKKwkJMzc5QTg3M0ExOEJCRkUwRjAwNTg4
QUYyIC8qIFdLRWxlbWVudEFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc5QTg3MzgxOEJCRkUwRjAwNTg4QUYyIC8qIFdLRWxlbWVudEFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJMzc5
QTg3M0MxOEJCRkYwNzAwNTg4QUYyIC8qIFdLRWxlbWVudEFjdGlvbkludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzlBODczQjE4QkJGRjA3
MDA1ODhBRjIgLyogV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaCAqLzsgfTsKKwkJMzdBNUUwMTMx
OEJCRjkzNzAwMEEwODFFIC8qIFdLQWN0aXZhdGVkRWxlbWVudEluZm8ubSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QTVFMDExMThCQkY5MzcwMDBBMDgx
RSAvKiBXS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm0gKi87IH07CisJCTM3QTVFMDE0MThCQkY5M0Yw
MDBBMDgxRSAvKiBXS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0E1RTAxMjE4QkJGOTM3MDAwQTA4MUUgLyogV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKIAkJMzdDNEMwODYxODE0OUM1QjAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRM
aXN0SXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3QzRDMDg0MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi87
IH07CiAJCTM3QzRDMDg3MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzRDMDg1
MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTM3QzRDMDg5MTgxNDlGMjMwMDM2
ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNEMwODgxODE0OUYyMzAwMzY4OEI5IC8q
IFdLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmggKi87IH07CkBAIC0yMzQ0LDYgKzIzNTAs
MTIgQEAKIAkJMzc5NDg0MDYxNTBDNEI5NjAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tSZW5kZXJMYXllci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBX
S1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVy
TGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5NTc4OUIxOEFENEYxMTAw
QjlFRDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRl
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzlBODczNTE4QkJGQTQz
MDA1ODhBRjIgLyogV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzlBODczNzE4QkJGRTBGMDA1ODhBRjIgLyog
V0tFbGVtZW50QWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tFbGVtZW50QWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzlB
ODczODE4QkJGRTBGMDA1ODhBRjIgLyogV0tFbGVtZW50QWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLRWxlbWVudEFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzNzlBODczQjE4QkJGRjA3MDA1ODhBRjIgLyogV0tFbGVtZW50QWN0aW9uSW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tFbGVtZW50QWN0aW9u
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdBNUUwMTExOEJCRjkz
NzAwMEEwODFFIC8qIFdLQWN0aXZhdGVkRWxlbWVudEluZm8ubSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5vYmpjOyBwYXRoID0gV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzN0E1RTAxMjE4QkJGOTM3MDAwQTA4MUUgLyogV0tBY3RpdmF0ZWRF
bGVtZW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QzRDMDg0MTgx
NDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QzRDMDg1MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tC
YWNrRm9yd2FyZExpc3RJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QzRD
MDg4MTgxNDlGMjMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM5Niw5ICs0NDA4LDE1IEBA
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQUM1QzQ3QTE4QkJDQjdEMDA4OUY1N0YgLyogVG8gQmUg
UmVtb3ZlZCAqLywKIAkJCQkxQTQzRTgyNjE4OEYzOEUyMDA5RTREMzAgLyogRGVwcmVjYXRlZCAq
LywKKwkJCQkzN0E1RTAxMjE4QkJGOTM3MDAwQTA4MUUgLyogV0tBY3RpdmF0ZWRFbGVtZW50SW5m
by5oICovLAorCQkJCTM3QTVFMDExMThCQkY5MzcwMDBBMDgxRSAvKiBXS0FjdGl2YXRlZEVsZW1l
bnRJbmZvLm0gKi8sCisJCQkJMzc5QTg3MzUxOEJCRkE0MzAwNTg4QUYyIC8qIFdLQWN0aXZhdGVk
RWxlbWVudEluZm9JbnRlcm5hbC5oICovLAogCQkJCTJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAv
KiBXS1RodW1ibmFpbFZpZXcuaCAqLywKIAkJCQkyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyog
V0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLywKIAkJCQkyRDZCMzcxQTE4QTk2N0FEMDA0MkFF
ODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovLAorCQkJCTM3OUE4NzM4MThCQkZFMEYwMDU4OEFG
MiAvKiBXS0VsZW1lbnRBY3Rpb24uaCAqLywKKwkJCQkzNzlBODczNzE4QkJGRTBGMDA1ODhBRjIg
LyogV0tFbGVtZW50QWN0aW9uLm1tICovLAorCQkJCTM3OUE4NzNCMThCQkZGMDcwMDU4OEFGMiAv
KiBXS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oICovLAogCQkJCTFBNEQ2NjRBMThBMzAzMEUwMEQ4
MkUyMSAvKiBXS0ZyYW1lSW5mby5oICovLAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUwMEQ4MkUyMSAv
KiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkxQTRENjY0RDE4QTMwMzFCMDBEODJFMjEgLyogV0tG
cmFtZUluZm9JbnRlcm5hbC5oICovLApAQCAtNjM4NCw2ICs2NDAyLDcgQEAKIAkJCQlCQ0U4MUQ4
RDEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQkMz
REZDMTg5OUY1MUMwMDRGMDYyNiAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxNzc1M0YxMThCQUJGMDAwN0Q5RTlBIC8qIEdlbmVyaWNDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzc5QTg3MzYxOEJCRkE0MzAwNTg4QUYyIC8qIFdLQWN0aXZhdGVk
RWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNkY0MkYxMkRCQjlC
NjAwMkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzA2RjQ0QTEyREJEMUY1MDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNkY0M0Ex
MkRCQ0NGQjAwMkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC02NDQ4LDYgKzY0NjcsNyBAQAogCQkJCTFBQTU4ODkyMTFFRTcwNDAw
MDYxQjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3
OThDN0ExNkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxM0ExNjREMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc5QTg3M0MxOEJCRkYwNzAwNTg4QUYy
IC8qIFdLRWxlbWVudEFjdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUREOUYy
OTE2MzY3REEyMDAxNTc4RTkgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3OTU1NkExNjI4NzZGMzAwRkE0M0I2IC8qIE5ldHdv
cmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdDRjBFNDE2M0E0ODZDMDBDMjk1MEUg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
NjU2OSw2ICs2NTg5LDcgQEAKIAkJCQkxQUI0NzRFNjE4NEQ0NEI0MDA1MUI2MjIgLyogV0tCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMzFBOTcxNkJD
Njg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTM3OUE4NzNBMThCQkZFMEYwMDU4OEFGMiAvKiBXS0VsZW1lbnRBY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUQ4MUZGMTg1QkJERUUwMDFBRUQ1NiAvKiBTUUxpdGVJ
REJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBOTQ0QTAxODg0RTRGMDAwRUQ4
NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMTAyREEx
ODY2NzcwNjAwRUQ0MjlEIC8qIEF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LApAQCAtNjc3Niw2ICs2Nzk3LDcgQEAKIAkJCQlCQ0M1NzE1QjExNUFEQUVGMDAxQ0NBRjkgLyog
V2ViU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwRUY3RjEyMzMxRTc4
MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzZDMTg1
NjVDN0EwMEYzRUMwNSAvKiBBUElQYWdlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzN0E1
RTAxNDE4QkJGOTNGMDAwQTA4MUUgLyogV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFCNDc0RTgxODRENDREMDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZURpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NTM3QzE4M0E5RkRC
MDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEQjg2QzEx
MjAwRkI5NzAwNzI1NEJFIC8qIEFQSVVSTC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTM5LDYgKzgx
NjEsNyBAQAogCQkJCTI5RDU1REYxMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk2M0Q2RTExM0REMUE1
MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMwQ0U3MkEwMTI0
N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTM3QTVFMDEzMThCQkY5MzcwMDBBMDgxRSAvKiBXS0FjdGl2YXRlZEVsZW1lbnRJbmZv
Lm0gaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUIwRjExMkY1RTRGMDAzMzdCQUIgLyogV2ViUGFn
ZVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1OENERjJEMTg4NzYwOUYwMDg3MTUzNiAv
KiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MUIzMDA1MTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC04MzI4LDYgKzgzNTEsNyBAQAogCQkJCUJDNDA3NjJBMTI0RkYwNDAwMDY4RjIw
QSAvKiBXS1VSTFJlcXVlc3ROUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkE5NzYwMTgwRTAz
MUQwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM0MDc2MEQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzc5QTg3MzkxOEJCRkUwRjAwNTg4QUYyIC8qIFdLRWxlbWVu
dEFjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTYzMThCQkUzRDkwMDBGQ0ZDOSAv
KiBQYWdlQ2xpZW50SW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRENCODZBMTg5ODMxQjMw
MDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzQwNzYyQzEyNEZGMDQwMDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLm1tIGluIFNvdXJjZXMg
Ki8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225115</attachid>
            <date>2014-02-24 19:45:26 -0800</date>
            <delta_ts>2014-02-24 19:48:37 -0800</delta_ts>
            <desc>Add _WKActivatedElementInfo and _WKElementAction</desc>
            <filename>bug-129284-20140224194525.patch</filename>
            <type>text/plain</type>
            <size>42437</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDYyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTAyLTI0ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTdGFydCBhZGRpbmcg
QVBJIGZvciBjdXN0b21pemluZyBhY3Rpb25zIG9uIGFjdGl2YXRlZCBlbGVtZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5Mjg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg6IEFkZGVkLiBJbmNsdWRlcyB0aGUgcHVi
bGljIGludGVyZmFjZSBvZiB3aGF0CisgICAgICAgIHdhcyBXS0VsZW1lbnRBY3Rpb25JbmZvLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubTog
QWRkZWQuCisgICAgICAgICgtW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIF9pbml0V2l0aFVSTDps
b2NhdGlvbjp0aXRsZTpyZWN0Ol0pOiBNb3ZlZCBhbmQgcmVuYW1lZCBpbnRlcm5hbAorICAgICAg
ICBpbml0aWFsaXplciBmcm9tIFdLRWxlbWVudEFjdGlvbkluZm8uCisgICAgICAgICgtW19XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvIGRlYWxsb2NdKTogTW92ZWQgZnJvbSBXS0VsZW1lbnRBY3Rpb25J
bmZvLgorICAgICAgICAoLVtfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBfYm91bmRpbmdSZWN0XSk6
IEFkZGVkIHByaXZhdGUgYWNjZXNzb3IuCisgICAgICAgICgtW19XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvIF9pbnRlcmFjdGlvbkxvY2F0aW9uXSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oOiBBZGRlZC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKF9XS0VsZW1lbnRBY3Rpb25UeXBlKTogTW92ZWQgZnJvbSBXS0FjdGlvblNoZWV0Lmgg
YW5kIHR1cm5lZCBpbnRvIGEgcHJvcGVyIE5TX0VOVU0uCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLRWxlbWVu
dEFjdGlvbiBfaW5pdFdpdGhUaXRsZTphY3Rpb25IYW5kbGVyOnR5cGU6XSk6IE1vdmVkIGFuZCBy
ZW5hbWVkIGludGVybmFsCisgICAgICAgIGluaXRpYWxpemVyIGZyb20gV0tBY3Rpb25TaGVldC5t
bS4KKyAgICAgICAgKC1bX1dLRWxlbWVudEFjdGlvbiBkZWFsbG9jXSk6IE1vdmVkIGZyb20gV0tB
Y3Rpb25TaGVldC5tbS4KKyAgICAgICAgKCtbX1dLRWxlbWVudEFjdGlvbiBlbGVtZW50QWN0aW9u
V2l0aFRpdGxlOmFjdGlvbkhhbmRsZXI6XSk6IE1vdmVkIGFuZCByZW5hbWVkLgorICAgICAgICAo
Y29weUVsZW1lbnQpOiBNb3ZlZCBmcm9tIFdLQWN0aW9uU2hlZXQubW0uCisgICAgICAgIChzYXZl
SW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKGFkZFRvUmVhZGluZ0xpc3QpOiBEaXR0by4KKyAgICAg
ICAgKCtbX1dLRWxlbWVudEFjdGlvbiBlbGVtZW50QWN0aW9uV2l0aFR5cGU6Y3VzdG9tVGl0bGU6
XSk6IE1vdmVkIGFuZCByZW5hbWVkLgorICAgICAgICAoK1tfV0tFbGVtZW50QWN0aW9uIGVsZW1l
bnRBY3Rpb25XaXRoVHlwZTpdKTogRGl0dG8uCisgICAgICAgICgtW19XS0VsZW1lbnRBY3Rpb24g
X3J1bkFjdGlvbldpdGhFbGVtZW50SW5mbzp2aWV3Ol0pOiBNb3ZlZCBmcm9tIFdLQWN0aW9uU2hl
ZXQubW0uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0VsZW1lbnRBY3Rpb25JbnRl
cm5hbC5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5o
OiBSZW1vdmVkIGRlY2xhcmF0aW9ucyB0aGF0IHdlcmUgbW92ZWQgZWxzZXdoZXJlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbTogUmVtb3ZlZCBjb2RlIHRoYXQgd2Fz
IG1vdmVkIGVsc2V3aGVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWN0aW9uU2hl
ZXQ6Y2xpY2tlZEJ1dHRvbkF0SW5kZXg6XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Np
c3RhbnQgc2hvd0ltYWdlU2hlZXRdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCBzaG93TGlua1NoZWV0XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgc2hv
d0RhdGFEZXRlY3RvcnNTaGVldF0pOgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBBZGRlZCByZWZlcmVuY2VzIHRvIG5ldyBmaWxlcy4gQ2hhbmdlZCB0aGUg
T2JqZWN0aXZlLUMKKyAgICAgICAgY2xhc3MgbmFtZSBjaGVjayB0byBhbGxvdyBfV0sgYXMgYSBj
bGFzcyBuYW1lIHByZWZpeC4KKwogMjAxNC0wMi0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUmV0YWluUHRycyBmb3IgdHdvIFdLQ29udGVu
dFZpZXcgZGF0YSBtZW1iZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRF
bGVtZW50SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQK
KworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK1dLX0FQSV9DTEFTUworQGlu
dGVyZmFjZSBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKlVSTDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgTlNTdHJpbmcgKnRpdGxlOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0
ZWRFbGVtZW50SW5mby5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbXBs
ZW1lbnRhdGlvbiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAgeworICAgIFJldGFpblB0cjxOU1VS
TD4gX1VSTDsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF90aXRsZTsKKyAgICBDR1BvaW50IF9p
bnRlcmFjdGlvbkxvY2F0aW9uOworICAgIENHUmVjdCBfYm91bmRpbmdSZWN0OworfQorCistIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoVVJMOihOU1VSTCAqKXVybCBsb2NhdGlvbjooQ0dQb2ludCls
b2NhdGlvbiB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSByZWN0OihDR1JlY3QpcmVjdAoreworICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
X1VSTCA9IGFkb3B0TlMoW3VybCBjb3B5XSk7CisgICAgX2ludGVyYWN0aW9uTG9jYXRpb24gPSBs
b2NhdGlvbjsKKyAgICBfdGl0bGUgPSBhZG9wdE5TKFt0aXRsZSBjb3B5XSk7CisgICAgX2JvdW5k
aW5nUmVjdCA9IHJlY3Q7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoTlNVUkwgKilVUkwK
K3sKKyAgICByZXR1cm4gX1VSTC5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKil0aXRsZQorewor
ICAgIHJldHVybiBfdGl0bGUuZ2V0KCk7Cit9CisKKy0gKENHUmVjdClfYm91bmRpbmdSZWN0Cit7
CisgICAgcmV0dXJuIF9ib3VuZGluZ1JlY3Q7Cit9CisKKy0gKENHUG9pbnQpX2ludGVyYWN0aW9u
TG9jYXRpb24KK3sKKyAgICByZXR1cm4gX2ludGVyYWN0aW9uTG9jYXRpb247Cit9CisKK0BlbmQK
KworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvSW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mby5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFjZSBfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyAoKQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoVVJMOihOU1VS
TCAqKXVybCBsb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiB0aXRsZTooTlNTdHJpbmcgKil0aXRs
ZSByZWN0OihDR1JlY3QpcmVjdDsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBD
R1BvaW50IF9pbnRlcmFjdGlvbkxvY2F0aW9uOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBDR1JlY3QgX2JvdW5kaW5nUmVjdDsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVu
dEFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRWxlbWVudEFjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+
CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaWYgVEFSR0VUX09TX0lQSE9ORQorCisjaW1wb3J0
IDxXZWJLaXQyL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisKK3R5cGVkZWYgdm9pZCAoXldL
RWxlbWVudEFjdGlvbkhhbmRsZXIpKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopOworCit0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tFbGVtZW50QWN0aW9uVHlwZSkgeworICAgIF9XS0Vs
ZW1lbnRBY3Rpb25UeXBlQ3VzdG9tLAorICAgIF9XS0VsZW1lbnRBY3Rpb25UeXBlT3BlbiwKKyAg
ICBfV0tFbGVtZW50QWN0aW9uVHlwZUNvcHksCisgICAgX1dLRWxlbWVudEFjdGlvblR5cGVTYXZl
SW1hZ2UsCisgICAgX1dLRWxlbWVudEFjdGlvblR5cGVBZGRUb1JlYWRpbmdMaXN0LAorfTsKKwor
V0tfQVBJX0NMQVNTCitAaW50ZXJmYWNlIF9XS0VsZW1lbnRBY3Rpb24gOiBOU09iamVjdAorCisr
IChpbnN0YW5jZXR5cGUpZWxlbWVudEFjdGlvbldpdGhUeXBlOihfV0tFbGVtZW50QWN0aW9uVHlw
ZSl0eXBlOworKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVu
dEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKil0aXRsZTsKKworKyAoaW5z
dGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgYWN0aW9u
SGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5kbGVyOworCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIF9XS0VsZW1lbnRBY3Rpb25UeXBlIHR5cGU7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nKiB0aXRsZTsKKworQGVuZAorCisjZW5kaWYg
Ly8gVEFSR0VUX09TX0lQSE9ORQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRB
Y3Rpb24ubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0VsZW1lbnRBY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rp
b25JbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIFBMQVRGT1JNKElPUykK
KworI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCisjaW1wb3J0ICJXS0dlc3R1cmVUeXBlcy5oIgor
I2ltcG9ydCA8U2FmYXJpU2VydmljZXMvU1NSZWFkaW5nTGlzdC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworU09GVF9MSU5LX0ZSQU1FV09SSyhTYWZhcmlTZXJ2aWNlcyk7CitTT0ZUX0xJTktfQ0xBU1Mo
U2FmYXJpU2VydmljZXMsIFNTUmVhZGluZ0xpc3QpOworCit0eXBlZGVmIHZvaWQgKF5XS0VsZW1l
bnRBY3Rpb25IYW5kbGVySW50ZXJuYWwpKFdLQ29udGVudFZpZXcgKiwgX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gKik7CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tFbGVtZW50QWN0aW9uICB7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBfdGl0bGU7CisgICAgV0tFbGVtZW50QWN0aW9uSGFuZGxlcklu
dGVybmFsIF9hY3Rpb25IYW5kbGVyOworfQorCistIChpZClfaW5pdFdpdGhUaXRsZTooTlNTdHJp
bmcgKil0aXRsZSBhY3Rpb25IYW5kbGVyOihXS0VsZW1lbnRBY3Rpb25IYW5kbGVySW50ZXJuYWwp
aGFuZGxlciB0eXBlOihfV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlCit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfdGl0bGUgPSBh
ZG9wdE5TKFt0aXRsZSBjb3B5XSk7CisgICAgX3R5cGUgPSB0eXBlOworICAgIF9hY3Rpb25IYW5k
bGVyID0gW2hhbmRsZXIgY29weV07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVh
bGxvYworeworICAgIFtfYWN0aW9uSGFuZGxlciByZWxlYXNlXTsKKworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5TU3Ry
aW5nICopdGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5kbGVy
Cit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlv
bkhhbmRsZXI6XihXS0NvbnRlbnRWaWV3ICp2aWV3LCBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAq
YWN0aW9uSW5mbykgeyBoYW5kbGVyKGFjdGlvbkluZm8pOyB9CisgICAgICAgdHlwZTpfV0tFbGVt
ZW50QWN0aW9uVHlwZUN1c3RvbV0gYXV0b3JlbGVhc2VdOworfQorCitzdGF0aWMgdm9pZCBjb3B5
RWxlbWVudChXS0NvbnRlbnRWaWV3ICp2aWV3KQoreworICAgIFt2aWV3IF9wZXJmb3JtQWN0aW9u
OldlYktpdDo6V0tTaGVldEFjdGlvbkNvcHldOworfQorCitzdGF0aWMgdm9pZCBzYXZlSW1hZ2Uo
V0tDb250ZW50VmlldyAqdmlldykKK3sKKyAgICBbdmlldyBfcGVyZm9ybUFjdGlvbjpXZWJLaXQ6
OldLU2hlZXRBY3Rpb25TYXZlSW1hZ2VdOworfQorCitzdGF0aWMgdm9pZCBhZGRUb1JlYWRpbmdM
aXN0KE5TVVJMICp0YXJnZXRVUkwsIE5TU3RyaW5nICp0aXRsZSkKK3sKKyAgICBpZiAoIXRpdGxl
IHx8IFt0aXRsZSBsZW5ndGhdID09IDApCisgICAgICAgIHRpdGxlID0gW3RhcmdldFVSTCBhYnNv
bHV0ZVN0cmluZ107CisKKyAgICBbW2dldFNTUmVhZGluZ0xpc3RDbGFzcygpIGRlZmF1bHRSZWFk
aW5nTGlzdF0gYWRkUmVhZGluZ0xpc3RJdGVtV2l0aFVSTDp0YXJnZXRVUkwgdGl0bGU6dGl0bGUg
cHJldmlld1RleHQ6bmlsIGVycm9yOm5pbF07Cit9CisKKysgKGluc3RhbmNldHlwZSllbGVtZW50
QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE5T
U3RyaW5nICopY3VzdG9tVGl0bGUKK3sKKyAgICBOU1N0cmluZyAqdGl0bGU7CisgICAgV0tFbGVt
ZW50QWN0aW9uSGFuZGxlckludGVybmFsIGhhbmRsZXI7CisgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBfV0tFbGVtZW50QWN0aW9uVHlwZUNvcHk6CisgICAgICAgIHRpdGxlID0gV0VCX1VJ
X1NUUklOR19LRVkoIkNvcHkiLCAiQ29weSBBY3Rpb25TaGVldCBMaW5rIiwgIlRpdGxlIGZvciBD
b3B5IExpbmsgb3IgSW1hZ2UgYWN0aW9uIGJ1dHRvbiIpOworICAgICAgICBoYW5kbGVyID0gXihX
S0NvbnRlbnRWaWV3ICp2aWV3LCBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5mbykg
eworICAgICAgICAgICAgY29weUVsZW1lbnQodmlldyk7CisgICAgICAgIH07CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgX1dLRWxlbWVudEFjdGlvblR5cGVPcGVuOgorICAgICAgICB0aXRsZSA9
IFdFQl9VSV9TVFJJTkdfS0VZKCJPcGVuIiwgIk9wZW4gQWN0aW9uU2hlZXQgTGluayIsICJUaXRs
ZSBmb3IgT3BlbiBMaW5rIGFjdGlvbiBidXR0b24iKTsKKyAgICAgICAgaGFuZGxlciA9IF4oV0tD
b250ZW50VmlldyAqdmlldywgX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8pIHsK
KyAgICAgICAgICAgIFt2aWV3IF9hdHRlbXB0Q2xpY2tBdExvY2F0aW9uOmFjdGlvbkluZm8uX2lu
dGVyYWN0aW9uTG9jYXRpb25dOworICAgICAgICB9OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IF9XS0VsZW1lbnRBY3Rpb25UeXBlU2F2ZUltYWdlOgorICAgICAgICB0aXRsZSA9IFdFQl9VSV9T
VFJJTkdfS0VZKCJTYXZlIEltYWdlIiwgIlNhdmUgSW1hZ2UiLCAiVGl0bGUgZm9yIFNhdmUgSW1h
Z2UgYWN0aW9uIGJ1dHRvbiIpOworICAgICAgICBoYW5kbGVyID0gXihXS0NvbnRlbnRWaWV3ICp2
aWV3LCBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5mbykgeworICAgICAgICAgICAg
c2F2ZUltYWdlKHZpZXcpOworICAgICAgICB9OworICAgICAgICBicmVhazsKKyAgICBjYXNlIF9X
S0VsZW1lbnRBY3Rpb25UeXBlQWRkVG9SZWFkaW5nTGlzdDoKKyAgICAgICAgdGl0bGUgPSBXRUJf
VUlfU1RSSU5HKCJBZGQgdG8gUmVhZGluZyBMaXN0IiwgIlRpdGxlIGZvciBBZGQgdG8gUmVhZGlu
ZyBMaXN0IGFjdGlvbiBidXR0b24iKTsKKyAgICAgICAgaGFuZGxlciA9IF4oV0tDb250ZW50Vmll
dyAqdmlldywgX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8pIHsKKyAgICAgICAg
ICAgIGFkZFRvUmVhZGluZ0xpc3QoYWN0aW9uSW5mby5VUkwsIGFjdGlvbkluZm8udGl0bGUpOwor
ICAgICAgICB9OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVGhlcmUgaXMg
bm8gc3RhbmRhcmQgd2ViIGVsZW1lbnQgYWN0aW9uIG9mIHR5cGUgJWxkLiIsIHR5cGVdOworICAg
ICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5p
dFdpdGhUaXRsZTooY3VzdG9tVGl0bGUgPyBjdXN0b21UaXRsZSA6IHRpdGxlKSBhY3Rpb25IYW5k
bGVyOmhhbmRsZXIgdHlwZTp0eXBlXSBhdXRvcmVsZWFzZV07Cit9CisKKysgKGluc3RhbmNldHlw
ZSllbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUKK3sKKyAg
ICByZXR1cm4gW3NlbGYgZWxlbWVudEFjdGlvbldpdGhUeXBlOnR5cGUgY3VzdG9tVGl0bGU6bmls
XTsKK30KKworLSAoTlNTdHJpbmcgKil0aXRsZQoreworICAgIHJldHVybiBfdGl0bGUuZ2V0KCk7
Cit9CisKKy0gKHZvaWQpX3J1bkFjdGlvbldpdGhFbGVtZW50SW5mbzooX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gKilpbmZvIHZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3Cit7CisgICAgX2FjdGlv
bkhhbmRsZXIodmlldywgaW5mbyk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbkludGVy
bmFsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tFbGVtZW50QWN0aW9uLmgiCisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaWYgUExBVEZPUk0oSU9TKQorCitAY2xhc3MgV0tDb250ZW50VmlldzsK
KworQGludGVyZmFjZSBfV0tFbGVtZW50QWN0aW9uICgpCisKKy0gKHZvaWQpX3J1bkFjdGlvbldp
dGhFbGVtZW50SW5mbzooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKilpbmZvIHZpZXc6KFdLQ29u
dGVudFZpZXcgKil2aWV3OworCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0FjdGlvblNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0FjdGlvblNoZWV0LmgJKHJldmlzaW9uIDE2NDYyMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw2IEBACiAKICNpbXBvcnQgPFVJS2l0L1VJQWN0aW9uU2hlZXQuaD4KICNpbXBvcnQgPFVJS2l0
L1VJUG9wb3ZlckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYktpdDIvV0tEZWNsYXJhdGlvblNw
ZWNpZmllcnMuaD4KIAogQHByb3RvY29sIFdLQWN0aW9uU2hlZXREZWxlZ2F0ZTsKIEBjbGFzcyBX
S0NvbnRlbnRWaWV3OwpAQCAtNDEsNDMgKzQwLDkgQEAKIC0gKHZvaWQpdXBkYXRlU2hlZXRQb3Np
dGlvbjsKIEBlbmQKIAotCiBAcHJvdG9jb2wgV0tBY3Rpb25TaGVldERlbGVnYXRlPFVJQWN0aW9u
U2hlZXREZWxlZ2F0ZT4KIEByZXF1aXJlZAogLSAoVUlWaWV3ICopaG9zdFZpZXdGb3JTaGVldDsK
IC0gKENHUmVjdClpbml0aWFsUHJlc2VudGF0aW9uUmVjdEluSG9zdFZpZXdGb3JTaGVldDsKIC0g
KENHUmVjdClwcmVzZW50YXRpb25SZWN0SW5Ib3N0Vmlld0ZvclNoZWV0OwogQGVuZAotCi0vLyBF
bGVtZW50cyB0byBkZXNjcmliZSBhY3Rpb24gc2hlZXQgY29udGVudC4KLQotV0tfRVhQT1JUIEBp
bnRlcmZhY2UgV0tFbGVtZW50QWN0aW9uSW5mbyA6IE5TT2JqZWN0Ci0KLS0gKFdLRWxlbWVudEFj
dGlvbkluZm8gKilpbml0V2l0aEluZm86KE5TVVJMICopdXJsIGxvY2F0aW9uOihDR1BvaW50KWxv
Y2F0aW9uIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHJlY3Q6KENHUmVjdClyZWN0OwotQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1BvaW50IGludGVyYWN0aW9uTG9jYXRpb247Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICp1cmw7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp0aXRsZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQ0dSZWN0IGJvdW5kaW5nUmVjdDsKLUBlbmQKLQotdHlwZWRlZiB2b2lkIChe
V0tFbGVtZW50QWN0aW9uSGFuZGxlcikoV0tFbGVtZW50QWN0aW9uSW5mbyAqKTsKLXR5cGVkZWYg
dm9pZCAoXldLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCkoV0tDb250ZW50VmlldyAqLCBX
S0VsZW1lbnRBY3Rpb25JbmZvICopOwotCi10eXBlZGVmIGVudW0gewotICAgIFdLRWxlbWVudEFj
dGlvblR5cGVDdXN0b20gPSAwLAotICAgIFdLRWxlbWVudEFjdGlvblR5cGVPcGVuLAotICAgIFdL
RWxlbWVudEFjdGlvblR5cGVDb3B5LAotICAgIFdLRWxlbWVudEFjdGlvblR5cGVTYXZlSW1hZ2Us
Ci0gICAgV0tFbGVtZW50QWN0aW9uVHlwZUFkZFRvUmVhZGluZ0xpc3QsCi19IFdLRWxlbWVudEFj
dGlvblR5cGU7Ci0KLVdLX0VYUE9SVCBAaW50ZXJmYWNlIFdLRWxlbWVudEFjdGlvbiA6IE5TT2Jq
ZWN0Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLRWxlbWVudEFjdGlvblR5cGUg
dHlwZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcqIHRpdGxlOwot
Ci0rIChXS0VsZW1lbnRBY3Rpb24gKiljdXN0b21FbGVtZW50QWN0aW9uV2l0aFRpdGxlOihOU1N0
cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXIpaGFuZGxl
cjsKLSsgKFdLRWxlbWVudEFjdGlvbiAqKXN0YW5kYXJkRWxlbWVudEFjdGlvbldpdGhUeXBlOihX
S0VsZW1lbnRBY3Rpb25UeXBlKXR5cGU7Ci0rIChXS0VsZW1lbnRBY3Rpb24gKilzdGFuZGFyZEVs
ZW1lbnRBY3Rpb25XaXRoVHlwZTooV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIGN1c3RvbVRpdGxl
OihOU1N0cmluZyAqKXRpdGxlOwotLSAodm9pZClydW5BY3Rpb25XaXRoRWxlbWVudEluZm86KFdL
RWxlbWVudEFjdGlvbkluZm8gKilpbmZvIHZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OwotCi1A
ZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0
Lm1tCShyZXZpc2lvbiAxNjQ2MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
QWN0aW9uU2hlZXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDI5ICsyNiwxMyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS0FjdGlvblNoZWV0LmgiCiAKLSNpbXBvcnQgIldLR2Vz
dHVyZVR5cGVzLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKLSNpbXBv
cnQgPFNhZmFyaVNlcnZpY2VzL1NTUmVhZGluZ0xpc3QuaD4KICNpbXBvcnQgPFVJS2l0L1VJQWN0
aW9uU2hlZXRfUHJpdmF0ZS5oPgotI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAjaW1wb3J0IDxV
SUtpdC9VSVdpbmRvd19Qcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1TT0ZUX0xJTktfRlJB
TUVXT1JLKFNhZmFyaVNlcnZpY2VzKTsKLVNPRlRfTElOS19DTEFTUyhTYWZhcmlTZXJ2aWNlcywg
U1NSZWFkaW5nTGlzdCk7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLUBpbnRlcmZhY2Ug
V0tFbGVtZW50QWN0aW9uKFByaXZhdGUpCi0tICh2b2lkKV9ydW5BY3Rpb25XaXRoRWxlbWVudDoo
TlNVUkwgKil0YXJnZXRVUkwgZG9jdW1lbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBpbnRl
cmFjdGlvbkxvY2F0aW9uOihDR1BvaW50KWludGVyYWN0aW9uTG9jYXRpb247Ci1AZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXS0FjdGlvblNoZWV0IHsKLSAgICBpZDxXS0FjdGlvblNoZWV0RGVsZWdh
dGU+IF9zaGVldERlbGVnYXRlOwotICAgIGlkPFVJQWN0aW9uU2hlZXREZWxlZ2F0ZT4gX2RlbGVn
YXRlV2hpbGVSb3RhdGluZzsKKyAgICBpZCA8V0tBY3Rpb25TaGVldERlbGVnYXRlPiBfc2hlZXRE
ZWxlZ2F0ZTsKKyAgICBpZCA8VUlBY3Rpb25TaGVldERlbGVnYXRlPiBfZGVsZWdhdGVXaGlsZVJv
dGF0aW5nOwogICAgIFdLQ29udGVudFZpZXcgKl92aWV3OwogICAgIFVJUG9wb3ZlckFycm93RGly
ZWN0aW9uIF9hcnJvd0RpcmVjdGlvbnM7CiAgICAgQk9PTCBfaXNSb3RhdGluZzsKQEAgLTE3Mywx
MjggKzE1NywzIEBAIC0gKHZvaWQpZGlkUm90YXRlCiB9CiAKIEBlbmQKLQotQGltcGxlbWVudGF0
aW9uIFdLRWxlbWVudEFjdGlvbkluZm8gIHsKLSAgICBDR1BvaW50IF9pbnRlcmFjdGlvbkxvY2F0
aW9uOwotICAgIE5TVVJMICpfdXJsOwotICAgIE5TU3RyaW5nICpfdGl0bGU7Ci0gICAgQ0dSZWN0
IF9ib3VuZGluZ1JlY3Q7Ci0gICAgQ0dJbWFnZVJlZiBfc25hcHNob3Q7Ci19Ci0KLS0gKFdLRWxl
bWVudEFjdGlvbkluZm8gKikgaW5pdFdpdGhJbmZvOihOU1VSTCAqKXVybCBsb2NhdGlvbjooQ0dQ
b2ludClsb2NhdGlvbiB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSByZWN0OihDR1JlY3QpcmVjdAot
ewotICAgIF91cmwgPSBbdXJsIGNvcHldOwotICAgIF9pbnRlcmFjdGlvbkxvY2F0aW9uID0gbG9j
YXRpb247Ci0gICAgX3RpdGxlID0gW3RpdGxlIGNvcHldOwotICAgIF9ib3VuZGluZ1JlY3QgPSBy
ZWN0OwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtf
dGl0bGUgcmVsZWFzZV07Ci0gICAgW191cmwgcmVsZWFzZV07Ci0gICAgCi0gICAgW3N1cGVyIGRl
YWxsb2NdOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0VsZW1lbnRBY3Rpb24gIHsK
LSAgICBOU1N0cmluZyAqX3RpdGxlOwotICAgIFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5h
bCBfYWN0aW9uSGFuZGxlcjsKLSAgICBXS0VsZW1lbnRBY3Rpb25UeXBlIF90eXBlOwotfQotCi0t
IChpZClpbml0V2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxl
bWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCloYW5kbGVyIHR5cGU6KFdLRWxlbWVudEFjdGlvblR5
cGUpdHlwZQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIF90aXRsZSA9IFt0aXRsZSBjb3B5XTsKLSAgICBfdHlwZSA9IHR5cGU7Ci0g
ICAgX2FjdGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGhhbmRsZXIpOwotICAgIHJldHVybiBzZWxm
OwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX3RpdGxlIHJlbGVhc2VdOwotICAgIFtf
YWN0aW9uSGFuZGxlciByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLSsgKFdL
RWxlbWVudEFjdGlvbiAqKWN1c3RvbUVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5TU3RyaW5nICop
dGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5kbGVyCi17Ci0g
ICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoVGl0bGU6dGl0bGUKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uSGFuZGxlcjpeKFdLQ29udGVudFZpZXcgKnZpZXcsIFdLRWxl
bWVudEFjdGlvbkluZm8gKmFjdGlvbkluZm8pIHsgaGFuZGxlcihhY3Rpb25JbmZvKTsgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOldLRWxlbWVudEFjdGlvblR5cGVD
dXN0b21dIGF1dG9yZWxlYXNlXTsKLX0KLQotc3RhdGljIHZvaWQgY29weUVsZW1lbnQoV0tDb250
ZW50VmlldyAqdmlldykKLXsKLSAgICBbdmlldyBfcGVyZm9ybUFjdGlvbjpXZWJLaXQ6OldLU2hl
ZXRBY3Rpb25Db3B5XTsKLX0KLQotc3RhdGljIHZvaWQgc2F2ZUltYWdlKFdLQ29udGVudFZpZXcg
KnZpZXcpCi17Ci0gICAgW3ZpZXcgX3BlcmZvcm1BY3Rpb246V2ViS2l0OjpXS1NoZWV0QWN0aW9u
U2F2ZUltYWdlXTsKLX0KLQotc3RhdGljIHZvaWQgYWRkVG9SZWFkaW5nTGlzdChOU1VSTCAqdGFy
Z2V0VVJMLCBOU1N0cmluZyAqdGl0bGUpCi17Ci0gICAgaWYgKCF0aXRsZSB8fCBbdGl0bGUgbGVu
Z3RoXSA9PSAwKQotICAgICAgICB0aXRsZSA9IFt0YXJnZXRVUkwgYWJzb2x1dGVTdHJpbmddOwot
Ci0gICAgW1tnZXRTU1JlYWRpbmdMaXN0Q2xhc3MoKSBkZWZhdWx0UmVhZGluZ0xpc3RdIGFkZFJl
YWRpbmdMaXN0SXRlbVdpdGhVUkw6dGFyZ2V0VVJMIHRpdGxlOnRpdGxlIHByZXZpZXdUZXh0Om5p
bCBlcnJvcjpuaWxdOwotfQotCi0rIChXS0VsZW1lbnRBY3Rpb24gKilzdGFuZGFyZEVsZW1lbnRB
Y3Rpb25XaXRoVHlwZTooV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIGN1c3RvbVRpdGxlOihOU1N0
cmluZyAqKWN1c3RvbVRpdGxlCi17Ci0gICAgTlNTdHJpbmcgKnRpdGxlOwotICAgIFdLRWxlbWVu
dEFjdGlvbkhhbmRsZXJJbnRlcm5hbCBoYW5kbGVyOwotICAgIHN3aXRjaCAodHlwZSkgewotICAg
IGNhc2UgV0tFbGVtZW50QWN0aW9uVHlwZUNvcHk6Ci0gICAgICAgIHRpdGxlID0gV0VCX1VJX1NU
UklOR19LRVkoIkNvcHkiLCAiQ29weSBBY3Rpb25TaGVldCBMaW5rIiwgIlRpdGxlIGZvciBDb3B5
IExpbmsgb3IgSW1hZ2UgYWN0aW9uIGJ1dHRvbiIpOwotICAgICAgICBoYW5kbGVyID0gXihXS0Nv
bnRlbnRWaWV3ICp2aWV3LCBXS0VsZW1lbnRBY3Rpb25JbmZvICphY3Rpb25JbmZvKSB7Ci0gICAg
ICAgICAgICBjb3B5RWxlbWVudCh2aWV3KTsKLSAgICAgICAgfTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBXS0VsZW1lbnRBY3Rpb25UeXBlT3BlbjoKLSAgICAgICAgdGl0bGUgPSBXRUJfVUlf
U1RSSU5HX0tFWSgiT3BlbiIsICJPcGVuIEFjdGlvblNoZWV0IExpbmsiLCAiVGl0bGUgZm9yIE9w
ZW4gTGluayBhY3Rpb24gYnV0dG9uIik7Ci0gICAgICAgIGhhbmRsZXIgPSBeKFdLQ29udGVudFZp
ZXcgKnZpZXcsIFdLRWxlbWVudEFjdGlvbkluZm8gKmFjdGlvbkluZm8pIHsKLSAgICAgICAgICAg
IFt2aWV3IF9hdHRlbXB0Q2xpY2tBdExvY2F0aW9uOmFjdGlvbkluZm8uaW50ZXJhY3Rpb25Mb2Nh
dGlvbl07Ci0gICAgICAgIH07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0tFbGVtZW50QWN0
aW9uVHlwZVNhdmVJbWFnZToKLSAgICAgICAgdGl0bGUgPSBXRUJfVUlfU1RSSU5HX0tFWSgiU2F2
ZSBJbWFnZSIsICJTYXZlIEltYWdlIiwgIlRpdGxlIGZvciBTYXZlIEltYWdlIGFjdGlvbiBidXR0
b24iKTsKLSAgICAgICAgaGFuZGxlciA9IF4oV0tDb250ZW50VmlldyAqdmlldywgV0tFbGVtZW50
QWN0aW9uSW5mbyAqYWN0aW9uSW5mbykgewotICAgICAgICAgICAgc2F2ZUltYWdlKHZpZXcpOwot
ICAgICAgICB9OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdLRWxlbWVudEFjdGlvblR5cGVB
ZGRUb1JlYWRpbmdMaXN0OgotICAgICAgICB0aXRsZSA9IFdFQl9VSV9TVFJJTkcoIkFkZCB0byBS
ZWFkaW5nIExpc3QiLCAiVGl0bGUgZm9yIEFkZCB0byBSZWFkaW5nIExpc3QgYWN0aW9uIGJ1dHRv
biIpOwotICAgICAgICBoYW5kbGVyID0gXihXS0NvbnRlbnRWaWV3ICp2aWV3LCBXS0VsZW1lbnRB
Y3Rpb25JbmZvICphY3Rpb25JbmZvKSB7Ci0gICAgICAgICAgICBhZGRUb1JlYWRpbmdMaXN0KGFj
dGlvbkluZm8udXJsLCBhY3Rpb25JbmZvLnRpdGxlKTsKLSAgICAgICAgfTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRoZXJlIGlzIG5vIHN0YW5kYXJkIHdlYiBlbGVtZW50
IGFjdGlvbiBvZiB0eXBlICVkLiIsIHR5cGVdOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0K
LSAgICByZXR1cm4gW1tbV0tFbGVtZW50QWN0aW9uIGFsbG9jXSBpbml0V2l0aFRpdGxlOihjdXN0
b21UaXRsZSA/IGN1c3RvbVRpdGxlIDogdGl0bGUpIGFjdGlvbkhhbmRsZXI6aGFuZGxlciB0eXBl
OnR5cGVdIGF1dG9yZWxlYXNlXTsKLX0KLQotKyAoV0tFbGVtZW50QWN0aW9uICopc3RhbmRhcmRF
bGVtZW50QWN0aW9uV2l0aFR5cGU6KFdLRWxlbWVudEFjdGlvblR5cGUpdHlwZQotewotICAgIHJl
dHVybiBbc2VsZiBzdGFuZGFyZEVsZW1lbnRBY3Rpb25XaXRoVHlwZTp0eXBlIGN1c3RvbVRpdGxl
Om5pbF07Ci19Ci0KLS0gKHZvaWQpcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihXS0VsZW1lbnRB
Y3Rpb25JbmZvICopaW5mbyB2aWV3OihXS0NvbnRlbnRWaWV3ICopdmlldwotewotICAgIF9hY3Rp
b25IYW5kbGVyKHZpZXcsIGluZm8pOwotfQotQGVuZAotCi0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHJl
dmlzaW9uIDE2NDYyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25T
aGVldEFzc2lzdGFudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS0FjdGlvblNoZWV0QXNzaXN0YW50LmgiCiAKKyNpbXBv
cnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0VsZW1l
bnRBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tBY3Rpb25TaGVldC5oIgogI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAg
LTUxLDEwICs1Myw2IEBAIFNPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2aWNlUGhvdG8K
IFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpCiBTT0ZUX0xJTktf
Q0xBU1MoRGF0YURldGVjdG9yc1VJLCBERERldGVjdGlvbkNvbnRyb2xsZXIpCiAKLUBpbnRlcmZh
Y2UgV0tFbGVtZW50QWN0aW9uKFByaXZhdGUpCi0tICh2b2lkKV9ydW5BY3Rpb25XaXRoRWxlbWVu
dDooTlNVUkwgKil0YXJnZXRVUkwgZG9jdW1lbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBp
bnRlcmFjdGlvbkxvY2F0aW9uOihDR1BvaW50KWludGVyYWN0aW9uTG9jYXRpb247Ci1AZW5kCi0K
IEBpbXBsZW1lbnRhdGlvbiBXS0FjdGlvblNoZWV0QXNzaXN0YW50IHsKICAgICBSZXRhaW5QdHI8
V0tBY3Rpb25TaGVldD4gX2ludGVyYWN0aW9uU2hlZXQ7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+
IF9lbGVtZW50QWN0aW9uczsKQEAgLTE1NywxMSArMTU1LDkgQEAgLSAodm9pZClhY3Rpb25TaGVl
dDooVUlBY3Rpb25TaGVldCAqKWFjdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoX2VsZW1l
bnRBY3Rpb25zICYmIGJ1dHRvbkluZGV4IDwgKE5TSW50ZWdlcilbX2VsZW1lbnRBY3Rpb25zIGNv
dW50XSkgewotICAgICAgICBXS0VsZW1lbnRBY3Rpb25JbmZvKiBhY3Rpb25JbmZvID0gW1tXS0Vs
ZW1lbnRBY3Rpb25JbmZvIGFsbG9jXSBpbml0V2l0aEluZm86W05TVVJMIFVSTFdpdGhTdHJpbmc6
X3ZpZXcucG9zaXRpb25JbmZvcm1hdGlvbi51cmxdCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlv
bjpfdmlldy5wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aXRsZTpfdmlldy5wb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVjdDpfdmlldy5wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kc107Ci0gICAgICAgIFtbX2Vs
ZW1lbnRBY3Rpb25zIG9iamVjdEF0SW5kZXg6YnV0dG9uSW5kZXhdIHJ1bkFjdGlvbldpdGhFbGVt
ZW50SW5mbzphY3Rpb25JbmZvIHZpZXc6X3ZpZXddOworICAgICAgICBfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mbyAqYWN0aW9uSW5mbyA9IFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9p
bml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpfdmlldy5wb3NpdGlvbkluZm9ybWF0aW9u
LnVybF0KKyAgICAgICAgICAgIGxvY2F0aW9uOl92aWV3LnBvc2l0aW9uSW5mb3JtYXRpb24ucG9p
bnQgdGl0bGU6X3ZpZXcucG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSByZWN0Ol92aWV3LnBvc2l0
aW9uSW5mb3JtYXRpb24uYm91bmRzXTsKKyAgICAgICAgW1tfZWxlbWVudEFjdGlvbnMgb2JqZWN0
QXRJbmRleDpidXR0b25JbmRleF0gX3J1bkFjdGlvbldpdGhFbGVtZW50SW5mbzphY3Rpb25JbmZv
IHZpZXc6X3ZpZXddOwogICAgICAgICBbYWN0aW9uSW5mbyByZWxlYXNlXTsKICAgICB9CiAKQEAg
LTIwOSw3ICsyMDUsNyBAQCAtICh2b2lkKV9jcmVhdGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczoo
CiAgICAgfQogCiAgICAgX2VsZW1lbnRBY3Rpb25zID0gYWRvcHROUyhbYWN0aW9ucyBjb3B5XSk7
Ci0gICAgZm9yIChXS0VsZW1lbnRBY3Rpb24gKmFjdGlvbiBpbiBfZWxlbWVudEFjdGlvbnMuZ2V0
KCkpCisgICAgZm9yIChfV0tFbGVtZW50QWN0aW9uICphY3Rpb24gaW4gX2VsZW1lbnRBY3Rpb25z
LmdldCgpKQogICAgICAgICBbX2ludGVyYWN0aW9uU2hlZXQgYWRkQnV0dG9uV2l0aFRpdGxlOlth
Y3Rpb24gdGl0bGVdXTsKIAogICAgIFtfaW50ZXJhY3Rpb25TaGVldCBzZXRDYW5jZWxCdXR0b25J
bmRleDpbX2ludGVyYWN0aW9uU2hlZXQgYWRkQnV0dG9uV2l0aFRpdGxlOldFQl9VSV9TVFJJTkdf
S0VZKCJDYW5jZWwiLCAiQ2FuY2VsIGJ1dHRvbiBsYWJlbCBpbiBidXR0b24gYmFyIiwgIlRpdGxl
IGZvciBDYW5jZWwgYnV0dG9uIGxhYmVsIGluIGJ1dHRvbiBiYXIiKV1dOwpAQCAtMjIzLDEzICsy
MTksMTMgQEAgLSAodm9pZClzaG93SW1hZ2VTaGVldAogICAgIE5TVVJMICp0YXJnZXRVUkwgPSBb
TlNVUkwgVVJMV2l0aFN0cmluZzpfdmlldy5wb3NpdGlvbkluZm9ybWF0aW9uLnVybF07CiAgICAg
TlNNdXRhYmxlQXJyYXkgKmFjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgIGlm
ICghX3ZpZXcucG9zaXRpb25JbmZvcm1hdGlvbi51cmwuaXNFbXB0eSgpKQotICAgICAgICBbYWN0
aW9ucyBhZGRPYmplY3Q6W1dLRWxlbWVudEFjdGlvbiBzdGFuZGFyZEVsZW1lbnRBY3Rpb25XaXRo
VHlwZTpXS0VsZW1lbnRBY3Rpb25UeXBlT3Blbl1dOworICAgICAgICBbYWN0aW9ucyBhZGRPYmpl
Y3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rp
b25UeXBlT3Blbl1dOwogICAgIGlmIChbZ2V0U1NSZWFkaW5nTGlzdENsYXNzKCkgc3VwcG9ydHNV
Ukw6dGFyZ2V0VVJMXSkKLSAgICAgICAgW2FjdGlvbnMgYWRkT2JqZWN0OltXS0VsZW1lbnRBY3Rp
b24gc3RhbmRhcmRFbGVtZW50QWN0aW9uV2l0aFR5cGU6V0tFbGVtZW50QWN0aW9uVHlwZUFkZFRv
UmVhZGluZ0xpc3RdXTsKKyAgICAgICAgW2FjdGlvbnMgYWRkT2JqZWN0OltfV0tFbGVtZW50QWN0
aW9uIGVsZW1lbnRBY3Rpb25XaXRoVHlwZTpfV0tFbGVtZW50QWN0aW9uVHlwZUFkZFRvUmVhZGlu
Z0xpc3RdXTsKICAgICBpZiAoVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlUGhvdG9z
KCksIE5VTEwpICE9IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQpCi0gICAgICAgIFthY3Rpb25z
IGFkZE9iamVjdDpbV0tFbGVtZW50QWN0aW9uIHN0YW5kYXJkRWxlbWVudEFjdGlvbldpdGhUeXBl
OldLRWxlbWVudEFjdGlvblR5cGVTYXZlSW1hZ2VdXTsKKyAgICAgICAgW2FjdGlvbnMgYWRkT2Jq
ZWN0OltfV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rpb25XaXRoVHlwZTpfV0tFbGVtZW50QWN0
aW9uVHlwZVNhdmVJbWFnZV1dOwogICAgIGlmICghW1t0YXJnZXRVUkwgc2NoZW1lXSBsZW5ndGhd
IHx8IFtbdGFyZ2V0VVJMIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImphdmFzY3Jp
cHQiXSAhPSBOU09yZGVyZWRTYW1lKQotICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxl
bWVudEFjdGlvbiBzdGFuZGFyZEVsZW1lbnRBY3Rpb25XaXRoVHlwZTpXS0VsZW1lbnRBY3Rpb25U
eXBlQ29weV1dOworICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24g
ZWxlbWVudEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlQ29weV1dOwogCiAgICAg
Ly8gRklYTUU6IEFkZCBjYWxsIHRvIGRlbGVnYXRlIHRvIGFkZCBjdXN0b20gYWN0aW9ucy4KIApA
QCAtMjQ5LDExICsyNDUsMTEgQEAgLSAodm9pZClzaG93TGlua1NoZWV0CiAgICAgICAgIHJldHVy
bjsKIAogICAgIE5TTXV0YWJsZUFycmF5ICphY3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKLSAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxlbWVudEFjdGlvbiBzdGFuZGFyZEVsZW1l
bnRBY3Rpb25XaXRoVHlwZTpXS0VsZW1lbnRBY3Rpb25UeXBlT3Blbl1dOworICAgIFthY3Rpb25z
IGFkZE9iamVjdDpbX1dLRWxlbWVudEFjdGlvbiBlbGVtZW50QWN0aW9uV2l0aFR5cGU6X1dLRWxl
bWVudEFjdGlvblR5cGVPcGVuXV07CiAgICAgaWYgKFtnZXRTU1JlYWRpbmdMaXN0Q2xhc3MoKSBz
dXBwb3J0c1VSTDp0YXJnZXRVUkxdKQotICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxl
bWVudEFjdGlvbiBzdGFuZGFyZEVsZW1lbnRBY3Rpb25XaXRoVHlwZTpXS0VsZW1lbnRBY3Rpb25U
eXBlQWRkVG9SZWFkaW5nTGlzdF1dOworICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W19XS0Vs
ZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlQWRk
VG9SZWFkaW5nTGlzdF1dOwogICAgIGlmICghW1t0YXJnZXRVUkwgc2NoZW1lXSBsZW5ndGhdIHx8
IFtbdGFyZ2V0VVJMIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImphdmFzY3JpcHQi
XSAhPSBOU09yZGVyZWRTYW1lKQotICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W1dLRWxlbWVu
dEFjdGlvbiBzdGFuZGFyZEVsZW1lbnRBY3Rpb25XaXRoVHlwZTpXS0VsZW1lbnRBY3Rpb25UeXBl
Q29weV1dOworICAgICAgICBbYWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxl
bWVudEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlQ29weV1dOwogCiAgICAgLy8g
RklYTUU6IEFkZCBjYWxsIHRvIGRlbGVnYXRlIHRvIGFkZCBjdXN0b20gYWN0aW9ucy4KIApAQCAt
Mjg4LDcgKzI4NCw3IEBAIC0gKHZvaWQpc2hvd0RhdGFEZXRlY3RvcnNTaGVldAogICAgIE5TTXV0
YWJsZUFycmF5ICplbGVtZW50QWN0aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAg
Zm9yIChOU1VJbnRlZ2VyIGFjdGlvbk51bWJlciA9IDA7IGFjdGlvbk51bWJlciA8IFtkYXRhRGV0
ZWN0b3JzQWN0aW9ucyBjb3VudF07IGFjdGlvbk51bWJlcisrKSB7CiAgICAgICAgIEREQWN0aW9u
ICphY3Rpb24gPSBbZGF0YURldGVjdG9yc0FjdGlvbnMgb2JqZWN0QXRJbmRleDphY3Rpb25OdW1i
ZXJdOwotICAgICAgICBbZWxlbWVudEFjdGlvbnMgYWRkT2JqZWN0OltXS0VsZW1lbnRBY3Rpb24g
Y3VzdG9tRWxlbWVudEFjdGlvbldpdGhUaXRsZTpbYWN0aW9uIGxvY2FsaXplZE5hbWVdIGFjdGlv
bkhhbmRsZXI6XihXS0VsZW1lbnRBY3Rpb25JbmZvICphY3Rpb25JbmZvKSB7CisgICAgICAgIFtl
bGVtZW50QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldp
dGhUaXRsZTpbYWN0aW9uIGxvY2FsaXplZE5hbWVdIGFjdGlvbkhhbmRsZXI6XihfV0tBY3RpdmF0
ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5mbykgewogICAgICAgICAgICAgVUlQb3BvdmVyQ29udHJv
bGxlciAqcG9wb3ZlckNvbnRyb2xsZXIgPSBuaWw7CiAgICAgICAgICAgICBpZiAoVUlfVVNFUl9J
TlRFUkZBQ0VfSURJT00oKSAhPSBVSVVzZXJJbnRlcmZhY2VJZGlvbVBob25lKSB7CiAgICAgICAg
ICAgICAgICAgW19pbnRlcmFjdGlvblNoZWV0IHNldFVzZXJJbnRlcmFjdGlvbkVuYWJsZWQ6Tk9d
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTY0NjIxKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsNiArNjIzLDEyIEBA
CiAJCTM3OTQ4NDA4MTUwQzRCOTcwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTQ4NDA2MTUwQzRCOTYw
MEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCAqLzsgfTsKIAkJMzc5NDg0MDkxNTBDNEI5NzAw
RTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzc5
NTc4OUMxOEFENEYxOTAwQjlFRDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
OTU3ODlCMThBRDRGMTEwMEI5RUQyRSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQ
cml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMzc5QTg3MzYxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFs
LmggKi87IH07CisJCTM3OUE4NzM5MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9u
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5QTg3
MzcxOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24ubW0gKi87IH07CisJCTM3OUE4
NzNBMThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzlBODczODE4QkJGRTBGMDA1ODhBRjIg
LyogX1dLRWxlbWVudEFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTM3OUE4NzNDMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0
aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3OUE4NzNCMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwu
aCAqLzsgfTsKKwkJMzdBNUUwMTMxOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICov
OyB9OworCQkzN0E1RTAxNDE4QkJGOTNGMDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QTVF
MDEyMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3QzRDMDg2MTgxNDlD
NUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M0QzA4NDE4MTQ5QzVCMDAzNjg4QjkgLyog
V0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tICovOyB9OwogCQkzN0M0QzA4NzE4MTQ5QzVCMDAzNjg4
QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M0QzA4NTE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9y
d2FyZExpc3RJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwogCQkzN0M0QzA4OTE4MTQ5RjIzMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVt
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3QzRDMDg4MTgxNDlGMjMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5h
bC5oICovOyB9OwpAQCAtMjM0NCw2ICsyMzUwLDEyIEBACiAJCTM3OTQ4NDA2MTUwQzRCOTYwMEU1
MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLUmVuZGVyTGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
Nzk0ODQwNzE1MEM0Qjk2MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1JlbmRlckxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3OTU3ODlCMThBRDRGMTEwMEI5RUQyRSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5G
b3JtRGVsZWdhdGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
V2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzc5QTg3MzUxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQWN0
aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzNzlBODczNzE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0VsZW1lbnRBY3Rpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3OUE4NzM4MThCQkZFMEYwMDU4OEFGMiAvKiBf
V0tFbGVtZW50QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Vs
ZW1lbnRBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5QTg3M0IxOEJC
RkYwNzAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2
YXRlZEVsZW1lbnRJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTM3QTVFMDEyMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBY3RpdmF0ZWRFbGVtZW50SW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0M0QzA4NDE4MTQ5QzVCMDAzNjg4
QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tCYWNrRm9yd2FyZExpc3RJdGVtLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzN0M0QzA4NTE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExp
c3RJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRM
aXN0SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0M0QzA4ODE4MTQ5RjIz
MDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzOTYsNiArNDQwOCwxMiBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJMUFDNUM0N0ExOEJCQ0I3RDAwODlGNTdGIC8qIFRvIEJlIFJlbW92ZWQgKi8s
CiAJCQkJMUE0M0U4MjYxODhGMzhFMjAwOUU0RDMwIC8qIERlcHJlY2F0ZWQgKi8sCisJCQkJMzdB
NUUwMTIxOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCisJ
CQkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1t
ICovLAorCQkJCTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mb0ludGVybmFsLmggKi8sCisJCQkJMzc5QTg3MzgxOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0Vs
ZW1lbnRBY3Rpb24uaCAqLywKKwkJCQkzNzlBODczNzE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxl
bWVudEFjdGlvbi5tbSAqLywKKwkJCQkzNzlBODczQjE4QkJGRjA3MDA1ODhBRjIgLyogX1dLRWxl
bWVudEFjdGlvbkludGVybmFsLmggKi8sCiAJCQkJMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8q
IFdLVGh1bWJuYWlsVmlldy5oICovLAogCQkJCTJEQUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBX
S1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICovLAogCQkJCTJENkIzNzFBMThBOTY3QUQwMDQyQUU4
MCAvKiBXS1RodW1ibmFpbFZpZXcubW0gKi8sCkBAIC02Mzg0LDYgKzY0MDIsNyBAQAogCQkJCUJD
RTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCQzNERkMxODk5RjUxQzAwNEYwNjI2IC8qIFdLTmF2aWdhdGlvbkRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE3NzUzRjExOEJBQkYwMDA3RDlFOUEgLyogR2VuZXJpY0NhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzNzlBODczNjE4QkJGQTQzMDA1ODhBRjIgLyogX1dLQWN0
aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNkY0MkYx
MkRCQjlCNjAwMkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzA2RjQ0QTEyREJEMUY1MDAyRDc4REUgLyogR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMw
NkY0M0ExMkRCQ0NGQjAwMkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDQ4LDYgKzY0NjcsNyBAQAogCQkJCTFBQTU4ODkyMTFF
RTcwNDAwMDYxQjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTE3OThDN0ExNkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxM0ExNjREMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzc5QTg3M0MxOEJCRkYwNzAw
NTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFERDlGMjkxNjM2N0RBMjAwMTU3OEU5IC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzk1NTZBMTYyODc2RjMwMEZBNDNCNiAv
KiBOZXR3b3JrUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3Q0YwRTQxNjNBNDg2QzAw
QzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKQEAgLTY1NjksNiArNjU4OSw3IEBACiAJCQkJMUFCNDc0RTYxODRENDRCNDAwNTFCNjIyIC8q
IFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjMx
QTk3MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzNzlBODczQTE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVu
dEFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRDgxRkYxODVCQkRFRTAwMUFFRDU2IC8q
IFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRF
NEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
Q0QxMDJEQTE4NjY3NzA2MDBFRDQyOUQgLyogQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCkBAIC02Nzc2LDYgKzY3OTcsNyBAQAogCQkJCUJDQzU3MTVCMTE1QURBRUYwMDFD
Q0FGOSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTBFRjdG
MTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFD
MTMzNkMxODU2NUM3QTAwRjNFQzA1IC8qIEFQSVBhZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTM3QTVFMDE0MThCQkY5M0YwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RTgxODRENDREMDAwNTFCNjIyIC8qIFdLQnVuZGxl
UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NTM3
QzE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNEQjg2QzExMjAwRkI5NzAwNzI1NEJFIC8qIEFQSVVSTC5oIGluIEhlYWRlcnMgKi8sCkBAIC03
NDczLDcgKzc0OTUsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gImlm
IFsgXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGhkcnNcIiBdOyB0aGVuXG4gICAgZXhpdCAwO1xu
ZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRl
LW9iamMtY2xhc3MtbmFtZXMgXTsgdGhlblxuICAgIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2st
Zm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBXSyB8fCBleGl0ICQ/XG5maSI7CisJ
CQlzaGVsbFNjcmlwdCA9ICJpZiBbIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgXTsg
dGhlblxuICAgIGV4aXQgMDtcbmZpXG5cbmlmIFsgLWYgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVj
ay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIF07IHRoZW5cbiAgICAuLi8uLi9U
b29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMgV0sg
X1dLIHx8IGV4aXQgJD9cbmZpIjsKIAkJfTsKIAkJMzc1QTI0ODgxN0U1MDQ4RTAwQzlBMDg2IC8q
IFBvc3Rwcm9jZXNzIFdLQmFzZS5oICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOwpAQCAtODEzOSw2ICs4MTYxLDcgQEAKIAkJCQkyOUQ1NURGMTE2MUJGOUYxMDAzMUEy
RTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM5NjNENkUxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDMENFNzJBMDEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzN0E1RTAxMzE4QkJGOTM3MDAwQTA4MUUgLyog
X1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUIwRjEx
MkY1RTRGMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1
OENERjJEMTg4NzYwOUYwMDg3MTUzNiAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUIzMDA1MTEyNTI5RDBFMDAwQjVDQTAgLyogV2Vi
UGFnZVByb3h5Q0YuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04MzI4LDYgKzgzNTEsNyBAQAogCQkJ
CUJDNDA3NjJBMTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlcXVlc3ROUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxMkE5NzYwMTgwRTAzMUQwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc2MEQxMjRGRjAyNzAwNjhG
MjBBIC8qIFdLVVJMUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzc5QTg3MzkxOEJC
RkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
RkNCNEU2MzE4QkJFM0Q5MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGwubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQURDQjg2QTE4OTgzMUIzMDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc2MkMxMjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJM
UmVzcG9uc2VOUy5tbSBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="249237"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>