chore: import from github.com/twx284558/ledcontrol

This commit is contained in:
2026-05-11 08:13:49 -05:00
parent 6bcd786394
commit 05c985628d
@@ -0,0 +1,206 @@
cGFja2FnZSBhbmRyb2lkLnNlcmlhbHBvcnQubWFuYWdlcjsKCmltcG9ydCBhbmRyb2lkLmNvbnRl
bnQuQ29udGV4dDsKaW1wb3J0IGFuZHJvaWQuc2VyaWFscG9ydC5tb2RlbC5QcmludGVyUmVzcG9u
c2VNb2RlbDsKaW1wb3J0IGFuZHJvaWQuc2VyaWFscG9ydC51dGlscy5CeXRlVXRpbDsKaW1wb3J0
IGFuZHJvaWQuc2VyaWFscG9ydC51dGlscy5Mb2dnZXI7CgpwdWJsaWMgY2xhc3MgRmFjdG9yeU1v
ZGVQcm9jZXNzTWFuYWdlciB7CiAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7CiAgICBwcml2
YXRlIHN0YXRpYyBGYWN0b3J5TW9kZVByb2Nlc3NNYW5hZ2VyIG1Qcm90b2NvbE1hbmFnZXI7CiAg
ICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVE9UQUxfQllURVMgPSA2NDsKICAgIC8vUHJpbnQg
UmVxdWVzdCBBbnN3ZXIKICAgIC8vRmlsZSBBdmFpbGFibGUKICAgIHByaXZhdGUgZmluYWwgaW50
IEZNX1JFUVVFU1RfQUxMT1cgPSAweDAxOwogICAgcHJpdmF0ZSBmaW5hbCBpbnQgRk1fUkVRVUVT
VF9SRUpFQ1QgPSAweEZGOwoKICAgIHByaXZhdGUgZmluYWwgaW50IE5PTkVfRVJST1IgPSAweDAw
OwogICAgcHJpdmF0ZSBmaW5hbCBpbnQgU1lTVEVNX09WRVJfSEVBVCA9IDB4MDU7CiAgICBwcml2
YXRlIGZpbmFsIGludCBTWVNURU1fT1ZFUl9DT0xEID0gMHgwNjsKICAgIHByaXZhdGUgZmluYWwg
aW50IERVUklOR19VUEdSQURJTkcgPSAweDBFOwogICAgcHJpdmF0ZSBmaW5hbCBpbnQgRFVSSU5H
X1BSSU5USU5HID0gMHgxMDsKCgogICAgLy9FbmQgb2YgcHJpbnRlcgogICAgcHJpdmF0ZSBmaW5h
bCBpbnQgRU5EX09GX1BSSU5UX1NVQ0NFU1MgPSAweDU1OwogICAgcHJpdmF0ZSBmaW5hbCBpbnQg
RU5EX09GX1BSSU5UX0VSUk9SID0gMHhBMDsKCiAgICAvL0ZXIFZhcmlhYmxlCiAgICAvL1VwZ3Jh
ZGUgRXJyb3IgTWVzc2FnZSAoZm9yIFVwZ3JhZGVFcnJNZXNzYWdlKQogICAgcHJpdmF0ZSBmaW5h
bCBpbnQgRklMRV9FUlJPUiA9IDB4MDE7CgogICAgLy9QYXBlciBUcmF5CiAgICBwcml2YXRlIGZp
bmFsIGludCBQQVBFUl9UUkFZX0VNUFRZID0gMHgwMTsKCiAgICBwcml2YXRlIEZhY3RvcnlNb2Rl
UHJvY2Vzc01hbmFnZXIoQ29udGV4dCBjb250ZXh0KSB7CiAgICAgICAgbUNvbnRleHQgPSBjb250
ZXh0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgRmFjdG9yeU1vZGVQcm9jZXNzTWFuYWdlciBn
ZXRJbnN0YW5jZShDb250ZXh0IGNvbnRleHQpIHsKICAgICAgICBpZiAobVByb3RvY29sTWFuYWdl
ciA9PSBudWxsKSB7CiAgICAgICAgICAgIG1Qcm90b2NvbE1hbmFnZXIgPSBuZXcgRmFjdG9yeU1v
ZGVQcm9jZXNzTWFuYWdlcihjb250ZXh0KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG1Qcm90
b2NvbE1hbmFnZXI7CiAgICB9CiAgICAvKioKICAgICAqIHBhcnNlIGZhY3RvcnkgbW9kZSByZXF1
ZXN0IGJ5dGUgcmVzcG9uc2UKICAgICAqCiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIFByaW50ZXIg
cGF5bG9hZAogICAgICogQHJldHVybiAtIFByaW50ZXJSZXNwb25zZSBNb2RlbChJc1N1Y2Nlc3Ms
IE1lc3NhZ2UsIEVycm9yQ29kZSkKICAgICAqLwogICAgcHVibGljIFByaW50ZXJSZXNwb25zZU1v
ZGVsIHBhcnNlRk1SZXF1ZXN0QUNLUHJvY2VzcyhieXRlW10gcGF5bG9hZCkgewogICAgICAgIC8v
MHgxQgkweDJBCTB4NDMJMHg0MQkweDAxCTB4MDEJMHhGMAkweDAwCUFsbG93OiAweDAxIFJlamVj
dDoweEZGCiAgICAgICAgUHJpbnRlclJlc3BvbnNlTW9kZWwgcmVzcG9uc2UgPSBudWxsOwogICAg
ICAgIGlmIChwYXlsb2FkICE9IG51bGwgJiYgcGF5bG9hZC5sZW5ndGggPT0gVE9UQUxfQllURVMp
IHsKICAgICAgICAgICAgZmluYWwgYnl0ZSByZXF1ZXN0QW5zd2VyID0gcGF5bG9hZFs4XTsKICAg
ICAgICAgICAgcmVzcG9uc2UgPSBuZXcgUHJpbnRlclJlc3BvbnNlTW9kZWwoKTsKICAgICAgICAg
ICAgTG9nZ2VyLmQoIkZNICByZXF1ZXN0QW5zd2VyOiAiK0J5dGVVdGlsLmJ5dGVzVG9IZXhXaXRo
U3BhY2UocmVxdWVzdEFuc3dlcikpOwogICAgICAgICAgICBpZiAocmVxdWVzdEFuc3dlciA9PSAo
Ynl0ZSkgRk1fUkVRVUVTVF9SRUpFQ1QpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1
Y2Nlc3MoZmFsc2UpOwogICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0TWVzc2FnZSgiRmFjdG9y
eSBNb2RlIFJlamVjdGVkIik7CiAgICAgICAgICAgIH1lbHNlIGlmIChyZXF1ZXN0QW5zd2VyID09
IEZNX1JFUVVFU1RfQUxMT1cpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3Mo
dHJ1ZSk7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29kZShGTV9SRVFVRVNU
X0FMTE9XKTsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldE1lc3NhZ2UoIkZhY3RvcnkgTW9k
ZSBBbGxvd2VkIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXNwb25z
ZS5zZXRTdWNjZXNzKHRydWUpOwogICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VjY2Vzc0Nv
ZGUoRk1fUkVRVUVTVF9BTExPVyk7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRNZXNzYWdl
KCJGYWN0b3J5IE1vZGUgQWxsb3dlZCIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg
IHJldHVybiByZXNwb25zZTsKICAgIH0KCiAgICAvKioKICAgICAqIHBhcnNlIGZhY3RvcnkgbW9k
ZSBidXJuLWluIGJ5dGUgcmVzcG9uc2UKICAgICAqCiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIFBy
aW50ZXIgcGF5bG9hZAogICAgICogQHJldHVybiAtIFByaW50ZXJSZXNwb25zZSBNb2RlbChJc1N1
Y2Nlc3MsIE1lc3NhZ2UsIEVycm9yQ29kZSkKICAgICAqLwogICAgcHVibGljIFByaW50ZXJSZXNw
b25zZU1vZGVsIHBhcnNlQnVybkluQWNrUHJvY2VzcyhieXRlW10gcGF5bG9hZCkgewogICAgICAg
IC8vMHgxQgkweDJBCTB4NDMJMHg0MQkweDAxCTB4MDEJMHhGMAkweDAxCiAgICAgICAgYnl0ZSBv
bmVDaGFyICAgPSAweDFCOwogICAgICAgIGJ5dGUgdHdvQ2hhciAgID0gMHgyQTsKICAgICAgICBi
eXRlIHRocmVlQ2hhciA9IDB4NDM7CiAgICAgICAgYnl0ZSBmb3VyQ2hhciAgPSAweDQxOwogICAg
ICAgIGJ5dGUgZml2ZUNoYXIgID0gMHgwMTsKICAgICAgICBieXRlIHNpeENoYXIgICA9IDB4MDE7
CiAgICAgICAgYnl0ZSBzZXZlbkNoYXIgPSAoYnl0ZSkweEYwOwogICAgICAgIGJ5dGUgZWlnaHRD
aGFyID0gMHgwMTsKICAgICAgICBQcmludGVyUmVzcG9uc2VNb2RlbCByZXNwb25zZSA9IG51bGw7
CiAgICAgICAgaWYgKHBheWxvYWQgIT0gbnVsbCAmJiBwYXlsb2FkLmxlbmd0aCA9PSBUT1RBTF9C
WVRFUykgewogICAgICAgICAgICByZXNwb25zZSA9IG5ldyBQcmludGVyUmVzcG9uc2VNb2RlbCgp
OwogICAgICAgICAgICBpZiAob25lQ2hhciA9PSBwYXlsb2FkWzBdCiAgICAgICAgICAgICAgICAg
ICAgJiYgdHdvQ2hhciA9PSBwYXlsb2FkWzFdCiAgICAgICAgICAgICAgICAgICAgJiYgdGhyZWVD
aGFyID09IHBheWxvYWRbMl0KICAgICAgICAgICAgICAgICAgICAmJiBmb3VyQ2hhciA9PSBwYXls
b2FkWzNdCiAgICAgICAgICAgICAgICAgICAgJiYgZml2ZUNoYXIgPT0gcGF5bG9hZFs0XQogICAg
ICAgICAgICAgICAgICAgICYmIHNpeENoYXIgPT0gcGF5bG9hZFs1XQogICAgICAgICAgICAgICAg
ICAgICYmIHNldmVuQ2hhciA9PSBwYXlsb2FkWzZdCiAgICAgICAgICAgICAgICAgICAgJiYgZWln
aHRDaGFyID09IHBheWxvYWRbN10pIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nl
c3ModHJ1ZSk7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29kZShGTV9SRVFV
RVNUX0FMTE9XKTsKICAgICAgICAgICAgICAgIExvZ2dlci5kKCAiQnVybkluQSBTdWNjZXNzIik7
CiAgICAgICAgICAgIH0gZWxzZSAgewogICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VjY2Vz
cyhmYWxzZSk7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRFcnJvckNvZGUoRk1fUkVRVUVT
VF9SRUpFQ1QpOwogICAgICAgICAgICAgICAgTG9nZ2VyLmQoICJCdXJuSW5BIFJlamVjdCIpOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXNwb25zZTsKICAgIH0KICAgIC8q
KgogICAgICogcGFyc2UgZmFjdG9yeSBtb2RlIGNhbWVyYSBieXRlIHJlc3BvbnNlCiAgICAgKgog
ICAgICogQHBhcmFtIHBheWxvYWQgLSBQcmludGVyIHBheWxvYWQKICAgICAqIEByZXR1cm4gLSBQ
cmludGVyUmVzcG9uc2UgTW9kZWwoSXNTdWNjZXNzLCBNZXNzYWdlLCBFcnJvckNvZGUpCiAgICAg
Ki8KICAgIHB1YmxpYyBQcmludGVyUmVzcG9uc2VNb2RlbCBwYXJzZUNhbWVyYUFja1Byb2Nlc3Mo
Ynl0ZVtdIHBheWxvYWQpIHsKICAgICAgICAvLzB4MUIJMHgyQQkweDQzCTB4NDEJMHgwMQkweDAx
CTB4RjAJMHgwMgogICAgICAgIGJ5dGUgb25lQ2hhciAgID0gMHgxQjsKICAgICAgICBieXRlIHR3
b0NoYXIgICA9IDB4MkE7CiAgICAgICAgYnl0ZSB0aHJlZUNoYXIgPSAweDQzOwogICAgICAgIGJ5
dGUgZm91ckNoYXIgID0gMHg0MTsKICAgICAgICBieXRlIGZpdmVDaGFyICA9IDB4MDE7CiAgICAg
ICAgYnl0ZSBzaXhDaGFyICAgPSAweDAxOwogICAgICAgIGJ5dGUgc2V2ZW5DaGFyID0gKGJ5dGUp
MHhGMDsKICAgICAgICBieXRlIGVpZ2h0Q2hhciA9IDB4MDI7CiAgICAgICAgUHJpbnRlclJlc3Bv
bnNlTW9kZWwgcmVzcG9uc2UgPSBudWxsOwogICAgICAgIGlmIChwYXlsb2FkICE9IG51bGwgJiYg
cGF5bG9hZC5sZW5ndGggPT0gVE9UQUxfQllURVMpIHsKICAgICAgICAgICAgcmVzcG9uc2UgPSBu
ZXcgUHJpbnRlclJlc3BvbnNlTW9kZWwoKTsKICAgICAgICAgICAgaWYgKG9uZUNoYXIgPT0gcGF5
bG9hZFswXQogICAgICAgICAgICAgICAgICAgICYmIHR3b0NoYXIgPT0gcGF5bG9hZFsxXQogICAg
ICAgICAgICAgICAgICAgICYmIHRocmVlQ2hhciA9PSBwYXlsb2FkWzJdCiAgICAgICAgICAgICAg
ICAgICAgJiYgZm91ckNoYXIgPT0gcGF5bG9hZFszXQogICAgICAgICAgICAgICAgICAgICYmIGZp
dmVDaGFyID09IHBheWxvYWRbNF0KICAgICAgICAgICAgICAgICAgICAmJiBzaXhDaGFyID09IHBh
eWxvYWRbNV0KICAgICAgICAgICAgICAgICAgICAmJiBzZXZlbkNoYXIgPT0gcGF5bG9hZFs2XQog
ICAgICAgICAgICAgICAgICAgICYmIGVpZ2h0Q2hhciA9PSBwYXlsb2FkWzddKSB7CiAgICAgICAg
ICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzKHRydWUpOwogICAgICAgICAgICAgICAgcmVzcG9u
c2Uuc2V0U3VjY2Vzc0NvZGUoRk1fUkVRVUVTVF9BTExPVyk7CiAgICAgICAgICAgICAgICBMb2dn
ZXIuZCggIkZNIENhbWVyYSBTdWNjZXNzIik7CiAgICAgICAgICAgIH0gZWxzZSAgewogICAgICAg
ICAgICAgICAgcmVzcG9uc2Uuc2V0U3VjY2VzcyhmYWxzZSk7CiAgICAgICAgICAgICAgICByZXNw
b25zZS5zZXRFcnJvckNvZGUoRk1fUkVRVUVTVF9SRUpFQ1QpOwogICAgICAgICAgICAgICAgTG9n
Z2VyLmQoICJGTSBDYW1lcmEgUmVqZWN0Iik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlOwogICAgfQogICAgLyoqCiAgICAgKiBwYXJzZSBmYWN0b3J5IG1v
ZGUgRlFDIGJ5dGUgcmVzcG9uc2UKICAgICAqCiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIFByaW50
ZXIgcGF5bG9hZAogICAgICogQHJldHVybiAtIFByaW50ZXJSZXNwb25zZSBNb2RlbChJc1N1Y2Nl
c3MsIE1lc3NhZ2UsIEVycm9yQ29kZSkKICAgICAqLwogICAgcHVibGljIFByaW50ZXJSZXNwb25z
ZU1vZGVsIHBhcnNlRlFDQWNrUHJvY2VzcyhieXRlW10gcGF5bG9hZCkgewogICAgICAgIC8vMHgx
QgkweDJBCTB4NDMJMHg0MQkweDAxCTB4MDEJMHhGMAkweDAzCiAgICAgICAgYnl0ZSBvbmVDaGFy
ICAgPSAweDFCOwogICAgICAgIGJ5dGUgdHdvQ2hhciAgID0gMHgyQTsKICAgICAgICBieXRlIHRo
cmVlQ2hhciA9IDB4NDM7CiAgICAgICAgYnl0ZSBmb3VyQ2hhciAgPSAweDQxOwogICAgICAgIGJ5
dGUgZml2ZUNoYXIgID0gMHgwMTsKICAgICAgICBieXRlIHNpeENoYXIgICA9IDB4MDE7CiAgICAg
ICAgYnl0ZSBzZXZlbkNoYXIgPSAoYnl0ZSkweEYwOwogICAgICAgIGJ5dGUgZWlnaHRDaGFyID0g
MHgwMzsKICAgICAgICBQcmludGVyUmVzcG9uc2VNb2RlbCByZXNwb25zZSA9IG51bGw7CiAgICAg
ICAgaWYgKHBheWxvYWQgIT0gbnVsbCAmJiBwYXlsb2FkLmxlbmd0aCA9PSBUT1RBTF9CWVRFU
ikgewogICAgICAgICAgICByZXNwb25zZSA9IG5ldyBQcmludGVyUmVzcG9uc2VNb2RlbCgpOwog
ICAgICAgICAgICBpZiAob25lQ2hhciA9PSBwYXlsb2FkWzBdCiAgICAgICAgICAgICAgICAgICAg
JiYgdHdvQ2hhciA9PSBwYXlsb2FkWzFdCiAgICAgICAgICAgICAgICAgICAgJiYgdGhyZWVDaGFy
ID09IHBheWxvYWRbMl0KICAgICAgICAgICAgICAgICAgICAmJiBmb3VyQ2hhciA9PSBwYXlsb2Fk
WzNdCiAgICAgICAgICAgICAgICAgICAgJiYgZml2ZUNoYXIgPT0gcGF5bG9hZFs0XQogICAgICAg
ICAgICAgICAgICAgICYmIHNpeENoYXIgPT0gcGF5bG9hZFs1XQogICAgICAgICAgICAgICAgICAg
ICYmIHNldmVuQ2hhciA9PSBwYXlsb2FkWzZdCiAgICAgICAgICAgICAgICAgICAgJiYgZWlnaHRD
aGFyID09IHBheWxvYWRbN10pIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3Mo
dHJ1ZSk7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29kZShGTV9SRVFVRVNU
X0FMTE9XKTsKICAgICAgICAgICAgICAgIExvZ2dlci5kKCAiRk0gRlFDIFN1Y2Nlc3MiKTsKICAg
ICAgICAgICAgfSBlbHNlICB7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzKGZh
bHNlKTsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEVycm9yQ29kZShGTV9SRVFVRVNUX1JF
SkVDVCk7CiAgICAgICAgICAgICAgICBMb2dnZXIuZCggIkZNIEZRQyBSZWplY3QiKTsKICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzcG9uc2U7CiAgICB9CiAgICAvKioK
ICAgICAqIHBhcnNlIGZhY3RvcnkgbW9kZSBzaGlwcGluZyBieXRlIHJlc3BvbnNlCiAgICAgKgog
ICAgICogQHBhcmFtIHBheWxvYWQgLSBQcmludGVyIHBheWxvYWQKICAgICAqIEByZXR1cm4gLSBQ
cmludGVyUmVzcG9uc2UgTW9kZWwoSXNTdWNjZXNzLCBNZXNzYWdlLCBFcnJvckNvZGUpCiAgICAg
Ki8KICAgIHB1YmxpYyBQcmludGVyUmVzcG9uc2VNb2RlbCBwYXJzZVNoaXBwaW5nQWNrUHJvY2Vz
cyhieXRlW10gcGF5bG9hZCkgewogICAgICAgIC8vMHgxQgkweDJBCTB4NDMJMHg0MQkweDAxCTB4
MDEJMHhGMAkweDA0CiAgICAgICAgYnl0ZSBvbmVDaGFyICAgPSAweDFCOwogICAgICAgIGJ5dGUg
dHdvQ2hhciAgID0gMHgyQTsKICAgICAgICBieXRlIHRocmVlQ2hhciA9IDB4NDM7CiAgICAgICAg
Ynl0ZSBmb3VyQ2hhciAgPSAweDQxOwogICAgICAgIGJ5dGUgZml2ZUNoYXIgID0gMHgwMTsKICAg
ICAgICBieXRlIHNpeENoYXIgICA9IDB4MDE7CiAgICAgICAgYnl0ZSBzZXZlbkNoYXIgPSAoYnl0
ZSkweEYwOwogICAgICAgIGJ5dGUgZWlnaHRDaGFyID0gMHgwNDsKICAgICAgICBQcmludGVyUmVz
cG9uc2VNb2RlbCByZXNwb25zZSA9IG51bGw7CiAgICAgICAgaWYgKHBheWxvYWQgIT0gbnVsbCAm
JiBwYXlsb2FkLmxlbmd0aCA9PSBUT1RBTF9CWVRFUykgewogICAgICAgICAgICByZXNwb25zZSA9
IG5ldyBQcmludGVyUmVzcG9uc2VNb2RlbCgpOwogICAgICAgICAgICBpZiAob25lQ2hhciA9PSBw
YXlsb2FkWzBdCiAgICAgICAgICAgICAgICAgICAgJiYgdHdvQ2hhciA9PSBwYXlsb2FkWzFdCiAg
ICAgICAgICAgICAgICAgICAgJiYgdGhyZWVDaGFyID09IHBheWxvYWRbMl0KICAgICAgICAgICAg
ICAgICAgICAmJiBmb3VyQ2hhciA9PSBwYXlsb2FkWzNdCiAgICAgICAgICAgICAgICAgICAgJiYg
Zml2ZUNoYXIgPT0gcGF5bG9hZFs0XQogICAgICAgICAgICAgICAgICAgICYmIHNpeENoYXIgPT0g
cGF5bG9hZFs1XQogICAgICAgICAgICAgICAgICAgICYmIHNldmVuQ2hhciA9PSBwYXlsb2FkWzZd
CiAgICAgICAgICAgICAgICAgICAgJiYgZWlnaHRDaGFyID09IHBheWxvYWRbN10pIHsKICAgICAg
ICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3ModHJ1ZSk7CiAgICAgICAgICAgICAgICByZXNw
b25zZS5zZXRTdWNjZXNzQ29kZShGTV9SRVFVRVNUX0FMTE9XKTsKICAgICAgICAgICAgICAgIExv
Z2dlci5kKCAiRk0gU2hpcHBpbmcgU3VjY2VzcyIpOwogICAgICAgICAgICB9IGVsc2UgIHsKICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3MoZmFsc2UpOwogICAgICAgICAgICAgICAg
cmVzcG9uc2Uuc2V0RXJyb3JDb2RlKEZNX1JFUVVFU1RfUkVKRUNUKTsKICAgICAgICAgICAgICAg
IExvZ2dlci5kKCAiRk0gU2hpcHBpbmcgUmVqZWN0Iik7CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgfQoKICAgIC8qKgogICAgICogcGFyc2UgZmFj
dG9yeSBtb2RlIHZlcnNpb24gYXNrIGJ5dGUgcmVzcG9uc2UKICAgICAqCiAgICAgKiBAcGFyYW0g
cGF5bG9hZCAtIFByaW50ZXIgcGF5bG9hZAogICAgICogQHJldHVybiAtIFByaW50ZXJSZXNwb25z
ZSBNb2RlbChJc1N1Y2Nlc3MsIE1lc3NhZ2UsIEVycm9yQ29kZSkKICAgICAqLwogICAgcHVibGlj
IFByaW50ZXJSZXNwb25zZU1vZGVsIHBhcnNlVmVyc2lvbkFza0Fja1Byb2Nlc3MoYnl0ZVtdIHBh
eWxvYWQpIHsKCiAgICAgICAgLy8weDFCCTB4MkEJMHg0MwkweDQxCTB4MDEJMHgwMQkweDAzCTB4
RkYKICAgICAgICAvLyAweDAwIC0gRHNwRndWZXJfSAogICAgICAgIC8vIDB4MDAgLSBEc3BGd1Zlcl9N
CiAgICAgICAgLy8gMHgwMCAtIERzcEZ3VmVyX0wKICAgICAgICAvLyAweDAwIC0gSFdJRAogICAg
ICAgIC8vIDB4MDAgLSBUTUQKICAgICAgICBQcmludGVyUmVzcG9uc2VNb2RlbCByZXNwb25zZSA9
IG51bGw7CiAgICAgICAgaWYgKHBheWxvYWQgIT0gbnVsbCAmJiBwYXlsb2FkLmxlbmd0aCA9PSBU
T1RBTF9CWVRFUykgewoKICAgICAgICAgICAgYnl0ZSBkc3BIID0gcGF5bG9hZFs4XTsKICAgICAg
ICAgICAgYnl0ZSBkc3BNID0gcGF5bG9hZFs5XTsKICAgICAgICAgICAgYnl0ZSBkc3BMID0gcGF5
bG9hZFsxMF07CiAgICAgICAgICAgIGJ5dGUgSFdJRCA9IHBheWxvYWRbMTFdOwogICAgICAgICAg
ICBieXRlIFRNRCA9IHBheWxvYWRbMTJdOwogICAgICAgICAgICBieXRlIGlzUGFwZXJUcmF5RW1w
dHkgPSBwYXlsb2FkWzE0XTsKCiAgICAgICAgICAgIExvZ2dlci5kKCJGTSBkc3BIOiAiICsgQnl0
ZVV0aWwuYnl0ZXNUb0hleFdpdGhTcGFjZShkc3BIKSk7CiAgICAgICAgICAgIExvZ2dlci5kKCJG
TSBkc3BNOiAiICsgQnl0ZVV0aWwuYnl0ZXNUb0hleFdpdGhTcGFjZShkc3BNKSk7CiAgICAgICAg
ICAgIExvZ2dlci5kKCJGTSBkc3BMOiAiICsgQnl0ZVV0aWwuYnl0ZXNUb0hleFdpdGhTcGFjZShk
c3BMKSk7CiAgICAgICAgICAgIExvZ2dlci5kKCJGTSBIV0lEOiAiICsgQnl0ZVV0aWwuYnl0ZXNU
b0hleFdpdGhTcGFjZShIV0lEKSk7CiAgICAgICAgICAgIExvZ2dlci5kKCJGTSBUTUQ6ICIgKyBC
eXRlVXRpbC5ieXRlc1RvSGV4V2l0aFNwYWNlKFRNRCkpOwogICAgICAgICAgICBMb2dnZXIuZCgi
aXNQYXBlclRyYXlFbXB0eTogIiArIEJ5dGVVdGlsLmJ5dGVzVG9IZXhXaXRoU3BhY2UoaXNQYXBl
clRyYXlFbXB0eSkpOwogICAgICAgICAgICByZXNwb25zZSA9IG5ldyBQcmludGVyUmVzcG9uc2VN
b2RlbCgpOwogICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzKHRydWUpOwogICAgICAgICAg
ICByZXNwb25zZS5zZXRNZXNzYWdlKCJGTSAgVmVyc2lvbiBQcm9jZXNzIik7CiAgICAgICAgICAg
IHJlc3BvbnNlLnNldFN1Y2Nlc3NDb2RlKEZNX1JFUVVFU1RfQUxMT1cpOwogICAgICAgICAgICBy
ZXNwb25zZS5zZXREc3BIKGRzcEgpOwogICAgICAgICAgICByZXNwb25zZS5zZXREc3BNKGR
zcE0pOwogICAgICAgICAgICByZXNwb25zZS5zZXREc3BMKGR
zcEwpOwogICAgICAgICAgICByZXNwb25zZS5zZXRIV0lEKEhXSUQpOwogICAgICAgICAgICByZXNw
b25zZS5zZXRUTUQoVE1EKTsKICAgICAgICAgICAgcmVzcG9uc2Uuc2V0UGFwZXJUcmF5RW1wdHko
aXNQYXBlclRyYXlFbXB0eSA9PSBQQVBFUl9UUkFZX0VNUFRZKTsKCiAgICAgICAgfQogICAgICAg
IHJldHVybiByZXNwb25zZTsKICAgIH0KCiAgICAvKioKICAgICAqIHBhcnNlIGZhY3RvcnkgbW9k
ZSByZXNldCBieXRlIHJlc3BvbnNlCiAgICAgKgogICAgICogQHBhcmFtIHBheWxvYWQgLSBQcmlu
dGVyIHBheWxvYWQKICAgICAqIEByZXR1cm4gLSBQcmludGVyUmVzcG9uc2UgTW9kZWwoSXNTdWNj
ZXNzLCBNZXNzYWdlLCBFcnJvckNvZGUpCiAgICAgKi8KICAgIHB1YmxpYyBQcmludGVyUmVzcG9u
c2VNb2RlbCBwYXJzZVJlc2V0QWNrUHJvY2VzcyhieXRlW10gcGF5bG9hZCkgewogICAgICAgIC8v
MHgxQgkweDJBCTB4NDMJMHg0MQkweDAxCTB4MDEJMHhGMAkweEZGCiAgICAgICAgYnl0ZSBvbmVD
aGFyICAgPSAweDFCOwogICAgICAgIGJ5dGUgdHdvQ2hhciAgID0gMHgyQTsKICAgICAgICBieXRl
IHRocmVlQ2hhciA9IDB4NDM7CiAgICAgICAgYnl0ZSBmb3VyQ2hhciAgPSAweDQxOwogICAgICAg
IGJ5dGUgZml2ZUNoYXIgID0gMHgwMTsKICAgICAgICBieXRlIHNpeENoYXIgICA9IDB4MDE7CiAg
ICAgICAgYnl0ZSBzZXZlbkNoYXIgPSAoYnl0ZSkweEYwOwogICAgICAgIGJ5dGUgZWlnaHRDaGFy
ID0gKGJ5dGUpMHhGRjsKICAgICAgICBQcmludGVyUmVzcG9uc2VNb2RlbCByZXNwb25zZSA9IG51
bGw7CiAgICAgICAgaWYgKHBheWxvYWQgIT0gbnVsbCAmJiBwYXlsb2FkLmxlbmd0aCA9PSBUT1RB
TF9CWVRFUykgewogICAgICAgICAgICByZXNwb25zZSA9IG5ldyBQcmludGVyUmVzcG9uc2VNb2Rl
bCgpOwogICAgICAgICAgICBpZiAob25lQ2hhciA9PSBwYXlsb2FkWzBdCiAgICAgICAgICAgICAg
ICAgICAgJiYgdHdvQ2hhciA9PSBwYXlsb2FkWzFdCiAgICAgICAgICAgICAgICAgICAgJiYgdGhy
ZWVDaGFyID09IHBheWxvYWRbMl0KICAgICAgICAgICAgICAgICAgICAmJiBmb3VyQ2hhciA9PSBw
YXlsb2FkWzNdCiAgICAgICAgICAgICAgICAgICAgJiYgZml2ZUNoYXIgPT0gcGF5bG9hZFs0XQog
ICAgICAgICAgICAgICAgICAgICYmIHNpeENoYXIgPT0gcGF5bG9hZFs1XQogICAgICAgICAgICAg
ICAgICAgICYmIHNldmVuQ2hhciA9PSBwYXlsb2FkWzZdCiAgICAgICAgICAgICAgICAgICAgJiYg
ZWlnaHRDaGFyID09IHBheWxvYWRbN10pIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1
Y2Nlc3ModHJ1ZSk7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29kZShGTV9S
RVFVRVNUX0FMTE9XKTsKICAgICAgICAgICAgICAgIExvZ2dlci5kKCAiRk0gUmVzZXQgU3VjY2Vz
cyIpOwogICAgICAgICAgICB9IGVsc2UgIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1
Y2Nlc3MoZmFsc2UpOwogICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0RXJyb3JDb2RlKEZNX1JF
UVVFU1RfUkVKRUNUKTsKICAgICAgICAgICAgICAgIExvZ2dlci5kKCAiRk0gUmVzZXQgUmVqZWN0
Iik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAg
fQp9Cg==