<?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>107486</bug_id>
          
          <creation_ts>2013-01-21 16:43:15 -0800</creation_ts>
          <short_desc>[WK2] Move sandbox initialization to ChildProcess</short_desc>
          <delta_ts>2013-01-22 16:37:27 -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 name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>812459</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-21 16:43:15 -0800</bug_when>
    <thetext>Would like to use shared code for all child processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812470</commentid>
    <comment_count>1</comment_count>
      <attachid>183855</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-21 16:54:44 -0800</bug_when>
    <thetext>Created attachment 183855
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812484</commentid>
    <comment_count>2</comment_count>
      <attachid>183855</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-21 17:16:01 -0800</bug_when>
    <thetext>Comment on attachment 183855
proposed patch

Attachment 183855 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16043270</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812528</commentid>
    <comment_count>3</comment_count>
      <attachid>183855</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-21 19:02:07 -0800</bug_when>
    <thetext>Comment on attachment 183855
proposed patch

Attachment 183855 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16031351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813542</commentid>
    <comment_count>4</comment_count>
      <attachid>184071</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-22 16:32:26 -0800</bug_when>
    <thetext>Created attachment 184071
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813545</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-22 16:37:27 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/140486&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183855</attachid>
            <date>2013-01-21 16:54:44 -0800</date>
            <delta_ts>2013-01-22 16:32:26 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>InitializeSandbox.txt</filename>
            <type>text/plain</type>
            <size>35368</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDM3MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAxLTIxICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc2FuZGJveCBpbml0
