Skip to content
Closed
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDb3B5cmlnaHQgKGMpIDIwMjUsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KIwojIFNlZSBMSUNFTlNFIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmltcG9ydCB0b3JjaAoKZnJvbSBwcmltdXMuYmFja2VuZHMuZGlmZnVzaW9uLm1vZGVscy53YW4udmFlMl8yIGltcG9ydCBEZWNvZGVyM2QsIGNvdW50X2NvbnYzZAoKCmRlZiBfbWFrZV9kZWNvZGVyKCk6CiAgICAjIEEgdGlueSBkZWNvZGVyIHdpdGggYSBzaW5nbGUgdGVtcG9yYWwtdXBzYW1wbGUgc3RhZ2U6IGVub3VnaCB0byBleGVyY2lzZQogICAgIyBjYWNoZSBpbmRleGluZywgdGhlICJSZXAiIHNlbnRpbmVsLCBhbmQgZmlyc3RfY2h1bmsgcHJvcGFnYXRpb24gd2l0aG91dAogICAgIyBhIGNoYW5uZWwtY2hhbmdpbmcgcmVzaWR1YWwgc2hvcnRjdXQgKHdoaWNoIHZhZTJfMidzIFJlc2lkdWFsQmxvY2sgZG9lcwogICAgIyBub3Qgcm91dGUgdGhyb3VnaCB0aGUgZmVhdF9jYWNoZSwgYW5kIHdvdWxkIGRlc3luYyBmZWF0X2lkeCBmcm9tCiAgICAjIGNvdW50X2NvbnYzZChkZWNvZGVyKSkuCiAgICB0b3JjaC5tYW51YWxfc2VlZCgwKQogICAgZGVjb2RlciA9IERlY29kZXIzZCgKICAgICAgICBkaW09OCwKICAgICAgICB6X2RpbT00LAogICAgICAgIGRpbV9tdWx0PVsxLCAxXSwKICAgICAgICBudW1fcmVzX2Jsb2Nrcz0xLAogICAgICAgIGF0dG5fc2NhbGVzPVtdLAogICAgICAgIHRlbXBlcmFsX3Vwc2FtcGxlPVtUcnVlXSwKICAgICAgICBkcm9wb3V0PTAuMCwKICAgICkKICAgIGRlY29kZXIuZXZhbCgpCiAgICByZXR1cm4gZGVjb2RlcgoKCmRlZiBfZGVjb2RlX3N0cmVhbWluZyhkZWNvZGVyLCB4LCBjb252X251bSk6CiAgICAiIiJSZXBsYXkgV2FuVkFFXy5kZWNvZGUncyBwZXItZnJhbWUgY2h1bmtlZC1kZWNvZGUgcHJvdG9jb2w6IG9uZSBsYXRlbnQKICAgIGZyYW1lIHBlciBjYWxsLCBhIHNpbmdsZSBmZWF0X2NhY2hlIGxpc3QgcmV1c2VkIGFjcm9zcyBjYWxscywgZmVhdF9pZHgKICAgIHJlc2V0IHRvIFswXSBmb3IgZXZlcnkgZnJhbWUsIGFuZCBmaXJzdF9jaHVuaz1UcnVlIG9ubHkgb24gdGhlIGZpcnN0CiAgICBjYWxsLiIiIgogICAgZmVhdF9tYXAgPSBbTm9uZV0gKiBjb252X251bQogICAgb3V0cHV0cyA9IFtdCiAgICBmb3IgaSBpbiByYW5nZSh4LnNoYXBlWzJdKToKICAgICAgICBmZWF0X2lkeCA9IFswXQogICAgICAgIGZyYW1lX291dCA9IGRlY29kZXIoCiAgICAgICAgICAgIHhbOiwgOiwgaSA6IGkgKyAxLCA6LCA6XSwKICAgICAgICAgICAgZmVhdF9jYWNoZT1mZWF0X21hcCwKICAgICAgICAgICAgZmVhdF9pZHg9ZmVhdF9pZHgsCiAgICAgICAgICAgIGZpcnN0X2NodW5rPShpID09IDApLAogICAgICAgICkKICAgICAgICAjIEV2ZXJ5IENhdXNhbENvbnYzZCBvbiB0aGUgY2FjaGVkIHBhdGggY29uc3VtZXMgZXhhY3RseSBvbmUgc2xvdC4KICAgICAgICBhc3NlcnQgZmVhdF9pZHhbMF0gPT0gY29udl9udW0KICAgICAgICBvdXRwdXRzLmFwcGVuZChmcmFtZV9vdXQpCiAgICByZXR1cm4gb3V0cHV0cywgZmVhdF9tYXAKCgpkZWYgdGVzdF9mb3J3YXJkX3N0cmVhbWluZ19kZWNvZGVfbWF0Y2hlc193YW4yMl9jaHVua2VkX3Byb3RvY29sKCk6CiAgICAjIERpcmVjdCBEZWNvZGVyM2Qgb3V0cHV0IGlzIDEyIGNoYW5uZWxzIChwYXRjaGlmaWVkIGxhdGVudCBzcGFjZSk7IHRoZQogICAgIyBjb252ZXJzaW9uIHRvIDMgUkdCIGNoYW5uZWxzIGhhcHBlbnMgbGF0ZXIsIGluIHVucGF0Y2hpZnkuCiAgICBkZWNvZGVyID0gX21ha2VfZGVjb2RlcigpCiAgICBjb252X251bSA9IGNvdW50X2NvbnYzZChkZWNvZGVyKQogICAgeCA9IHRvcmNoLnJhbmRuKDEsIDQsIDMsIDQsIDQpCiAgICBmZWF0X21hcCA9IFtOb25lXSAqIGNvbnZfbnVtCgogICAgb3V0cHV0cyA9IFtdCiAgICB3aXRoIHRvcmNoLm5vX2dyYWQoKToKICAgICAgICBmb3IgaSBpbiByYW5nZSh4LnNoYXBlWzJdKToKICAgICAgICAgICAgZmVhdF9pZHggPSBbMF0KICAgICAgICAgICAgZnJhbWVfb3V0ID0gZGVjb2RlcigKICAgICAgICAgICAgICAgIHhbOiwgOiwgaSA6IGkgKyAxLCA6LCA6XSwKICAgICAgICAgICAgICAgIGZlYXRfY2FjaGU9ZmVhdF9tYXAsCiAgICAgICAgICAgICAgICBmZWF0X2lkeD1mZWF0X2lkeCwKICAgICAgICAgICAgICAgIGZpcnN0X2NodW5rPShpID09IDApLAogICAgICAgICAgICApCiAgICAgICAgICAgICMgRXZlcnkgQ2F1c2FsQ29udjNkIG9uIHRoZSBjYWNoZWQgcGF0aCBjb25zdW1lcyBleGFjdGx5IG9uZSBzbG90LgogICAgICAgICAgICBhc3NlcnQgZmVhdF9pZHhbMF0gPT0gY29udl9udW0KCiAgICAgICAgICAgIGlmIGkgPT0gMDoKICAgICAgICAgICAgICAgICMgQWZ0ZXIgdGhlIGZpcnN0IGNodW5rIGV2ZXJ5IGNhY2hlIHNsb3QgaXMgcG9wdWxhdGVkOyB0aGUKICAgICAgICAgICAgICAgICMgdGVtcG9yYWwtdXBzYW1wbGUgc3RhZ2UncyBzbG90IGhvbGRzIHRoZSAiUmVwIiBzZW50aW5lbAogICAgICAgICAgICAgICAgIyB1bnRpbCBhIHNlY29uZCBjaHVuayBnaXZlcyBpdCByZWFsIGhpc3RvcnkgdG8gd29yayB3aXRoLgogICAgICAgICAgICAgICAgYXNzZXJ0IGFsbChzbG90IGlzIG5vdCBOb25lIGZvciBzbG90IGluIGZlYXRfbWFwKQogICAgICAgICAgICAgICAgYXNzZXJ0IGFueShzbG90ID09ICJSZXAiIGZvciBzbG90IGluIGZlYXRfbWFwKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBPbmNlIHJlYWwgaGlzdG9yeSBpcyBhdmFpbGFibGUsICJSZXAiIG11c3QgaGF2ZSBiZWVuCiAgICAgICAgICAgICAgICAjIHJlcGxhY2VkIGJ5IGFuIGFjdHVhbCBjYWNoZWQgdGVuc29yLgogICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBhbnkoc2xvdCA9PSAiUmVwIiBmb3Igc2xvdCBpbiBmZWF0X21hcCkKCiAgICAgICAgICAgIG91dHB1dHMuYXBwZW5kKGZyYW1lX291dCkKCiAgICAjIEZpcnN0IGNodW5rIGhhcyBubyBjYWNoZWQgaGlzdG9yeSB5ZXQsIHNvIGl0cyB1cHNhbXBsZTNkIHN0YWdlIGNhbiBvbmx5CiAgICAjIGVtaXQgaXRzIG93biBmcmFtZTsgbGF0ZXIgY2h1bmtzIGhhdmUgaGlzdG9yeSBhbmQgZG91YmxlIHRoZWlyCiAgICAjIHRlbXBvcmFsIGNvbnRyaWJ1dGlvbi4KICAgIGFzc2VydCBvdXRwdXRzWzBdLnNoYXBlID09ICgxLCAxMiwgMSwgOCwgOCkKICAgIGFzc2VydCBvdXRwdXRzWzFdLnNoYXBlID09ICgxLCAxMiwgMiwgOCwgOCkKICAgIGFzc2VydCBvdXRwdXRzWzJdLnNoYXBlID09ICgxLCAxMiwgMiwgOCwgOCkKCiAgICBvdXQgPSB0b3JjaC5jYXQob3V0cHV0cywgZGltPTIpCiAgICBhc3NlcnQgb3V0LnNoYXBlID09ICgxLCAxMiwgNSwgOCwgOCkKICAgIGFzc2VydCB0b3JjaC5pc2Zpbml0ZShvdXQpLmFsbCgpCgoKZGVmIHRlc3RfZm9yd2FyZF9zdHJlYW1pbmdfZGVjb2RlX2lzX2RldGVybWluaXN0aWNfYWZ0ZXJfY2FjaGVfcmVzZXQoKToKICAgIGRlY29kZXIgPSBfbWFrZV9kZWNvZGVyKCkKICAgIGNvbnZfbnVtID0gY291bnRfY29udjNkKGRlY29kZXIpCiAgICB4ID0gdG9yY2gucmFuZG4oMSwgNCwgMywgNCwgNCkKCiAgICB3aXRoIHRvcmNoLm5vX2dyYWQoKToKICAgICAgICBvdXRwdXRzXzEsIF8gPSBfZGVjb2RlX3N0cmVhbWluZyhkZWNvZGVyLCB4LCBjb252X251bSkKICAgICAgICBvdXRwdXRzXzIsIF8gPSBfZGVjb2RlX3N0cmVhbWluZyhkZWNvZGVyLCB4LCBjb252X251bSkKCiAgICBhc3NlcnQgdG9yY2guZXF1YWwodG9yY2guY2F0KG91dHB1dHNfMSwgZGltPTIpLCB0b3JjaC5jYXQob3V0cHV0c18yLCBkaW09MikpCg==
Loading