aWFsaXphdGlvbiB0byBDaGlsZFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNzQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gpOiBSZW1v
dmVkLiBXZSBubyBsb25nZXIgbmVlZCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIHRvIGJlIGltcGxl
bWVudGVkIGluIGVhY2ggcHJvY2VzcyB0eXBlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzKTogUmVtb3ZlZCBpbml0
aWFsaXplU2FuZGJveCgpLiBBZGRlZCBmdW5jdGlvbnMgdGhhdCBzdXBwbHkgY3VzdG9taXplZAor
ICAgICAgICBpbmZvcm1hdGlvbiB0byBDaGlsZFByb2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmluaXRp
YWxpemVTYW5kYm94KTogUmVtb3ZlZCBhIGN1c3RvbSAoYW5kIGluY29tcGxldGUpIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc0FwcGVuZFNh
bmRib3hQYXJhbWV0ZXJzKTogTm90aGluZyB0byBkbyBoZXJlIHlldCwKKyAgICAgICAgTmV0d29y
a1Byb2NlcyBpcyBub3Qgc2FuZGJveGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c3lzdGVtRGlyZWN0b3J5U3VmZml4KTogUmV0dXJuIGEgdGVtcG9yYXJ5L2NhY2hlIGRpcmVj
dG9yeQorICAgICAgICBzdWZmaXggdGhhdCB3ZSdkIGxpa2UgdG8gaGF2ZS4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNhbmRib3hQcm9maWxlUGF0aCk6IE5vdGhpbmcgdG8gZG8g
aGVyZSB5ZXQuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaDoKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICBB
ZGRlZCBwbHVtYmluZyB0byBhdmlkIHVzaW5nIHNoYXJlZCBjb2RlIGZvciBub3cuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6
ZVNhbmRib3gpOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBpbXBsZW1lbnRlZCBvbiBNYWMuCisKKyAg
ICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmg6IEFkZGVkIGZ1bmN0aW9ucyB0aGF0IGNoaWxk
IHByb2Nlc3MgY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudAorICAgICAgICB0byBjdXN0b21pemUg
c2FuZGJveC4KKworICAgICAgICAqIFNoYXJlZC9TYW5kYm94UGFyYW1ldGVycy5oOiBBZGRlZC4K
KyAgICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hQYXJhbWV0ZXJzTWFjLm1tOiBBZGRlZC4KKyAg
ICAgICAgRmFjdG9yZWQgb3V0IHdvcmtpbmcgd2l0aCBhIHZlY3RvciBvZiBwYXJhbWV0ZXJzIGZv
ciBiZXR0ZXIgcmVhZGFiaWxpdHkgYW5kIHNhZmV0eS4KKworICAgICAgICAqIFNoYXJlZC9tYWMv
Q2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRp
YWxpemVTYW5kYm94KTogQWRkZWQsIGJhc2VkIG1vc3RseSBvbiBXZWJQcm9jZXNzIHZlcnNpb24u
CisKKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuaDoK
KyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFj
Lm1tOgorICAgICAgICBTd2l0Y2hlZCB0byBjb21tb24gc2FuZGJveGluZyBjb2RlLgorCisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBTYW5kYm94UGFy
YW1ldGVycyBmaWxlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9t
YWMvV2ViUHJvY2Vzc01hYy5tbToKKyAgICAgICAgU3dpdGNoZWQgdG8gY29tbW9uIHNhbmRib3hp
bmcgY29kZS4KKwogMjAxMy0wMS0yMSAgS2lyYW4gTXVwcGFsYSAgPGNtdXBwYWxhQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgcHJvY2VzcyBzdXBwcmVzc2lvbiBieSBkZWZhdWx0IG9uIE1h
YwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAkocmV2aXNpb24gMTQwMzQ0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsMTAgKzIxNSw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMmKQogewogfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXpl
U2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQotewot
fQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAxNDAzNDQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03OCw5ICs3OCwxMyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2hpbGRQcm9jZXNz
CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nl
c3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uKENv
cmVJUEM6OkNvbm5lY3Rpb24qKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVy
bWluYXRlKCkgT1ZFUlJJREU7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzQXBwZW5kU2FuZGJveFBhcmFtZXRlcnMoU2FuZGJveFBhcmFtZXRlcnMmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzeXN0ZW1EaXJlY3RvcnlTdWZmaXgoY29uc3QgU3RyaW5n
JiBjbGllbnRQcm9jZXNzTmFtZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcg
c2FuZGJveFByb2ZpbGVQYXRoKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKIAogICAgIC8vIENv
cmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTQw
MzQ0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNz
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NCwzNyArNjQsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplUHJvY2Vzc05hCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjaGFuZ2VDdXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZVBhdGhdXTsKLQotI2lmIERFQlVHX0JZUEFTU19TQU5EQk9YCi0gICAgV1RGTG9nQWx3YXlzKCJC
eXBhc3NpbmcgbmV0d29yayBwcm9jZXNzIHNhbmRib3guXG4iKTsKLSAgICByZXR1cm47Ci0jZW5k
aWYKLQotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAotICAgIC8v
IFVzZSBwcml2YXRlIHRlbXBvcmFyeSBhbmQgY2FjaGUgZGlyZWN0b3JpZXMuCi0gICAgU3RyaW5n
IHN5c3RlbURpcmVjdG9yeVN1ZmZpeCA9ICJjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNz
KyIgKyBwYXJhbWV0ZXJzLmNsaWVudElkZW50aWZpZXI7Ci0gICAgc2V0ZW52KCJESVJIRUxQRVJf
VVNFUl9ESVJfU1VGRklYIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5c3RlbURpcmVjdG9y
eVN1ZmZpeCkuZGF0YSgpLCAwKTsKLSAgICBjaGFyIHRlbXBvcmFyeURpcmVjdG9yeVtQQVRIX01B
WF07Ci0gICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9yYXJ5
RGlyZWN0b3J5LCBzaXplb2YodGVtcG9yYXJ5RGlyZWN0b3J5KSkpIHsKLSAgICAgICAgV1RGTG9n
QWx3YXlzKCJOZXR3b3JrUHJvY2VzczogY291bGRuJ3QgcmV0cmlldmUgcHJpdmF0ZSB0ZW1wb3Jh
cnkgZGlyZWN0b3J5IHBhdGg6ICVkXG4iLCBlcnJubyk7Ci0gICAgICAgIGV4aXQoRVhfTk9QRVJN
KTsKLSAgICB9Ci0gICAgc2V0ZW52KCJUTVBESVIiLCB0ZW1wb3JhcnlEaXJlY3RvcnksIDEpOwot
I2VuZGlmCi0KLSAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0v
MTI3NzI2MDU+IEFjdHVhbGx5IGluaXRpYWxpemUgdGhlIHNhbmRib3guCi0KLSAgICAvLyBUaGlz
IHdpbGwgb3ZlcnJpZGUgTFNGaWxlUXVhcmFudGluZUVuYWJsZWQgZnJvbSBJbmZvLnBsaXN0IHVu
bGVzcyBzYW5kYm94IHF1YXJhbnRpbmUgaXMgZ2xvYmFsbHkgZGlzYWJsZWQuCi0gICAgT1NTdGF0
dXMgZXJyb3IgPSBXS0VuYWJsZVNhbmRib3hTdHlsZUZpbGVRdWFyYW50aW5lKCk7Ci0gICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya1Byb2Nlc3M6IENvdWxkbid0
IGVuYWJsZSBzYW5kYm94IHN0eWxlIGZpbGUgcXVhcmFudGluZTogJWxkXG4iLCAobG9uZyllcnJv
cik7Ci0gICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKLSAgICB9Ci19Ci0KICNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lzdGVt
UHJveGllcyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3RyaW5nJiBodHRwc1Byb3h5
KQogewpAQCAtMjA4LDYgKzE3NywyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxvd1NwZWNp
ZmljSFRUUFNDCiAgICAgW05TVVJMUmVxdWVzdCBzZXRBbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGU6KE5TQXJyYXkgKiljZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGVDaGFpbigpIGZvckhv
c3Q6KE5TU3RyaW5nICopaG9zdF07CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NB
cHBlbmRTYW5kYm94UGFyYW1ldGVycyhTYW5kYm94UGFyYW1ldGVycyYpCit7Cit9CisKK1N0cmlu
ZyBOZXR3b3JrUHJvY2Vzczo6c3lzdGVtRGlyZWN0b3J5U3VmZml4KGNvbnN0IFN0cmluZyYgY2xp
ZW50UHJvY2Vzc05hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuICJjb20uYXBwbGUuV2ViS2l0Lk5l
dHdvcmtQcm9jZXNzKyIgKyBjbGllbnRQcm9jZXNzTmFtZTsKK30KKworU3RyaW5nIE5ldHdvcmtQ
cm9jZXNzOjpzYW5kYm94UHJvZmlsZVBhdGgoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgd2hlbiBhZGRpbmcgYSBuZXR3b3JrIHByb2Nlc3MgcHJvZmlsZS4KKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luUHJvY2Vzcy5oCShyZXZpc2lvbiAxNDAzNDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsMTcg
QEAgcHJpdmF0ZToKICAgICBQbHVnaW5Qcm9jZXNzKCk7CiAgICAgflBsdWdpblByb2Nlc3MoKTsK
IAorICAgIC8vIEZJWE1FOiBQbHVnaW5Qcm9jZXNzIHNob3VsZCBzd2l0Y2ggdG8gY29tbW9uIGNv
ZGUgZm9yIHNhbmRib3ggaW5pdGlhbGl6YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIE9W
RVJSSURFIHsgfQorCiAgICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBPVkVSUklERTsK
KyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBcHBlbmRTYW5kYm94
UGFyYW1ldGVycyhTYW5kYm94UGFyYW1ldGVycyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3Ry
aW5nIHN5c3RlbURpcmVjdG9yeVN1ZmZpeChjb25zdCBTdHJpbmcmIGNsaWVudFByb2Nlc3NOYW1l
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzYW5kYm94UHJvZmlsZVBhdGgo
KSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQ
cm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblBy
b2Nlc3NNYWMubW0JKHJldmlzaW9uIDE0MDM0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiAr
MzUyLDI5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGwKICAgICAK
ICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUoKENGU3RyaW5nUmVmKWFwcGxpY2F0aW9u
TmFtZSk7CiAKKyAgICAvLyBGSVhNRTogVXNlIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3guCiAgICAgV2ViS2l0Ojppbml0aWFsaXplU2FuZGJveChtX3BsdWdpblBhdGgsIHBhcmFtZXRl
cnMuc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoKTsKIAogICAgIGlmIChwYXJhbWV0ZXJzLnBy
b2Nlc3NUeXBlID09IFR5cGVTbmFwc2hvdFByb2Nlc3MpCiAgICAgICAgIG11dGVBdWRpbygpOwog
fQogCit2b2lkIFBsdWdpblByb2Nlc3M6OnByb2Nlc3NBcHBlbmRTYW5kYm94UGFyYW1ldGVycyhT
YW5kYm94UGFyYW1ldGVycyYpCit7Cit9CisKK1N0cmluZyBQbHVnaW5Qcm9jZXNzOjpzeXN0ZW1E
aXJlY3RvcnlTdWZmaXgoY29uc3QgU3RyaW5nJiBjbGllbnRQcm9jZXNzTmFtZSkgY29uc3QKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4gY2hhbmdpbmcgcGx1Z2lucyB0byB1c2UgY29t
bW9uIHNhbmRib3hpbmcgY29kZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK1N0cmluZyBQbHVnaW5Q
cm9jZXNzOjpzYW5kYm94UHJvZmlsZVBhdGgoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgd2hlbiBjaGFuZ2luZyBwbHVnaW5zIHRvIHVzZSBjb21tb24gc2FuZGJveGluZyBjb2Rl
LgorICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ2hpbGRQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q2hpbGRQcm9jZXNzLmNwcAkocmV2aXNpb24gMTQwMzQ0KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0NoaWxkUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDkgKzg2LDExIEBAIHZv
aWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUKIHsKIH0KIAorI2lmICFQTEFU
Rk9STShNQUMpCiB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hp
bGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKIHsKIH0KKyNlbmRpZgogCiB2b2lk
IENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiop
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCShyZXZpc2lvbiAxNDAz
NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFNhbmRi
b3hQYXJhbWV0ZXJzOworCiBzdHJ1Y3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzIHsKICAgICBTdHJpbmcgdWlQcm9jZXNzTmFtZTsKICAgICBTdHJpbmcgY2xpZW50SWRlbnRp
ZmllcjsKQEAgLTc3LDcgKzc5LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYpOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
OwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0
aW9uKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgPSAwOwpAQCAtODcs
NiArODgsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRlcm1pbmF0aW9uVGltZXJGaXJlZCgpOwog
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBmdW5j
dGlvbiBpcyB2aXJ0dWFsIG9ubHkgYmVjYXVzZSBQbHVnaW5Qcm9jZXNzIG5lZWRzIHRvIGJ5cGFz
cyBpdC4gSXQgc2hvdWxkIHN3aXRjaCB0byBjb21tb24gY29kZS4KKyAgICB2aXJ0dWFsIHZvaWQg
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJik7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBcHBl
bmRTYW5kYm94UGFyYW1ldGVycyhTYW5kYm94UGFyYW1ldGVycyYpID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBzeXN0ZW1EaXJlY3RvcnlTdWZmaXgoY29uc3QgU3RyaW5nJiBjbGllbnRQcm9jZXNz
TmFtZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHNhbmRib3hQcm9maWxlUGF0aCgp
IGNvbnN0ID0gMDsKKyNlbmRpZgogCiAgICAgLy8gVGhlIHRpbWVvdXQsIGluIHNlY29uZHMsIGJl
Zm9yZSB0aGlzIHByb2Nlc3Mgd2lsbCBiZSB0ZXJtaW5hdGVkIGlmIHRlcm1pbmF0aW9uCiAgICAg
Ly8gaGFzIGJlZW4gZW5hYmxlZC4gSWYgdGhlIHRpbWVvdXQgaXMgMCBzZWNvbmRzLCB0aGUgcHJv
Y2VzcyB3aWxsIGJlIHRlcm1pbmF0ZWQgaW1tZWRpYXRlbHkuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2FuZGJveFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2FuZGJveFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TYW5kYm94UGFyYW1ldGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTYW5kYm94UGFyYW1ldGVyc19oCisjZGVmaW5lIFNh
bmRib3hQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFNhbmRib3hQYXJhbWV0ZXJzIHsKK1dURl9NQUtFX05PTkNPUFlB
QkxFKFNhbmRib3hQYXJhbWV0ZXJzKTsKK3B1YmxpYzoKKworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBTYW5kYm94UGFyYW1ldGVycygpOworICAgIH5TYW5kYm94UGFyYW1ldGVycygpOworCisgICAg
Ly8gTmFtZSBtdXN0IGJlIGEgbGl0ZXJhbC4KKyAgICB2b2lkIGFwcGVuZENvbmZEaXJlY3Rvcnko
Y29uc3QgY2hhciogbmFtZSwgaW50IGNvbmZJRCk7CisgICAgdm9pZCBhcHBlbmRQYXRoKGNvbnN0
IGNoYXIqIG5hbWUsIE5TU3RyaW5nICpwYXRoKTsKKyAgICB2b2lkIGFwcGVuZFBhdGgoY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgY2hhciogcGF0aCk7CisKKyAgICBjb25zdCBjaGFyKiBjb25zdCog
Y0FycmF5KCkgY29uc3Q7CisKKyAgICBzaXplX3QgY291bnQoKSBjb25zdDsKKyAgICBjb25zdCBj
aGFyKiBuYW1lKHNpemVfdCBpbmRleCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogdmFsdWUoc2l6
ZV90IGluZGV4KSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICB2b2lkIGFwcGVuZFBhdGhJbnRlcm5hbChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy
KiBwYXRoKTsKKworICAgIG11dGFibGUgVmVjdG9yPGNvbnN0IGNoYXIqPiBtX3BhcmFtZXRlcnM7
CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIFNhbmRib3hQYXJhbWV0ZXJzX2gKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5kYm94UGFyYW1ldGVycy5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTQw
MzQ0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDIyIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkNoaWxkUHJvY2Vzcy5oIgogCisjaW1wb3J0ICJTYW5kYm94UGFyYW1ldGVycy5oIgogI2lt
cG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPG1hY2gvdGFzay5oPgorI2ltcG9ydCA8cHdkLmg+CisjaW1wb3J0IDxz
dGRsaWIuaD4KKyNpbXBvcnQgPHN5c2V4aXRzLmg+CisKKy8vIFdlIGhhdmUgdG8gI3VuZGVmIF9f
QVBQTEVfQVBJX1BSSVZBVEUgdG8gcHJldmVudCBzYW5kYm94LmggZnJvbSBsb29raW5nIGZvciBh
IGhlYWRlciBmaWxlIHRoYXQgZG9lcyBub3QgZXhpc3QgKDxyZGFyOi8vcHJvYmxlbS85Njc5MjEx
PikuIAorI3VuZGVmIF9fQVBQTEVfQVBJX1BSSVZBVEUKKyNpbXBvcnQgPHNhbmRib3guaD4KKwor
I2RlZmluZSBTQU5EQk9YX05BTUVEX0VYVEVSTkFMIDB4MDAwMworZXh0ZXJuICJDIiBpbnQgc2Fu
ZGJveF9pbml0X3dpdGhfcGFyYW1ldGVycyhjb25zdCBjaGFyICpwcm9maWxlLCB1aW50NjRfdCBm
bGFncywgY29uc3QgY2hhciAqY29uc3QgcGFyYW1ldGVyc1tdLCBjaGFyICoqZXJyb3JidWYpOwor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTY0
LDQgKzc4LDU5IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAg
IHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CiB9CiAKK3ZvaWQgQ2hpbGRQcm9jZXNz
Ojppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjaGFuZ2VDdXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZVBhdGhdXTsKKworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAor
ICAgIC8vIFVzZSBwcml2YXRlIHRlbXBvcmFyeSBhbmQgY2FjaGUgZGlyZWN0b3JpZXMuCisgICAg
U3RyaW5nIHN5c3RlbURpcmVjdG9yeVN1ZmZpeCA9IHN5c3RlbURpcmVjdG9yeVN1ZmZpeChwYXJh
bWV0ZXJzLmNsaWVudElkZW50aWZpZXIpOworICAgIHNldGVudigiRElSSEVMUEVSX1VTRVJfRElS
X1NVRkZJWCIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeXN0ZW1EaXJlY3RvcnlTdWZmaXgp
LmRhdGEoKSwgMCk7CisgICAgY2hhciB0ZW1wb3JhcnlEaXJlY3RvcnlbUEFUSF9NQVhdOworICAg
IGlmICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFyeURpcmVjdG9y
eSwgc2l6ZW9mKHRlbXBvcmFyeURpcmVjdG9yeSkpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
JXM6IGNvdWxkbid0IHJldHJpZXZlIHByaXZhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoOiAl
ZFxuIiwgZ2V0cHJvZ25hbWUoKSwgZXJybm8pOworICAgICAgICBleGl0KEVYX05PUEVSTSk7Cisg
ICAgfQorICAgIHNldGVudigiVE1QRElSIiwgdGVtcG9yYXJ5RGlyZWN0b3J5LCAxKTsKKyNlbmRp
ZgorCisgICAgU2FuZGJveFBhcmFtZXRlcnMgc2FuZGJveFBhcmFtZXRlcnM7CisKKyAgICBzYW5k
Ym94UGFyYW1ldGVycy5hcHBlbmRQYXRoKCJXRUJLSVQyX0ZSQU1FV09SS19ESVIiLCBbW1tOU0J1
bmRsZSBidW5kbGVGb3JDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIldLVmlldyIpXSBidW5kbGVQ
YXRoXSBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdKTsKKyAgICBzYW5kYm94UGFy
YW1ldGVycy5hcHBlbmRDb25mRGlyZWN0b3J5KCJEQVJXSU5fVVNFUl9URU1QX0RJUiIsIF9DU19E
QVJXSU5fVVNFUl9URU1QX0RJUik7CisgICAgc2FuZGJveFBhcmFtZXRlcnMuYXBwZW5kQ29uZkRp
cmVjdG9yeSgiREFSV0lOX1VTRVJfQ0FDSEVfRElSIiwgX0NTX0RBUldJTl9VU0VSX0NBQ0hFX0RJ
Uik7CisKKyAgICBjaGFyIGJ1ZmZlcls0MDk2XTsKKyAgICBpbnQgYnVmZmVyU2l6ZSA9IHNpemVv
ZihidWZmZXIpOworICAgIHN0cnVjdCBwYXNzd2QgcHdkOworICAgIHN0cnVjdCBwYXNzd2QqIHJl
c3VsdCA9IDA7CisgICAgaWYgKGdldHB3dWlkX3IoZ2V0dWlkKCksICZwd2QsIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSwgJnJlc3VsdCkgfHwgIXJlc3VsdCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIiVz
OiBDb3VsZG4ndCBmaW5kIGhvbWUgZGlyZWN0b3J5XG4iLCBnZXRwcm9nbmFtZSgpKTsKKyAgICAg
ICAgZXhpdChFWF9OT1BFUk0pOworICAgIH0KKworICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFwcGVu
ZFBhdGgoIkhPTUVfRElSIiwgcHdkLnB3X2Rpcik7CisKKyAgICBwcm9jZXNzQXBwZW5kU2FuZGJv
eFBhcmFtZXRlcnMoc2FuZGJveFBhcmFtZXRlcnMpOworCisgICAgU3RyaW5nIHByb2ZpbGVQYXRo
ID0gc2FuZGJveFByb2ZpbGVQYXRoKCk7CisgICAgaWYgKCFwcm9maWxlUGF0aC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgQ1N0cmluZyBwcm9maWxlUGF0aENTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKCkpOworICAgICAgICBjaGFyKiBlcnJvckJ1ZjsK
KyAgICAgICAgaWYgKHNhbmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJvZmlsZVBhdGhDU3Ry
aW5nLmRhdGEoKSwgU0FOREJPWF9OQU1FRF9FWFRFUk5BTCwgc2FuZGJveFBhcmFtZXRlcnMuY0Fy
cmF5KCksICZlcnJvckJ1ZikpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxk
bid0IGluaXRpYWxpemUgc2FuZGJveCBwcm9maWxlIFslc10gZXJyb3IgJyVzJ1xuIiwgZ2V0cHJv
Z25hbWUoKSwgcHJvZmlsZVBhdGhDU3RyaW5nLmRhdGEoKSwgZXJyb3JCdWYpOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gc2FuZGJveFBhcmFtZXRlcnMuY291bnQoKTsg
aSAhPSBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM9JXNcbiIs
IHNhbmRib3hQYXJhbWV0ZXJzLm5hbWUoaSksIHNhbmRib3hQYXJhbWV0ZXJzLnZhbHVlKGkpKTsK
KyAgICAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IFRoaXMgd2lsbCBvdmVycmlkZSBMU0ZpbGVRdWFyYW50aW5lRW5hYmxlZCBmcm9tIEluZm8ucGxp
c3QgdW5sZXNzIHNhbmRib3ggcXVhcmFudGluZSBpcyBnbG9iYWxseSBkaXNhYmxlZC4KKyAgICBP
U1N0YXR1cyBlcnJvciA9IFdLRW5hYmxlU2FuZGJveFN0eWxlRmlsZVF1YXJhbnRpbmUoKTsKKyAg
ICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGRuJ3QgZW5hYmxl
IHNhbmRib3ggc3R5bGUgZmlsZSBxdWFyYW50aW5lOiAlbGRcbiIsIGdldHByb2duYW1lKCksIChs
b25nKWVycm9yKTsKKyAgICAgICAgZXhpdChFWF9OT1BFUk0pOworICAgIH0KK30KKwogfQpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94UGFyYW1ldGVyc01hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hQYXJhbWV0ZXJzTWFj
Lm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94UGFy
YW1ldGVyc01hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTYW5kYm94UGFyYW1ldGVycy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworU2FuZGJveFBhcmFtZXRlcnM6OlNhbmRib3hQYXJhbWV0ZXJz
KCkKK3sKK30KKworU2FuZGJveFBhcmFtZXRlcnM6On5TYW5kYm94UGFyYW1ldGVycygpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgKyAxIDwgbV9wYXJhbWV0ZXJzLnNpemUoKTsgaSArPSAy
KQorICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PGNoYXIqPihtX3BhcmFtZXRlcnNbaSArIDFd
KSk7Cit9CisKK3ZvaWQgU2FuZGJveFBhcmFtZXRlcnM6OmFwcGVuZFBhdGhJbnRlcm5hbChjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBwYXRoKQoreworICAgIGNoYXIgbm9ybWFsaXplZFBh
dGhbUEFUSF9NQVhdOworICAgIGlmICghcmVhbHBhdGgocGF0aCwgbm9ybWFsaXplZFBhdGgpKQor
ICAgICAgICBub3JtYWxpemVkUGF0aFswXSA9ICdcMCc7CisKKyAgICBBU1NFUlQoIShtX3BhcmFt
ZXRlcnMuc2l6ZSgpICUgMikpOworCisgICAgbV9wYXJhbWV0ZXJzLmFwcGVuZChuYW1lKTsKKyAg
ICBtX3BhcmFtZXRlcnMuYXBwZW5kKGZhc3RTdHJEdXAobm9ybWFsaXplZFBhdGgpKTsKK30KKwor
dm9pZCBTYW5kYm94UGFyYW1ldGVyczo6YXBwZW5kQ29uZkRpcmVjdG9yeShjb25zdCBjaGFyKiBu
YW1lLCBpbnQgY29uZklEKQoreworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaWYgKGNv
bmZzdHIoY29uZklELCBwYXRoLCBQQVRIX01BWCkgPD0gMCkKKyAgICAgICAgcGF0aFswXSA9ICdc
MCc7CisKKyAgICBhcHBlbmRQYXRoSW50ZXJuYWwobmFtZSwgcGF0aCk7Cit9CisKK3ZvaWQgU2Fu
ZGJveFBhcmFtZXRlcnM6OmFwcGVuZFBhdGgoY29uc3QgY2hhciogbmFtZSwgTlNTdHJpbmcgKnBh
dGgpCit7CisgICAgYXBwZW5kUGF0aEludGVybmFsKG5hbWUsIFtwYXRoIGxlbmd0aF0gPyBbKE5T
U3RyaW5nICopcGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dIDogIiIpOworfQorCit2b2lk
IFNhbmRib3hQYXJhbWV0ZXJzOjphcHBlbmRQYXRoKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNo
YXIqIHBhdGgpCit7CisgICAgYXBwZW5kUGF0aEludGVybmFsKG5hbWUsIHBhdGgpOworfQorCitj
b25zdCBjaGFyKiBjb25zdCogU2FuZGJveFBhcmFtZXRlcnM6OmNBcnJheSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCEobV9wYXJhbWV0ZXJzLnNpemUoKSAlIDIpKQorICAgICAgICBtX3BhcmFtZXRlcnMu
YXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPigwKSk7CisKKyAgICByZXR1cm4gbV9wYXJh
bWV0ZXJzLmRhdGEoKTsKK30KKworc2l6ZV90IFNhbmRib3hQYXJhbWV0ZXJzOjpjb3VudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5zaXplKCkgLyAyOworfQorCitjb25zdCBj
aGFyKiBTYW5kYm94UGFyYW1ldGVyczo6bmFtZShzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGluZGV4ICE9IG1fcGFyYW1ldGVycy5zaXplKCkpOworICAgIHJldHVybiBtX3BhcmFt
ZXRlcnNbaW5kZXggKiAyXTsKK30KKworY29uc3QgY2hhciogU2FuZGJveFBhcmFtZXRlcnM6OnZh
bHVlKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXJhbWV0ZXJzW2luZGV4
ICogMiArIDFdOworfQorCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1NhbmRib3hQYXJhbWV0ZXJzTWFjLm1tCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQ
cm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuaAkocmV2aXNpb24gMTQw
MzQ0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQ
cm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDExIEBAIHByaXZhdGU6CiAKICAg
ICAvLyBDaGlsZFByb2Nlc3MKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgT1ZF
UlJJREU7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzQXBwZW5k
U2FuZGJveFBhcmFtZXRlcnMoU2FuZGJveFBhcmFtZXRlcnMmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBzeXN0ZW1EaXJlY3RvcnlTdWZmaXgoY29uc3QgU3RyaW5nJiBjbGllbnRQcm9j
ZXNzTmFtZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc2FuZGJveFByb2Zp
bGVQYXRoKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKIAogICAgIC8vIENvcmVJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRX
b3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxNDAz
NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxOCArNDYsNiBAQCBleHRlcm4g
IkMiIGludCBzYW5kYm94X2luaXRfd2l0aF9wYXJhbWV0CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdGF0aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveCgpCi17Ci0gICAgTlNCdW5kbGUgKndlYmtp
dDJCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJX
S1ZpZXciKV07Ci0gICAgY29uc3QgY2hhciogcHJvZmlsZVBhdGggPSBbW3dlYmtpdDJCdW5kbGUg
cGF0aEZvclJlc291cmNlOkAiY29tLmFwcGxlLldlYktpdC5TaGFyZWRXb3JrZXJQcm9jZXNzIiBv
ZlR5cGU6QCJzYiJdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07Ci0KLSAgICBjaGFyKiBlcnJv
ckJ1ZjsKLSAgICBpZiAoc2FuZGJveF9pbml0X3dpdGhfcGFyYW1ldGVycyhwcm9maWxlUGF0aCwg
U0FOREJPWF9OQU1FRF9FWFRFUk5BTCwgMCwgJmVycm9yQnVmKSkgewotICAgICAgICBXVEZMb2dB
bHdheXMoIlNoYXJlZFdvcmtlclByb2Nlc3M6IGNvdWxkbid0IGluaXRpYWxpemUgc2FuZGJveCBw
cm9maWxlIFslc10gZXJyb3IgJyVzJ1xuIiwgcHJvZmlsZVBhdGgsIGVycm9yQnVmKTsKLSAgICAg
ICAgZXhpdChFWF9OT1BFUk0pOwotICAgIH0KLX0KLQogdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNoYXJlZFdvcmtl
clByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgTlNTdHJpbmcg
KmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJ
TkcoIlNoYXJlZCBXZWIgV29ya2VyICglQCBJbnRlcm5ldCBwbHVnLWluKSIsCkBAIC02NSw4ICs1
MywyMSBAQCB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhCiAgICAgICAg
IChOU1N0cmluZyAqKXBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWVdOwogICAgIAogICAgIFdL
U2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpwcm9jZXNzQXBwZW5kU2FuZGJveFBhcmFt
ZXRlcnMoU2FuZGJveFBhcmFtZXRlcnMmKQoreworfQogCi0gICAgV2ViS2l0Ojppbml0aWFsaXpl
U2FuZGJveCgpOworU3RyaW5nIFNoYXJlZFdvcmtlclByb2Nlc3M6OnN5c3RlbURpcmVjdG9yeVN1
ZmZpeChjb25zdCBTdHJpbmcmIGNsaWVudFByb2Nlc3NOYW1lKSBjb25zdAoreworICAgIHJldHVy
biAiY29tLmFwcGxlLldlYktpdC5TaGFyZWRXb3JrZXJQcm9jZXNzKyIgKyBjbGllbnRQcm9jZXNz
TmFtZTsKK30KKworU3RyaW5nIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNhbmRib3hQcm9maWxlUGF0
aCgpIGNvbnN0Cit7CisgICAgTlNCdW5kbGUgKndlYmtpdDJCdW5kbGUgPSBbTlNCdW5kbGUgYnVu
ZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJXS1ZpZXciKV07CisgICAgcmV0dXJuIFtb
d2Via2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJjb20uYXBwbGUuV2ViS2l0LlNoYXJlZFdv
cmtlclByb2Nlc3MiIG9mVHlwZTpAInNiIl0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDAzNDQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNTMsNiArMTA1Myw4IEBACiAJCUUxQjc4NDczMTYzRjI1M0UwMDA3QjY5MiAvKiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbSAqLzsgfTsKIAkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFD
QzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovOyB9OwogCQlFMUNDMUI5MTEy
RDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQzFCOEYxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50
SW5mb01hYy5tbSAqLzsgfTsKKwkJRTFFNTUyQzQxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hQ
YXJhbWV0ZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFFNTUyQzIxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hQYXJhbWV0ZXJzTWFjLm1t
ICovOyB9OworCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveFBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTU1MkMz
MTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94UGFyYW1ldGVycy5oICovOyB9OwogCQlFMUVERkRB
NjE2Mjg4NjhFMDAzOUVDREEgLyogTWFpbk1hY1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2RkEzMTAxMUUzOTIxRTAwREIxMzcxIC8q
IE1haW5NYWNQcm9jZXNzLmNwcCAqLzsgfTsKIAkJRTFFREZEQTcxNjI4ODY5NjAwMzlFQ0RBIC8q
IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYWluTWFjLm1tICovOyB9OwogCQlFMUVERkRBODE2Mjg4Njk5MDAzOUVDREEg
LyogU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGREEyMTYyODgzOEMwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFjLm1tICovOyB9OwpAQCAtMjM3NCw2ICsyMzc2LDggQEAKIAkJRTFCNzg0NzIx
NjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAv
KiBQcmludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQ0MxQjhGMTJEN0VBREYwMDYyNTgz
OCAvKiBQcmludEluZm9NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQcmludEluZm9NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRTU1
MkMyMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94UGFyYW1ldGVyc01hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbmRib3hQYXJhbWV0ZXJzTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyog
U2FuZGJveFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Fu
ZGJveFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOTgx
NjI4N0JEMTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAvKiBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUVERkQ5RDE2Mjg3RjE5MDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vz
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODMzLDYgKzI4MzcsNyBAQAogCQkJ
CUY2QTBDMTNGMTMyODFFNkUwMDcwNDMwRiAvKiBSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCAqLywK
IAkJCQlCQzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUuaCAqLywKIAkJCQkxQUFCNEE4QzEyOTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lv
bi5oICovLAorCQkJCUUxRTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94UGFyYW1ldGVy
cy5oICovLAogCQkJCTMzMTUyOTczMTMwRDBDQjIwMEVEMjQ4MyAvKiBTZWN1cml0eU9yaWdpbkRh
dGEuY3BwICovLAogCQkJCTMzMTUyOTc0MTMwRDBDQjIwMEVEMjQ4MyAvKiBTZWN1cml0eU9yaWdp
bkRhdGEuaCAqLywKIAkJCQk1MThEMkNDODEyRDUxREZCMDAzQkI5M0IgLyogU2Vzc2lvblN0YXRl
LmNwcCAqLywKQEAgLTM4NTAsNiArMzg1NSw3IEBACiAJCQkJMUFGMUFDNkExNjUxNzU5RTAwQzE3
RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggKi8sCiAJCQkJMUFGMUFDNjkxNjUx
NzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tICovLAogCQkJCTFB
QUI0QUE5MTI5NkYxNTQwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uTWFjLm1tICovLAorCQkJ
CUUxRTU1MkMyMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94UGFyYW1ldGVyc01hYy5tbSAqLywK
IAkJCQk1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAq
LywKIAkJCQk1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmgg
Ki8sCiAJCQkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEu
Y3BwICovLApAQCAtNTA1MSw2ICs1MDU3LDcgQEAKIAkJCQkxQTk3RTA3NjE2QTVGOUUwMDAwQkM5
RTUgLyogTGF5ZXJUcmVlSG9zdE1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4MTVCQTAxNkE2
MjIyMTAwNTQ1MDFGIC8qIFN5bmNOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxOUI0RkY1MTZBOUVBOTcwMDY2ODc0RCAvKiBTY2hlZHVsYWJsZUxvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hQYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTYwMjksNiArNjAzNiw3IEBACiAJCQkJMUE5N0Uw
NzcxNkE1RjlFMDAwMEJDOUU1IC8qIExheWVyVHJlZUhvc3RNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTgxNUI5RjE2QTYyMjIxMDA1NDUwMUYgLyogU3luY05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTlCNEZGNDE2QTlFQTk3MDA2Njg3NEQgLyogU2No
ZWR1bGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFNTUyQzQxNkFFMDY1RjAw
NEVENjUzIC8qIFNhbmRib3hQYXJhbWV0ZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE0MDM0NCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNzksMTAgKzEwNzksNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9j
ZXNzTmFtZShjCiB7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKLXsKLX0KLQogdm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTQwMzQ0KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMCArMjY2LDE0IEBA
IHByaXZhdGU6CiAgICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hp
bGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9u
UGFyYW1ldGVycyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ29ubmVj
dGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFRlcm1pbmF0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGUoKSBP
VkVSUklERTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBcHBl
bmRTYW5kYm94UGFyYW1ldGVycyhTYW5kYm94UGFyYW1ldGVycyYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgU3RyaW5nIHN5c3RlbURpcmVjdG9yeVN1ZmZpeChjb25zdCBTdHJpbmcmIGNsaWVudFBy
b2Nlc3NOYW1lKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzYW5kYm94UHJv
ZmlsZVBhdGgoKSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NNYWMubW0JKHJldmlzaW9uIDE0MDM0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1dlYlByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDIzICs1MSw2IEBACiAj
aW1wb3J0ICJTZWNJdGVtU2hpbS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCX1BST0NFU1Nf
U0FOREJPWCkKLSNpbXBvcnQgPHB3ZC5oPgotI2ltcG9ydCA8c3RkbGliLmg+Ci0jaW1wb3J0IDxz
eXNleGl0cy5oPgotCi0vLyBXZSBoYXZlIHRvICN1bmRlZiBfX0FQUExFX0FQSV9QUklWQVRFIHRv
IHByZXZlbnQgc2FuZGJveC5oIGZyb20gbG9va2luZyBmb3IgYSBoZWFkZXIgZmlsZSB0aGF0IGRv
ZXMgbm90IGV4aXN0ICg8cmRhcjovL3Byb2JsZW0vOTY3OTIxMT4pLiAKLSN1bmRlZiBfX0FQUExF
X0FQSV9QUklWQVRFCi0jaW1wb3J0IDxzYW5kYm94Lmg+Ci0KLSNkZWZpbmUgU0FOREJPWF9OQU1F
RF9FWFRFUk5BTCAweDAwMDMKLWV4dGVybiAiQyIgaW50IHNhbmRib3hfaW5pdF93aXRoX3BhcmFt
ZXRlcnMoY29uc3QgY2hhciAqcHJvZmlsZSwgdWludDY0X3QgZmxhZ3MsIGNvbnN0IGNoYXIgKmNv
bnN0IHBhcmFtZXRlcnNbXSwgY2hhciAqKmVycm9yYnVmKTsKLQotLy8gRGVmaW5lIHRoaXMgdG8g
MSB0byBieXBhc3MgdGhlIHNhbmRib3ggZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KLSNkZWZpbmUg
REVCVUdfQllQQVNTX1NBTkRCT1ggMAotCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0xNTQsMTA4ICsxMzcsNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhCiAgICAgfSk7CiB9CiAKLSNpZiBFTkFC
TEUoV0VCX1BST0NFU1NfU0FOREJPWCkKLXN0YXRpYyB2b2lkIGFwcGVuZFNhbmRib3hQYXJhbWV0
ZXJQYXRoSW50ZXJuYWwoVmVjdG9yPGNvbnN0IGNoYXIqPiYgdmVjdG9yLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiBwYXRoKQotewotICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9N
QVhdOwotICAgIGlmICghcmVhbHBhdGgocGF0aCwgbm9ybWFsaXplZFBhdGgpKQotICAgICAgICBu
b3JtYWxpemVkUGF0aFswXSA9ICdcMCc7Ci0KLSAgICB2ZWN0b3IuYXBwZW5kKG5hbWUpOwotICAg
IHZlY3Rvci5hcHBlbmQoZmFzdFN0ckR1cChub3JtYWxpemVkUGF0aCkpOwotfQotCi1zdGF0aWMg
dm9pZCBhcHBlbmRSZWFkd3JpdGVDb25mRGlyZWN0b3J5KFZlY3Rvcjxjb25zdCBjaGFyKj4mIHZl
Y3RvciwgY29uc3QgY2hhciogbmFtZSwgaW50IGNvbmZJRCkKLXsKLSAgICBjaGFyIHBhdGhbUEFU
SF9NQVhdOwotICAgIGlmIChjb25mc3RyKGNvbmZJRCwgcGF0aCwgUEFUSF9NQVgpIDw9IDApCi0g
ICAgICAgIHBhdGhbMF0gPSAnXDAnOwotCi0gICAgYXBwZW5kU2FuZGJveFBhcmFtZXRlclBhdGhJ
bnRlcm5hbCh2ZWN0b3IsIG5hbWUsIHBhdGgpOwotfQotCi1zdGF0aWMgdm9pZCBhcHBlbmRSZWFk
b25seVNhbmRib3hEaXJlY3RvcnkoVmVjdG9yPGNvbnN0IGNoYXIqPiYgdmVjdG9yLCBjb25zdCBj
aGFyKiBuYW1lLCBOU1N0cmluZyAqcGF0aCkKLXsKLSAgICBhcHBlbmRTYW5kYm94UGFyYW1ldGVy
UGF0aEludGVybmFsKHZlY3RvciwgbmFtZSwgW3BhdGggbGVuZ3RoXSA/IFsoTlNTdHJpbmcgKilw
YXRoIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0gOiAiIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGFw
cGVuZFJlYWR3cml0ZVNhbmRib3hEaXJlY3RvcnkoVmVjdG9yPGNvbnN0IGNoYXIqPiYgdmVjdG9y
LCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBwYXRoKQotewotICAgIGFwcGVuZFNhbmRi
b3hQYXJhbWV0ZXJQYXRoSW50ZXJuYWwodmVjdG9yLCBuYW1lLCBwYXRoKTsKLX0KLQotI2VuZGlm
Ci0KLXZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNz
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY2hhbmdlQ3VycmVudERpcmVjdG9yeVBhdGg6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBidW5kbGVQYXRoXV07Ci0KLSNpZiBFTkFCTEUoV0VCX1BST0NFU1NfU0FO
REJPWCkKLQotI2lmIERFQlVHX0JZUEFTU19TQU5EQk9YCi0gICAgV1RGTG9nQWx3YXlzKCJCeXBh
c3Npbmcgd2ViIHByb2Nlc3Mgc2FuZGJveC5cbiIpOwotICAgIHJldHVybjsKLSNlbmRpZgotCi0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCi0gICAgLy8gVXNlIHBy
aXZhdGUgdGVtcG9yYXJ5IGFuZCBjYWNoZSBkaXJlY3Rvcmllcy4KLSAgICBTdHJpbmcgc3lzdGVt
RGlyZWN0b3J5U3VmZml4ID0gImNvbS5hcHBsZS5XZWJQcm9jZXNzKyIgKyBwYXJhbWV0ZXJzLmNs
aWVudElkZW50aWZpZXI7Ci0gICAgc2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIiwg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5c3RlbURpcmVjdG9yeVN1ZmZpeCkuZGF0YSgpLCAw
KTsKLSAgICBjaGFyIHRlbXBvcmFyeURpcmVjdG9yeVtQQVRIX01BWF07Ci0gICAgaWYgKCFjb25m
c3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9yYXJ5RGlyZWN0b3J5LCBzaXplb2Yo
dGVtcG9yYXJ5RGlyZWN0b3J5KSkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJXZWJQcm9jZXNz
OiBjb3VsZG4ndCByZXRyaWV2ZSBwcml2YXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0aDogJWRc
biIsIGVycm5vKTsKLSAgICAgICAgZXhpdChFWF9OT1BFUk0pOwotICAgIH0KLSAgICBzZXRlbnYo
IlRNUERJUiIsIHRlbXBvcmFyeURpcmVjdG9yeSwgMSk7Ci0jZW5kaWYKLQotICAgIE5TQnVuZGxl
ICp3ZWJraXQyQnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3Ry
aW5nKEAiV0tWaWV3IildOwotCi0gICAgVmVjdG9yPGNvbnN0IGNoYXIqPiBzYW5kYm94UGFyYW1l
dGVyczsKLQotICAgIC8vIFRoZXNlIGFyZSByZWFkLW9ubHkuCi0gICAgYXBwZW5kUmVhZG9ubHlT
YW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0ZXJzLCAiV0VCS0lUMl9GUkFNRVdPUktfRElS
IiwgW1t3ZWJraXQyQnVuZGxlIGJ1bmRsZVBhdGhdIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENv
bXBvbmVudF0pOwotCi0gICAgLy8gVGhlc2UgYXJlIHJlYWQtd3JpdGUgZ2V0Y29uZiBwYXRocy4K
LSAgICBhcHBlbmRSZWFkd3JpdGVDb25mRGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0ZXJzLCAiREFS
V0lOX1VTRVJfVEVNUF9ESVIiLCBfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIpOwotICAgIGFwcGVu
ZFJlYWR3cml0ZUNvbmZEaXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMsICJEQVJXSU5fVVNFUl9D
QUNIRV9ESVIiLCBfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSKTsKLQotICAgIGNoYXIgYnVmZmVy
WzQwOTZdOwotICAgIGludCBidWZmZXJTaXplID0gc2l6ZW9mKGJ1ZmZlcik7Ci0gICAgc3RydWN0
IHBhc3N3ZCBwd2Q7Ci0gICAgc3RydWN0IHBhc3N3ZCogcmVzdWx0ID0gMDsKLSAgICBpZiAoZ2V0
cHd1aWRfcihnZXR1aWQoKSwgJnB3ZCwgYnVmZmVyLCBidWZmZXJTaXplLCAmcmVzdWx0KSB8fCAh
cmVzdWx0KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiV2ViUHJvY2VzczogQ291bGRuJ3QgZmlu
ZCBob21lIGRpcmVjdG9yeVxuIik7Ci0gICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKLSAgICB9Ci0K
LSAgICAvLyBUaGVzZSBhcmUgcmVhZC13cml0ZSBwYXRocy4KLSAgICBhcHBlbmRSZWFkd3JpdGVT
YW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0ZXJzLCAiSE9NRV9ESVIiLCBwd2QucHdfZGly
KTsKLQotICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oMCkpOwotCi0gICAgY29uc3QgY2hhciogcHJvZmlsZVBhdGggPSBbW3dlYmtpdDJCdW5kbGUg
cGF0aEZvclJlc291cmNlOkAiY29tLmFwcGxlLldlYlByb2Nlc3MiIG9mVHlwZTpAInNiIl0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKLQotICAgIGNoYXIqIGVycm9yQnVmOwotICAgIGlmIChz
YW5kYm94X2luaXRfd2l0aF9wYXJhbWV0ZXJzKHByb2ZpbGVQYXRoLCBTQU5EQk9YX05BTUVEX0VY
VEVSTkFMLCBzYW5kYm94UGFyYW1ldGVycy5kYXRhKCksICZlcnJvckJ1ZikpIHsKLSAgICAgICAg
V1RGTG9nQWx3YXlzKCJXZWJQcm9jZXNzOiBDb3VsZG4ndCBpbml0aWFsaXplIHNhbmRib3ggcHJv
ZmlsZSBbJXNdIGVycm9yICclcydcbiIsIHByb2ZpbGVQYXRoLCBlcnJvckJ1Zik7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBzYW5kYm94UGFyYW1ldGVyc1tpXTsgaSArPSAyKQotICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCIlcz0lc1xuIiwgc2FuZGJveFBhcmFtZXRlcnNbaV0sIHNhbmRi
b3hQYXJhbWV0ZXJzW2kgKyAxXSk7Ci0gICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKLSAgICB9Ci0K
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgc2FuZGJveFBhcmFtZXRlcnNbaV07IGkgKz0gMikKLSAg
ICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDxjaGFyKj4oc2FuZGJveFBhcmFtZXRlcnNbaSArIDFd
KSk7Ci0KLSAgICAvLyBUaGlzIHdpbGwgb3ZlcnJpZGUgTFNGaWxlUXVhcmFudGluZUVuYWJsZWQg
ZnJvbSBJbmZvLnBsaXN0IHVubGVzcyBzYW5kYm94IHF1YXJhbnRpbmUgaXMgZ2xvYmFsbHkgZGlz
YWJsZWQuCi0gICAgT1NTdGF0dXMgZXJyb3IgPSBXS0VuYWJsZVNhbmRib3hTdHlsZUZpbGVRdWFy
YW50aW5lKCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiV2ViUHJv
Y2VzczogQ291bGRuJ3QgZW5hYmxlIHNhbmRib3ggc3R5bGUgZmlsZSBxdWFyYW50aW5lOiAlbGRc
biIsIChsb25nKWVycm9yKTsKLSAgICAgICAgZXhpdChFWF9OT1BFUk0pOwotICAgIH0KLSNlbmRp
ZgotfQotCiBzdGF0aWMgaWQgTlNBcHBsaWNhdGlvbkFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVt
ZW50KE5TQXBwbGljYXRpb24qLCBTRUwpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmZvY3VzZWRXZWJQYWdlKCk7CkBAIC0zMjEsNCArMjAyLDE5IEBAIHZvaWQg
V2ViUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogICAgIH0KIH0KIAordm9pZCBXZWJQcm9j
ZXNzOjpwcm9jZXNzQXBwZW5kU2FuZGJveFBhcmFtZXRlcnMoU2FuZGJveFBhcmFtZXRlcnMmKQor
eworfQorCitTdHJpbmcgV2ViUHJvY2Vzczo6c3lzdGVtRGlyZWN0b3J5U3VmZml4KGNvbnN0IFN0
cmluZyYgY2xpZW50UHJvY2Vzc05hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuICJjb20uYXBwbGUu
V2ViUHJvY2VzcysiICsgY2xpZW50UHJvY2Vzc05hbWU7Cit9CisKK1N0cmluZyBXZWJQcm9jZXNz
OjpzYW5kYm94UHJvZmlsZVBhdGgoKSBjb25zdAoreworICAgIE5TQnVuZGxlICp3ZWJraXQyQnVu
ZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiV0tWaWV3
IildOworICAgIHJldHVybiBbW3dlYmtpdDJCdW5kbGUgcGF0aEZvclJlc291cmNlOkAiY29tLmFw
cGxlLldlYlByb2Nlc3MiIG9mVHlwZTpAInNiIl0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="commit-queue"
          id="202385"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184071</attachid>
            <date>2013-01-22 16:32:26 -0800</date>
            <delta_ts>2013-01-22 16:33:54 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>InitializeSandbox.txt</filename>
            <type>text/plain</type>
            <size>36140</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAxLTIyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc2FuZGJveCBpbml0
aWFsaXphdGlvbiB0byBDaGlsZFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNzQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6IFJlbW92ZWQuIFdlIG5vIGxv
bmdlciBuZWVkIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgdG8gYmUgaW1wbGVtZW50ZWQgaW4gZWFj
aCBwcm9jZXNzIHR5cGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1By
b2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94KTogUmVtb3Zl
ZCBhIGN1c3RvbSAoYW5kIGluY29tcGxldGUpIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1VwZGF0ZVNhbmRib3hJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMpOiBDbGVhcgorICAgICAgICBzYW5kYm94IHByb2ZpbGUgcGF0aCBpbiBwYXJhbWV0
ZXJzLCB0ZWxsaW5nIENoaWxkUHJvY2VzcyB0byBub3QgZW50ZXIgYSBzYW5kYm94LgorCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgQWRkZWQgRklYTUVzLCBzYXlp
bmcgdGhhdCB3ZSBzaG91bGQgc3dpdGNoIHRvIENoaWxkUHJvY2VzcyBpbXBsZW1lbnRhdGlvbi4K
KworICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwOiBEdW1teSBpbXBsZW1lbnRhdGlv
bnMgZm9yIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3Mu
aDogQWRkZWQgcHJvY2Vzc1VwZGF0ZVNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMsIHdo
aWNoCisgICAgICAgIGNoaWxkIHByb2Nlc3NlcyB3aWxsIG92ZXJyaWRlIHRvIGNoYW5nZSBzYW5k
Ym94IGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvU2FuZGJv
eEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFj
L1NhbmRib3hJbml0aWFsaWF0aW9uUGFyYW1ldGVyc01hYy5tbTogQWRkZWQuCisgICAgICAgIEFi
c3RyYWN0cyBvdXQgc2FuZGJveCBwYXJhbWV0ZXIgdmVjdG9yIGZvciBjb2Rpbmcgc2FmZXR5LiBF
bmNhcHN1bGF0ZXMgb3RoZXIKKyAgICAgICAgdGhpbmdzIHRoYXQgc3ViY2xhc3NlcyB3aWxsIHdh
bnQgdG8gZG8gZGlmZmVyZW50bHkuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vz
c01hYy5tbTogKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAg
ICAgIEFkZGVkIGEgc2hhcmVkIGltcGxlbWVudGF0aW9uLCBiYXNlZCBsYXJnZWx5IG9uIFdlYlBy
b2Nlc3MgdmVyc2lvbi4KKworICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJl
ZFdvcmtlclByb2Nlc3NNYWMubW06IFJlbW92ZWQgY3VzdG9tIHNhbmRib3hpbmcgY29kZS4KKwor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgU2FuZGJv
eEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyBmaWxlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAg
ICAgIFVwZGF0ZWQgZHVtbXkgaW1wbGVtZW50YXRpb25zIHRvIG1hdGNoIENoaWxkUHJvY2Vzcy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQpOiBNb3ZlZCBzYW5kYm94aW5nIGNvZGUgdG8gQ2hpbGRQcm9jZXNzLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzVXBkYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVycyk6IE92ZXJyaWRlCisgICAgICAgIHByb2ZpbGUgcGF0aCwgYmVjYXVzZSBkZWZhdWx0
IG9uZSBkb2Vzbid0IHdvcmsgZm9yIFdlYlByb2Nlc3NTZXJ2aWNlLgorCiAyMDEzLTAxLTIyICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gRW5h
YmxlIFBhZ2UgVmlzaWJpbGl0eSAoUEFHRV9WSVNJQklMSVRZX0FQSSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDE0MDM0NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVQcm9jZXNzTmEKIHsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5p
dGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NVcGRhdGVTYW5kYm94SW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYs
IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogfQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlz
aW9uIDE0MDM0NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDkgKzc4LDkgQEAgcHJpdmF0ZToKIAogICAgIC8v
IENoaWxkUHJvY2VzcwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
Q29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFRlcm1pbmF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
VXBkYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyhjb25zdCBDaGlsZFByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmLCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JikgT1ZFUlJJREU7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1By
b2Nlc3NNYWMubW0JKHJldmlzaW9uIDE0MDM0NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bXBvcnQgIlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5z
aW9uLmgiCisjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1w
b3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CkBAIC02NCwzNyArNjUsNiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hCiAgICAgfQogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjaGFuZ2VDdXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIGJ1bmRsZVBhdGhdXTsKLQotI2lmIERFQlVHX0JZUEFTU19TQU5EQk9YCi0gICAg
V1RGTG9nQWx3YXlzKCJCeXBhc3NpbmcgbmV0d29yayBwcm9jZXNzIHNhbmRib3guXG4iKTsKLSAg
ICByZXR1cm47Ci0jZW5kaWYKLQotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA4MAotICAgIC8vIFVzZSBwcml2YXRlIHRlbXBvcmFyeSBhbmQgY2FjaGUgZGlyZWN0b3Jp
ZXMuCi0gICAgU3RyaW5nIHN5c3RlbURpcmVjdG9yeVN1ZmZpeCA9ICJjb20uYXBwbGUuV2ViS2l0
Lk5ldHdvcmtQcm9jZXNzKyIgKyBwYXJhbWV0ZXJzLmNsaWVudElkZW50aWZpZXI7Ci0gICAgc2V0
ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHN5c3RlbURpcmVjdG9yeVN1ZmZpeCkuZGF0YSgpLCAwKTsKLSAgICBjaGFyIHRlbXBvcmFyeURp
cmVjdG9yeVtQQVRIX01BWF07Ci0gICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1Q
X0RJUiwgdGVtcG9yYXJ5RGlyZWN0b3J5LCBzaXplb2YodGVtcG9yYXJ5RGlyZWN0b3J5KSkpIHsK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrUHJvY2VzczogY291bGRuJ3QgcmV0cmlldmUg
cHJpdmF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVkXG4iLCBlcnJubyk7Ci0gICAgICAg
IGV4aXQoRVhfTk9QRVJNKTsKLSAgICB9Ci0gICAgc2V0ZW52KCJUTVBESVIiLCB0ZW1wb3JhcnlE
aXJlY3RvcnksIDEpOwotI2VuZGlmCi0KLSAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiA8
cmRhcjovL3Byb2JsZW0vMTI3NzI2MDU+IEFjdHVhbGx5IGluaXRpYWxpemUgdGhlIHNhbmRib3gu
Ci0KLSAgICAvLyBUaGlzIHdpbGwgb3ZlcnJpZGUgTFNGaWxlUXVhcmFudGluZUVuYWJsZWQgZnJv
bSBJbmZvLnBsaXN0IHVubGVzcyBzYW5kYm94IHF1YXJhbnRpbmUgaXMgZ2xvYmFsbHkgZGlzYWJs
ZWQuCi0gICAgT1NTdGF0dXMgZXJyb3IgPSBXS0VuYWJsZVNhbmRib3hTdHlsZUZpbGVRdWFyYW50
aW5lKCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya1By
b2Nlc3M6IENvdWxkbid0IGVuYWJsZSBzYW5kYm94IHN0eWxlIGZpbGUgcXVhcmFudGluZTogJWxk
XG4iLCAobG9uZyllcnJvcik7Ci0gICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKLSAgICB9Ci19Ci0K
ICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIHN0YXRpYyB2b2lk
IG92ZXJyaWRlU3lzdGVtUHJveGllcyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3Ry
aW5nJiBodHRwc1Byb3h5KQogewpAQCAtMjA4LDYgKzE3OCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDCiAgICAgW05TVVJMUmVxdWVzdCBzZXRBbGxvd3NTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGU6KE5TQXJyYXkgKiljZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNh
dGVDaGFpbigpIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdF07CiB9CiAKKy8vIEZJWE1FOiBSZW1v
dmUgd2hlbiB0aGUgcHJvY2VzcyBoYXMgYSBwcm9maWxlLgordm9pZCBOZXR3b3JrUHJvY2Vzczo6
cHJvY2Vzc1VwZGF0ZVNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMoY29uc3QgQ2hpbGRQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiwgU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBwYXJhbWV0ZXJzLnNldFNhbmRib3hQcm9maWxl
UGF0aChTdHJpbmcoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCShyZXZpc2lvbiAxNDAzNDQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiAr
NzYsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzcyhjb25z
dCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgT1ZFUlJJREU7CiAKKyAgICAvLyBGSVhNRTog
UGx1Z2luUHJvY2VzcyBzaG91bGQgc3dpdGNoIHRvIGNvbW1vbiBjb2RlIGZvciBzYW5kYm94IGlu
aXRpYWxpemF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBD
aGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBPVkVSUklERSB7IH0KKwogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmKTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dApJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVn
aW5Qcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxNDAzNDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIs
NiArMzUyLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQbAogICAg
IAogICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRp
b25OYW1lKTsKIAorICAgIC8vIEZJWE1FOiBVc2UgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2Fu
ZGJveC4KICAgICBXZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94KG1fcGx1Z2luUGF0aCwgcGFyYW1l
dGVycy5zYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGgpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMu
cHJvY2Vzc1R5cGUgPT0gVHlwZVNuYXBzaG90UHJvY2VzcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNDAzNDQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsOSArODYsMTUg
QEAgdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZQogewogfQogCisjaWYg
IVBMQVRGT1JNKE1BQykKIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25z
dCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogfQorI2VuZGlmCisK
K3ZvaWQgQ2hpbGRQcm9jZXNzOjpwcm9jZXNzVXBkYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVycyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmLCBTYW5k
Ym94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKK3sKK30KIAogdm9pZCBDaGlsZFByb2Nlc3M6
OmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qKQogewpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaAkocmV2aXNpb24gMTQwMzQ0KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBTYW5kYm94SW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzOworCiBzdHJ1Y3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzIHsKICAgICBTdHJpbmcgdWlQcm9jZXNzTmFtZTsKICAgICBTdHJpbmcgY2xpZW50SWRlbnRp
ZmllcjsKQEAgLTc3LDcgKzc5LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYpOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
OwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0
aW9uKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgPSAwOwpAQCAtODcs
NiArODgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdGVybWluYXRpb25UaW1lckZpcmVkKCk7CiAK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0
aW9uIGlzIHZpcnR1YWwgb25seSBiZWNhdXNlIFBsdWdpblByb2Nlc3MgbmVlZHMgdG8gYnlwYXNz
IGl0LiBJdCBzaG91bGQgc3dpdGNoIHRvIGNvbW1vbiBjb2RlLgorICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1VwZGF0ZVNhbmRib3hJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiwg
U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwogCiAgICAgLy8gVGhlIHRpbWVvdXQs
IGluIHNlY29uZHMsIGJlZm9yZSB0aGlzIHByb2Nlc3Mgd2lsbCBiZSB0ZXJtaW5hdGVkIGlmIHRl
cm1pbmF0aW9uCiAgICAgLy8gaGFzIGJlZW4gZW5hYmxlZC4gSWYgdGhlIHRpbWVvdXQgaXMgMCBz
ZWNvbmRzLCB0aGUgcHJvY2VzcyB3aWxsIGJlIHRlcm1pbmF0ZWQgaW1tZWRpYXRlbHkuCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5kYm94SW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Fu
ZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
X2gKKyNkZWZpbmUgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyc19oCisKKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsK
K1dURl9NQUtFX05PTkNPUFlBQkxFKFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMpOwor
cHVibGljOgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNhbmRib3hJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMoKTsKKyAgICB+U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycygpOworCisg
ICAgLy8gTmFtZSBtdXN0IGJlIGEgbGl0ZXJhbC4KKyAgICB2b2lkIGFkZENvbmZEaXJlY3RvcnlQ
YXJhbWV0ZXIoY29uc3QgY2hhciogbmFtZSwgaW50IGNvbmZJRCk7CisgICAgdm9pZCBhZGRQYXRo
UGFyYW1ldGVyKGNvbnN0IGNoYXIqIG5hbWUsIE5TU3RyaW5nICpwYXRoKTsKKyAgICB2b2lkIGFk
ZFBhdGhQYXJhbWV0ZXIoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogcGF0aCk7CisKKyAg
ICBjb25zdCBjaGFyKiBjb25zdCogbmFtZWRQYXJhbWV0ZXJBcnJheSgpIGNvbnN0OworCisgICAg
c2l6ZV90IGNvdW50KCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogbmFtZShzaXplX3QgaW5kZXgp
IGNvbnN0OworICAgIGNvbnN0IGNoYXIqIHZhbHVlKHNpemVfdCBpbmRleCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldFNhbmRib3hQcm9maWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIHsgbV9zYW5k
Ym94UHJvZmlsZVBhdGggPSBwYXRoOyBtX3NhbmRib3hQcm9maWxlID0gU3RyaW5nKCk7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm9maWxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Fu
ZGJveFByb2ZpbGVQYXRoOyB9CisKKyAgICB2b2lkIHNldFNhbmRib3hQcm9maWxlKGNvbnN0IFN0
cmluZyYgcHJvZmlsZSkgeyBtX3NhbmRib3hQcm9maWxlUGF0aCA9IFN0cmluZygpOyBtX3NhbmRi
b3hQcm9maWxlID0gcHJvZmlsZTsgfQorICAgIGNvbnN0IFN0cmluZyYgc2FuZGJveFByb2ZpbGUo
KSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hQcm9maWxlOyB9CisKKyAgICB2b2lkIHNldFN5c3Rl
bURpcmVjdG9yeVN1ZmZpeChjb25zdCBTdHJpbmcmIHN1ZmZpeCkgeyBtX3N5c3RlbURpcmVjdG9y
eVN1ZmZpeCA9IHN1ZmZpeDsgfQorICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtRGlyZWN0b3J5U3Vm
Zml4KCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1EaXJlY3RvcnlTdWZmaXg7IH0KKyNlbmRpZgor
Citwcml2YXRlOgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIGFwcGVuZFBhdGhJbnRlcm5h
bChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBwYXRoKTsKKworICAgIG11dGFibGUgVmVj
dG9yPGNvbnN0IGNoYXIqPiBtX25hbWVkUGFyYW1ldGVyczsKKyAgICBTdHJpbmcgbV9zeXN0ZW1E
aXJlY3RvcnlTdWZmaXg7CisKKyAgICBTdHJpbmcgbV9zYW5kYm94UHJvZmlsZVBhdGg7CisgICAg
U3RyaW5nIG1fc2FuZGJveFByb2ZpbGU7CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIFNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnNfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDE0MDM0NCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw4ICsyNiwyMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJD
aGlsZFByb2Nlc3MuaCIKIAorI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVy
cy5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPG1hY2gvdGFzay5oPgorI2ltcG9ydCA8cHdkLmg+Cisj
aW1wb3J0IDxzdGRsaWIuaD4KKyNpbXBvcnQgPHN5c2V4aXRzLmg+CisKKy8vIFdlIGhhdmUgdG8g
I3VuZGVmIF9fQVBQTEVfQVBJX1BSSVZBVEUgdG8gcHJldmVudCBzYW5kYm94LmggZnJvbSBsb29r
aW5nIGZvciBhIGhlYWRlciBmaWxlIHRoYXQgZG9lcyBub3QgZXhpc3QgKDxyZGFyOi8vcHJvYmxl
bS85Njc5MjExPikuIAorI3VuZGVmIF9fQVBQTEVfQVBJX1BSSVZBVEUKKyNpbXBvcnQgPHNhbmRi
b3guaD4KKworI2RlZmluZSBTQU5EQk9YX05BTUVEX0VYVEVSTkFMIDB4MDAwMworZXh0ZXJuICJD
IiBpbnQgc2FuZGJveF9pbml0X3dpdGhfcGFyYW1ldGVycyhjb25zdCBjaGFyICpwcm9maWxlLCB1
aW50NjRfdCBmbGFncywgY29uc3QgY2hhciAqY29uc3QgcGFyYW1ldGVyc1tdLCBjaGFyICoqZXJy
b3JidWYpOworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTY0LDQgKzc4LDczIEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emUoKQogICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CiB9CiAKK3ZvaWQgQ2hp
bGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjaGFuZ2VDdXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIGJ1bmRsZVBhdGhdXTsKKworICAgIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMg
c2FuZGJveFBhcmFtZXRlcnM7CisKKyAgICBOU0J1bmRsZSAqd2Via2l0MkJ1bmRsZSA9IFtOU0J1
bmRsZSBidW5kbGVGb3JDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIldLVmlldyIpXTsKKyAgICBO
U1N0cmluZyAqZGVmYXVsdFByb2ZpbGVQYXRoID0gW3dlYmtpdDJCdW5kbGUgcGF0aEZvclJlc291
cmNlOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gb2ZUeXBlOkAic2Ii
XTsKKworICAgIHNhbmRib3hQYXJhbWV0ZXJzLnNldFNhbmRib3hQcm9maWxlUGF0aChkZWZhdWx0
UHJvZmlsZVBhdGgpOworCisgICAgU3RyaW5nIGRlZmF1bHRTeXN0ZW1EaXJlY3RvcnlTdWZmaXgg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdICsgcGFyYW1ldGVycy5j
bGllbnRJZGVudGlmaWVyOworICAgIHNhbmRib3hQYXJhbWV0ZXJzLnNldFN5c3RlbURpcmVjdG9y
eVN1ZmZpeChkZWZhdWx0U3lzdGVtRGlyZWN0b3J5U3VmZml4KTsKKworICAgIHNhbmRib3hQYXJh
bWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIldFQktJVDJfRlJBTUVXT1JLX0RJUiIsIFtbd2Via2l0
MkJ1bmRsZSBidW5kbGVQYXRoXSBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdKTsK
KyAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRDb25mRGlyZWN0b3J5UGFyYW1ldGVyKCJEQVJXSU5f
VVNFUl9URU1QX0RJUiIsIF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUik7CisgICAgc2FuZGJveFBh
cmFtZXRlcnMuYWRkQ29uZkRpcmVjdG9yeVBhcmFtZXRlcigiREFSV0lOX1VTRVJfQ0FDSEVfRElS
IiwgX0NTX0RBUldJTl9VU0VSX0NBQ0hFX0RJUik7CisKKyAgICBjaGFyIGJ1ZmZlcls0MDk2XTsK
KyAgICBpbnQgYnVmZmVyU2l6ZSA9IHNpemVvZihidWZmZXIpOworICAgIHN0cnVjdCBwYXNzd2Qg
cHdkOworICAgIHN0cnVjdCBwYXNzd2QqIHJlc3VsdCA9IDA7CisgICAgaWYgKGdldHB3dWlkX3Io
Z2V0dWlkKCksICZwd2QsIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgJnJlc3VsdCkgfHwgIXJlc3VsdCkg
eworICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBmaW5kIGhvbWUgZGlyZWN0b3J5
XG4iLCBnZXRwcm9nbmFtZSgpKTsKKyAgICAgICAgZXhpdChFWF9OT1BFUk0pOworICAgIH0KKwor
ICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfRElSIiwgcHdkLnB3
X2Rpcik7CisKKyAgICBwcm9jZXNzVXBkYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyhwYXJhbWV0ZXJzLCBzYW5kYm94UGFyYW1ldGVycyk7CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwODAKKyAgICAvLyBVc2UgcHJpdmF0ZSB0ZW1wb3JhcnkgYW5k
IGNhY2hlIGRpcmVjdG9yaWVzLgorICAgIHNldGVudigiRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJ
WCIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94UGFyYW1ldGVycy5zeXN0ZW1EaXJl
Y3RvcnlTdWZmaXgoKSkuZGF0YSgpLCAwKTsKKyAgICBjaGFyIHRlbXBvcmFyeURpcmVjdG9yeVtQ
QVRIX01BWF07CisgICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVt
cG9yYXJ5RGlyZWN0b3J5LCBzaXplb2YodGVtcG9yYXJ5RGlyZWN0b3J5KSkpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCIlczogY291bGRuJ3QgcmV0cmlldmUgcHJpdmF0ZSB0ZW1wb3JhcnkgZGly
ZWN0b3J5IHBhdGg6ICVkXG4iLCBnZXRwcm9nbmFtZSgpLCBlcnJubyk7CisgICAgICAgIGV4aXQo
RVhfTk9QRVJNKTsKKyAgICB9CisgICAgc2V0ZW52KCJUTVBESVIiLCB0ZW1wb3JhcnlEaXJlY3Rv
cnksIDEpOworI2VuZGlmCisKKyAgICBpZiAoIXNhbmRib3hQYXJhbWV0ZXJzLnNhbmRib3hQcm9m
aWxlUGF0aCgpLmlzRW1wdHkoKSkgeworICAgICAgICBDU3RyaW5nIHByb2ZpbGVQYXRoID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlUGF0
aCgpKTsKKyAgICAgICAgY2hhciogZXJyb3JCdWY7CisgICAgICAgIGlmIChzYW5kYm94X2luaXRf
d2l0aF9wYXJhbWV0ZXJzKHByb2ZpbGVQYXRoLmRhdGEoKSwgU0FOREJPWF9OQU1FRF9FWFRFUk5B
TCwgc2FuZGJveFBhcmFtZXRlcnMubmFtZWRQYXJhbWV0ZXJBcnJheSgpLCAmZXJyb3JCdWYpKSB7
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBpbml0aWFsaXplIHNhbmRi
b3ggcHJvZmlsZSBbJXNdLCBlcnJvciAnJXMnXG4iLCBnZXRwcm9nbmFtZSgpLCBwcm9maWxlUGF0
aC5kYXRhKCksIGVycm9yQnVmKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3Vu
dCA9IHNhbmRib3hQYXJhbWV0ZXJzLmNvdW50KCk7IGkgIT0gY291bnQ7ICsraSkKKyAgICAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIiVzPSVzXG4iLCBzYW5kYm94UGFyYW1ldGVycy5uYW1lKGkp
LCBzYW5kYm94UGFyYW1ldGVycy52YWx1ZShpKSk7CisgICAgICAgICAgICBleGl0KEVYX05PUEVS
TSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCFzYW5kYm94UGFyYW1ldGVycy5zYW5kYm94
UHJvZmlsZSgpLmlzRW1wdHkoKSkgeworICAgICAgICBjaGFyKiBlcnJvckJ1ZjsKKyAgICAgICAg
aWYgKHNhbmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMoc2FuZGJveFBhcmFtZXRlcnMuc2FuZGJv
eFByb2ZpbGUoKS51dGY4KCkuZGF0YSgpLCAwLCBzYW5kYm94UGFyYW1ldGVycy5uYW1lZFBhcmFt
ZXRlckFycmF5KCksICZlcnJvckJ1ZikpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6
IENvdWxkbid0IGluaXRpYWxpemUgc2FuZGJveCBwcm9maWxlLCBlcnJvciAnJXMnXG4iLCBnZXRw
cm9nbmFtZSgpLCBlcnJvckJ1Zik7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291
bnQgPSBzYW5kYm94UGFyYW1ldGVycy5jb3VudCgpOyBpICE9IGNvdW50OyArK2kpCisgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCIlcz0lc1xuIiwgc2FuZGJveFBhcmFtZXRlcnMubmFtZShp
KSwgc2FuZGJveFBhcmFtZXRlcnMudmFsdWUoaSkpOworICAgICAgICAgICAgZXhpdChFWF9OT1BF
Uk0pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyB3aWxsIG92ZXJyaWRlIExTRmls
ZVF1YXJhbnRpbmVFbmFibGVkIGZyb20gSW5mby5wbGlzdCB1bmxlc3Mgc2FuZGJveCBxdWFyYW50
aW5lIGlzIGdsb2JhbGx5IGRpc2FibGVkLgorICAgIE9TU3RhdHVzIGVycm9yID0gV0tFbmFibGVT
YW5kYm94U3R5bGVGaWxlUXVhcmFudGluZSgpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBX
VEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBlbmFibGUgc2FuZGJveCBzdHlsZSBmaWxlIHF1YXJh
bnRpbmU6ICVsZFxuIiwgZ2V0cHJvZ25hbWUoKSwgKGxvbmcpZXJyb3IpOworICAgICAgICBleGl0
KEVYX05PUEVSTSk7CisgICAgfQorfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1NhbmRib3hJbml0aWFsaWF0aW9uUGFyYW1ldGVyc01hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hJbml0aWFsaWF0aW9uUGFyYW1ldGVyc01h
Yy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveElu
aXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMo
KQoreworfQorCitTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjp+U2FuZGJveEluaXRp
YWxpemF0aW9uUGFyYW1ldGVycygpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgKyAxIDwg
bV9uYW1lZFBhcmFtZXRlcnMuc2l6ZSgpOyBpICs9IDIpCisgICAgICAgIGZhc3RGcmVlKGNvbnN0
X2Nhc3Q8Y2hhcio+KG1fbmFtZWRQYXJhbWV0ZXJzW2kgKyAxXSkpOworfQorCit2b2lkIFNhbmRi
b3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OmFwcGVuZFBhdGhJbnRlcm5hbChjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBjaGFyKiBwYXRoKQoreworICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFU
SF9NQVhdOworICAgIGlmICghcmVhbHBhdGgocGF0aCwgbm9ybWFsaXplZFBhdGgpKQorICAgICAg
ICBub3JtYWxpemVkUGF0aFswXSA9ICdcMCc7CisKKyAgICBBU1NFUlQoIShtX25hbWVkUGFyYW1l
dGVycy5zaXplKCkgJSAyKSk7CisKKyAgICBtX25hbWVkUGFyYW1ldGVycy5hcHBlbmQobmFtZSk7
CisgICAgbV9uYW1lZFBhcmFtZXRlcnMuYXBwZW5kKGZhc3RTdHJEdXAobm9ybWFsaXplZFBhdGgp
KTsKK30KKwordm9pZCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjphZGRDb25mRGly
ZWN0b3J5UGFyYW1ldGVyKGNvbnN0IGNoYXIqIG5hbWUsIGludCBjb25mSUQpCit7CisgICAgY2hh
ciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpZiAoY29uZnN0cihjb25mSUQsIHBhdGgsIFBBVEhfTUFY
KSA8PSAwKQorICAgICAgICBwYXRoWzBdID0gJ1wwJzsKKworICAgIGFwcGVuZFBhdGhJbnRlcm5h
bChuYW1lLCBwYXRoKTsKK30KKwordm9pZCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
OjphZGRQYXRoUGFyYW1ldGVyKGNvbnN0IGNoYXIqIG5hbWUsIE5TU3RyaW5nICpwYXRoKQorewor
ICAgIGFwcGVuZFBhdGhJbnRlcm5hbChuYW1lLCBbcGF0aCBsZW5ndGhdID8gWyhOU1N0cmluZyAq
KXBhdGggZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSA6ICIiKTsKK30KKwordm9pZCBTYW5kYm94
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjphZGRQYXRoUGFyYW1ldGVyKGNvbnN0IGNoYXIqIG5h
bWUsIGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgYXBwZW5kUGF0aEludGVybmFsKG5hbWUsIHBh
dGgpOworfQorCitjb25zdCBjaGFyKiBjb25zdCogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVyczo6bmFtZWRQYXJhbWV0ZXJBcnJheSgpIGNvbnN0Cit7CisgICAgaWYgKCEobV9uYW1lZFBh
cmFtZXRlcnMuc2l6ZSgpICUgMikpCisgICAgICAgIG1fbmFtZWRQYXJhbWV0ZXJzLmFwcGVuZChz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oMCkpOworCisgICAgcmV0dXJuIG1fbmFtZWRQYXJhbWV0
ZXJzLmRhdGEoKTsKK30KKworc2l6ZV90IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6
OmNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYW1lZFBhcmFtZXRlcnMuc2l6ZSgpIC8g
MjsKK30KKworY29uc3QgY2hhciogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6bmFt
ZShzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGluZGV4ICE9IG1fbmFtZWRQYXJh
bWV0ZXJzLnNpemUoKSk7CisgICAgcmV0dXJuIG1fbmFtZWRQYXJhbWV0ZXJzW2luZGV4ICogMl07
Cit9CisKK2NvbnN0IGNoYXIqIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OnZhbHVl
KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYW1lZFBhcmFtZXRlcnNbaW5k
ZXggKiAyICsgMV07Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvU2FuZGJveEluaXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdv
cmtlclByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDE0MDM0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDE4ICs0Niw2IEBAIGV4dGVybiAiQyIgaW50IHNhbmRib3hfaW5pdF93aXRo
X3BhcmFtZXQKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVT
YW5kYm94KCkKLXsKLSAgICBOU0J1bmRsZSAqd2Via2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBidW5k
bGVGb3JDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIldLVmlldyIpXTsKLSAgICBjb25zdCBjaGFy
KiBwcm9maWxlUGF0aCA9IFtbd2Via2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJjb20uYXBw
bGUuV2ViS2l0LlNoYXJlZFdvcmtlclByb2Nlc3MiIG9mVHlwZTpAInNiIl0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uXTsKLQotICAgIGNoYXIqIGVycm9yQnVmOwotICAgIGlmIChzYW5kYm94X2lu
aXRfd2l0aF9wYXJhbWV0ZXJzKHByb2ZpbGVQYXRoLCBTQU5EQk9YX05BTUVEX0VYVEVSTkFMLCAw
LCAmZXJyb3JCdWYpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiU2hhcmVkV29ya2VyUHJvY2Vz
czogY291bGRuJ3QgaW5pdGlhbGl6ZSBzYW5kYm94IHByb2ZpbGUgWyVzXSBlcnJvciAnJXMnXG4i
LCBwcm9maWxlUGF0aCwgZXJyb3JCdWYpOwotICAgICAgICBleGl0KEVYX05PUEVSTSk7Ci0gICAg
fQotfQotCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJl
ZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKICAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiU2hhcmVkIFdlYiBXb3JrZXIgKCVA
IEludGVybmV0IHBsdWctaW4pIiwKQEAgLTY1LDggKzUzLDYgQEAgdm9pZCBTaGFyZWRXb3JrZXJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYQogICAgICAgICAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLnBh
cmVudFByb2Nlc3NOYW1lXTsKICAgICAKICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUo
KENGU3RyaW5nUmVmKWFwcGxpY2F0aW9uTmFtZSk7Ci0KLSAgICBXZWJLaXQ6OmluaXRpYWxpemVT
YW5kYm94KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQw
MzQ0KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUzLDYgKzEwNTMsOCBAQAogCQlFMUI3ODQ3MzE2M0YyNTNF
MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODQ3MjE2M0YyNTNFMDAwN0I2OTIgLyog
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gKi87IH07CiAJCUUxQ0MxQjkwMTJEN0VBREYwMDYy
NTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLzsgfTsK
IAkJRTFDQzFCOTExMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0MxQjhGMTJEN0VBREYwMDYy
NTgzOCAvKiBQcmludEluZm9NYWMubW0gKi87IH07CisJCUUxRTU1MkM0MTZBRTA2NUYwMDRFRDY1
MyAvKiBTYW5kYm94SW5pdGlhbGlhdGlvblBhcmFtZXRlcnNNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1NTJDMjE2QUUwNjVFMDA0RUQ2NTMg
LyogU2FuZGJveEluaXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tICovOyB9OworCQlFMUU1NTJD
NTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFNTUyQzMxNkFF
MDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsK
IAkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUw
MERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUxRURGREE3MTYyODg2OTYw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTgxNjI4ODY5
OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNzQsNiArMjM3Niw4IEBACiAJ
CUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RTEyRDdFQURG
MDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RjEyRDdF
QURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMUU1NTJDMjE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpYXRpb25QYXJh
bWV0ZXJzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Fu
ZGJveEluaXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9u
UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5kYm94SW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
RURGRDk4MTYyODdCRDEwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5QjE2Mjg3RDBCMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUQxNjI4N0YxOTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtl
clByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2Vy
UHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgzMyw2ICsyODM3LDcg
QEAKIAkJCQlGNkEwQzEzRjEzMjgxRTZFMDA3MDQzMEYgLyogUmVzb3VyY2VDYWNoZXNUb0NsZWFy
LmggKi8sCiAJCQkJQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmln
YXRpb25UeXBlLmggKi8sCiAJCQkJMUFBQjRBOEMxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hF
eHRlbnNpb24uaCAqLywKKwkJCQlFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJveElu
aXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTMzMTUyOTczMTMwRDBDQjIwMEVEMjQ4
MyAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwICovLAogCQkJCTMzMTUyOTc0MTMwRDBDQjIwMEVE
MjQ4MyAvKiBTZWN1cml0eU9yaWdpbkRhdGEuaCAqLywKIAkJCQk1MThEMkNDODEyRDUxREZCMDAz
QkI5M0IgLyogU2Vzc2lvblN0YXRlLmNwcCAqLywKQEAgLTM4NTAsNiArMzg1NSw3IEBACiAJCQkJ
MUFGMUFDNkExNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgg
Ki8sCiAJCQkJMUFGMUFDNjkxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tICovLAogCQkJCTFBQUI0QUE5MTI5NkYxNTQwMDIzOTUyRiAvKiBTYW5kYm94RXh0
ZW5zaW9uTWFjLm1tICovLAorCQkJCUUxRTU1MkMyMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94
SW5pdGlhbGlhdGlvblBhcmFtZXRlcnNNYWMubW0gKi8sCiAJCQkJNTFEMTMwNEYxMzgyRUFDMDAw
MzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi8sCiAJCQkJNTFEMTMwNTAxMzgyRUFD
MDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovLAogCQkJCTUxRDEzMDUxMTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLywKQEAgLTUwNTEsNiArNTA1
Nyw3IEBACiAJCQkJMUE5N0UwNzYxNkE1RjlFMDAwMEJDOUU1IC8qIExheWVyVHJlZUhvc3RNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxODE1QkEwMTZBNjIyMjEwMDU0NTAxRiAvKiBTeW5jTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTlCNEZGNTE2QTlFQTk3
MDA2Njg3NEQgLyogU2NoZWR1bGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxRTU1
MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTYwMjksNiArNjAzNiw3IEBACiAJCQkJMUE5N0UwNzcxNkE1RjlF
MDAwMEJDOUU1IC8qIExheWVyVHJlZUhvc3RNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTgx
NUI5RjE2QTYyMjIxMDA1NDUwMUYgLyogU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTlCNEZGNDE2QTlFQTk3MDA2Njg3NEQgLyogU2NoZWR1bGFibGVM
b2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFNTUyQzQxNkFFMDY1RjAwNEVENjUzIC8q
IFNhbmRib3hJbml0aWFsaWF0aW9uUGFyYW1ldGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNDAz
NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDc5LDcgKzEwNzksNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVQ
cm9jZXNzTmFtZShjCiB7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3go
Y29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKK3ZvaWQgV2ViUHJv
Y2Vzczo6cHJvY2Vzc1VwZGF0ZVNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMoY29uc3Qg
Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiwgU2FuZGJveEluaXRpYWxpemF0
aW9uUGFyYW1ldGVycyYpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCShyZXZpc2lvbiAxNDAzNDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDE0ICsyNjYsMTMgQEAgcHJpdmF0
ZToKICAgICAvLyBDaGlsZFByb2Nlc3MKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVByb2Nl
c3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nl
c3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uKENv
cmVJUEM6OkNvbm5lY3Rpb24qKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVy
bWluYXRlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVXBkYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVycyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmLCBTYW5k
Ym94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgT1ZFUlJJREU7CiAKICAgICB2b2lkIHBsYXRm
b3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzJik7CiAKLQogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIGZy
aWVuZCBjbGFzcyBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDE0MDM0NCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCIK
ICNpbXBvcnQgIldlYkluc3BlY3Rvci5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtNTEsMjMg
KzUyLDYgQEAKICNpbXBvcnQgIlNlY0l0ZW1TaGltLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShX
RUJfUFJPQ0VTU19TQU5EQk9YKQotI2ltcG9ydCA8cHdkLmg+Ci0jaW1wb3J0IDxzdGRsaWIuaD4K
LSNpbXBvcnQgPHN5c2V4aXRzLmg+Ci0KLS8vIFdlIGhhdmUgdG8gI3VuZGVmIF9fQVBQTEVfQVBJ
X1BSSVZBVEUgdG8gcHJldmVudCBzYW5kYm94LmggZnJvbSBsb29raW5nIGZvciBhIGhlYWRlciBm
aWxlIHRoYXQgZG9lcyBub3QgZXhpc3QgKDxyZGFyOi8vcHJvYmxlbS85Njc5MjExPikuIAotI3Vu
ZGVmIF9fQVBQTEVfQVBJX1BSSVZBVEUKLSNpbXBvcnQgPHNhbmRib3guaD4KLQotI2RlZmluZSBT
QU5EQk9YX05BTUVEX0VYVEVSTkFMIDB4MDAwMwotZXh0ZXJuICJDIiBpbnQgc2FuZGJveF9pbml0
X3dpdGhfcGFyYW1ldGVycyhjb25zdCBjaGFyICpwcm9maWxlLCB1aW50NjRfdCBmbGFncywgY29u
c3QgY2hhciAqY29uc3QgcGFyYW1ldGVyc1tdLCBjaGFyICoqZXJyb3JidWYpOwotCi0vLyBEZWZp
bmUgdGhpcyB0byAxIHRvIGJ5cGFzcyB0aGUgc2FuZGJveCBmb3IgZGVidWdnaW5nIHB1cnBvc2Vz
LgotI2RlZmluZSBERUJVR19CWVBBU1NfU0FOREJPWCAwCi0KLSNlbmRpZgotCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTE1NCwxMDggKzEzOCw2
IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2EKICAgICB9KTsKIH0K
IAotI2lmIEVOQUJMRShXRUJfUFJPQ0VTU19TQU5EQk9YKQotc3RhdGljIHZvaWQgYXBwZW5kU2Fu
ZGJveFBhcmFtZXRlclBhdGhJbnRlcm5hbChWZWN0b3I8Y29uc3QgY2hhcio+JiB2ZWN0b3IsIGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHBhdGgpCi17Ci0gICAgY2hhciBub3JtYWxpemVk
UGF0aFtQQVRIX01BWF07Ci0gICAgaWYgKCFyZWFscGF0aChwYXRoLCBub3JtYWxpemVkUGF0aCkp
Ci0gICAgICAgIG5vcm1hbGl6ZWRQYXRoWzBdID0gJ1wwJzsKLQotICAgIHZlY3Rvci5hcHBlbmQo
bmFtZSk7Ci0gICAgdmVjdG9yLmFwcGVuZChmYXN0U3RyRHVwKG5vcm1hbGl6ZWRQYXRoKSk7Ci19
Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZFJlYWR3cml0ZUNvbmZEaXJlY3RvcnkoVmVjdG9yPGNvbnN0
IGNoYXIqPiYgdmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgY29uZklEKQotewotICAgIGNo
YXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaWYgKGNvbmZzdHIoY29uZklELCBwYXRoLCBQQVRIX01B
WCkgPD0gMCkKLSAgICAgICAgcGF0aFswXSA9ICdcMCc7Ci0KLSAgICBhcHBlbmRTYW5kYm94UGFy
YW1ldGVyUGF0aEludGVybmFsKHZlY3RvciwgbmFtZSwgcGF0aCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IGFwcGVuZFJlYWRvbmx5U2FuZGJveERpcmVjdG9yeShWZWN0b3I8Y29uc3QgY2hhcio+JiB2ZWN0
b3IsIGNvbnN0IGNoYXIqIG5hbWUsIE5TU3RyaW5nICpwYXRoKQotewotICAgIGFwcGVuZFNhbmRi
b3hQYXJhbWV0ZXJQYXRoSW50ZXJuYWwodmVjdG9yLCBuYW1lLCBbcGF0aCBsZW5ndGhdID8gWyhO
U1N0cmluZyAqKXBhdGggZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSA6ICIiKTsKLX0KLQotc3Rh
dGljIHZvaWQgYXBwZW5kUmVhZHdyaXRlU2FuZGJveERpcmVjdG9yeShWZWN0b3I8Y29uc3QgY2hh
cio+JiB2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHBhdGgpCi17Ci0gICAg
YXBwZW5kU2FuZGJveFBhcmFtZXRlclBhdGhJbnRlcm5hbCh2ZWN0b3IsIG5hbWUsIHBhdGgpOwot
fQotCi0jZW5kaWYKLQotdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBD
aGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjaGFuZ2VDdXJyZW50RGlyZWN0b3J5UGF0
aDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZVBhdGhdXTsKLQotI2lmIEVOQUJMRShXRUJf
UFJPQ0VTU19TQU5EQk9YKQotCi0jaWYgREVCVUdfQllQQVNTX1NBTkRCT1gKLSAgICBXVEZMb2dB
bHdheXMoIkJ5cGFzc2luZyB3ZWIgcHJvY2VzcyBzYW5kYm94LlxuIik7Ci0gICAgcmV0dXJuOwot
I2VuZGlmCi0KLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKLSAg
ICAvLyBVc2UgcHJpdmF0ZSB0ZW1wb3JhcnkgYW5kIGNhY2hlIGRpcmVjdG9yaWVzLgotICAgIFN0
cmluZyBzeXN0ZW1EaXJlY3RvcnlTdWZmaXggPSAiY29tLmFwcGxlLldlYlByb2Nlc3MrIiArIHBh
cmFtZXRlcnMuY2xpZW50SWRlbnRpZmllcjsKLSAgICBzZXRlbnYoIkRJUkhFTFBFUl9VU0VSX0RJ
Ul9TVUZGSVgiLCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3lzdGVtRGlyZWN0b3J5U3VmZml4
KS5kYXRhKCksIDApOwotICAgIGNoYXIgdGVtcG9yYXJ5RGlyZWN0b3J5W1BBVEhfTUFYXTsKLSAg
ICBpZiAoIWNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX1RFTVBfRElSLCB0ZW1wb3JhcnlEaXJlY3Rv
cnksIHNpemVvZih0ZW1wb3JhcnlEaXJlY3RvcnkpKSkgewotICAgICAgICBXVEZMb2dBbHdheXMo
IldlYlByb2Nlc3M6IGNvdWxkbid0IHJldHJpZXZlIHByaXZhdGUgdGVtcG9yYXJ5IGRpcmVjdG9y
eSBwYXRoOiAlZFxuIiwgZXJybm8pOwotICAgICAgICBleGl0KEVYX05PUEVSTSk7Ci0gICAgfQot
ICAgIHNldGVudigiVE1QRElSIiwgdGVtcG9yYXJ5RGlyZWN0b3J5LCAxKTsKLSNlbmRpZgotCi0g
ICAgTlNCdW5kbGUgKndlYmtpdDJCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlND
bGFzc0Zyb21TdHJpbmcoQCJXS1ZpZXciKV07Ci0KLSAgICBWZWN0b3I8Y29uc3QgY2hhcio+IHNh
bmRib3hQYXJhbWV0ZXJzOwotCi0gICAgLy8gVGhlc2UgYXJlIHJlYWQtb25seS4KLSAgICBhcHBl
bmRSZWFkb25seVNhbmRib3hEaXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMsICJXRUJLSVQyX0ZS
QU1FV09SS19ESVIiLCBbW3dlYmtpdDJCdW5kbGUgYnVuZGxlUGF0aF0gc3RyaW5nQnlEZWxldGlu
Z0xhc3RQYXRoQ29tcG9uZW50XSk7Ci0KLSAgICAvLyBUaGVzZSBhcmUgcmVhZC13cml0ZSBnZXRj
b25mIHBhdGhzLgotICAgIGFwcGVuZFJlYWR3cml0ZUNvbmZEaXJlY3Rvcnkoc2FuZGJveFBhcmFt
ZXRlcnMsICJEQVJXSU5fVVNFUl9URU1QX0RJUiIsIF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUik7
Ci0gICAgYXBwZW5kUmVhZHdyaXRlQ29uZkRpcmVjdG9yeShzYW5kYm94UGFyYW1ldGVycywgIkRB
UldJTl9VU0VSX0NBQ0hFX0RJUiIsIF9DU19EQVJXSU5fVVNFUl9DQUNIRV9ESVIpOwotCi0gICAg
Y2hhciBidWZmZXJbNDA5Nl07Ci0gICAgaW50IGJ1ZmZlclNpemUgPSBzaXplb2YoYnVmZmVyKTsK
LSAgICBzdHJ1Y3QgcGFzc3dkIHB3ZDsKLSAgICBzdHJ1Y3QgcGFzc3dkKiByZXN1bHQgPSAwOwot
ICAgIGlmIChnZXRwd3VpZF9yKGdldHVpZCgpLCAmcHdkLCBidWZmZXIsIGJ1ZmZlclNpemUsICZy
ZXN1bHQpIHx8ICFyZXN1bHQpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJXZWJQcm9jZXNzOiBD
b3VsZG4ndCBmaW5kIGhvbWUgZGlyZWN0b3J5XG4iKTsKLSAgICAgICAgZXhpdChFWF9OT1BFUk0p
OwotICAgIH0KLQotICAgIC8vIFRoZXNlIGFyZSByZWFkLXdyaXRlIHBhdGhzLgotICAgIGFwcGVu
ZFJlYWR3cml0ZVNhbmRib3hEaXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMsICJIT01FX0RJUiIs
IHB3ZC5wd19kaXIpOwotCi0gICAgc2FuZGJveFBhcmFtZXRlcnMuYXBwZW5kKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPigwKSk7Ci0KLSAgICBjb25zdCBjaGFyKiBwcm9maWxlUGF0aCA9IFtbd2Vi
a2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJjb20uYXBwbGUuV2ViUHJvY2VzcyIgb2ZUeXBl
OkAic2IiXSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOwotCi0gICAgY2hhciogZXJyb3JCdWY7
Ci0gICAgaWYgKHNhbmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJvZmlsZVBhdGgsIFNBTkRC
T1hfTkFNRURfRVhURVJOQUwsIHNhbmRib3hQYXJhbWV0ZXJzLmRhdGEoKSwgJmVycm9yQnVmKSkg
ewotICAgICAgICBXVEZMb2dBbHdheXMoIldlYlByb2Nlc3M6IENvdWxkbid0IGluaXRpYWxpemUg
c2FuZGJveCBwcm9maWxlIFslc10gZXJyb3IgJyVzJ1xuIiwgcHJvZmlsZVBhdGgsIGVycm9yQnVm
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IHNhbmRib3hQYXJhbWV0ZXJzW2ldOyBpICs9
IDIpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzPSVzXG4iLCBzYW5kYm94UGFyYW1ldGVy
c1tpXSwgc2FuZGJveFBhcmFtZXRlcnNbaSArIDFdKTsKLSAgICAgICAgZXhpdChFWF9OT1BFUk0p
OwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBzYW5kYm94UGFyYW1ldGVyc1tpXTsg
aSArPSAyKQotICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PGNoYXIqPihzYW5kYm94UGFyYW1l
dGVyc1tpICsgMV0pKTsKLQotICAgIC8vIFRoaXMgd2lsbCBvdmVycmlkZSBMU0ZpbGVRdWFyYW50
aW5lRW5hYmxlZCBmcm9tIEluZm8ucGxpc3QgdW5sZXNzIHNhbmRib3ggcXVhcmFudGluZSBpcyBn
bG9iYWxseSBkaXNhYmxlZC4KLSAgICBPU1N0YXR1cyBlcnJvciA9IFdLRW5hYmxlU2FuZGJveFN0
eWxlRmlsZVF1YXJhbnRpbmUoKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgV1RGTG9nQWx3
YXlzKCJXZWJQcm9jZXNzOiBDb3VsZG4ndCBlbmFibGUgc2FuZGJveCBzdHlsZSBmaWxlIHF1YXJh
bnRpbmU6ICVsZFxuIiwgKGxvbmcpZXJyb3IpOwotICAgICAgICBleGl0KEVYX05PUEVSTSk7Ci0g
ICAgfQotI2VuZGlmCi19Ci0KIHN0YXRpYyBpZCBOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZv
Y3VzZWRVSUVsZW1lbnQoTlNBcHBsaWNhdGlvbiosIFNFTCkKIHsKICAgICBXZWJQYWdlKiBwYWdl
ID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkuZm9jdXNlZFdlYlBhZ2UoKTsKQEAgLTMyMSw0ICsyMDMs
MTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiAgICAgfQogfQogCit2
b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NVcGRhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYsIFNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgLy8gTmVlZCB0byBv
dmVyaWRlIHRoZSBkZWZhdWx0LCBiZWNhdXNlIHNlcnZpY2UgaGFzIGEgZGlmZmVyZW50IGJ1bmRs
ZSBJRC4KKyAgICBOU0J1bmRsZSAqd2Via2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JD
bGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIldLVmlldyIpXTsKKyAgICBwYXJhbWV0ZXJzLnNldFNh
bmRib3hQcm9maWxlUGF0aChbd2Via2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJjb20uYXBw
bGUuV2ViUHJvY2VzcyIgb2ZUeXBlOkAic2IiXSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>
<flag name="review"
          id="202686"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>