------art_60372_3271573.1218557809844
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

前田です。

2008/07/02 18:17 Shugo Maeda <shugo / ruby-lang.org>:
>> taint(汚染)が二種類になるので名前を考えないといけません。ま
>> た、ぞれのレベルの汚染を操作するメドについても考えな
>> いといけません。まあ、いずれも技ェ、ハフツ、ヌ、マ、「、、゛、サ、、ャ。」
>
> untrusted?はどうでしょう。
> # untrust/trustがtaint/untaint相当。

とりあえず、上記の名前で実装してみました。
パッチを添付します。

-- 
Shugo Maeda

------art_60372_3271573.1218557809844
Content-Type: text/x-diff; name=untrusted.diff
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fjspu9jt0
Content-Disposition: attachment; filename=untrusted.diff

SW5kZXg6IGFycmF5LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXJyYXkuYwkocmV2aXNpb24gMTg1NDQpCisr
KyBhcnJheS5jCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBACiByYl9hcnlfbW9kaWZ5
X2NoZWNrKFZBTFVFIGFyeSkKIHsKICAgICBpZiAoT0JKX0ZST1pFTihhcnkpKSByYl9lcnJvcl9m
cm96ZW4oImFycmF5Iik7Ci0gICAgaWYgKCFPQkpfVEFJTlRFRChhcnkpICYmIHJiX3NhZmVfbGV2
ZWwoKSA+PSA0KQorICAgIGlmICghT0JKX1VOVFJVU1RFRChhcnkpICYmIHJiX3NhZmVfbGV2ZWwo
KSA+PSA0KQogCXJiX3JhaXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNhbid0IG1v
ZGlmeSBhcnJheSIpOwogfQogCkluZGV4OiBkZWJ1Zy5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRlYnVnLmMJ
KHJldmlzaW9uIDE4NTQ0KQorKysgZGVidWcuYwkod29ya2luZyBjb3B5KQpAQCAtNjcsOCArNjcs
NiBAQAogICAgIH0gdmFyaW91czsKIH0gZHVtbXlfZ2RiX2VudW1zOwogCi1jb25zdCBWQUxVRSBS
VUJZX0ZMX1VTRVIyMCAgICA9IEZMX1VTRVIyMDsKLQogaW50CiBydWJ5X2RlYnVnX3ByaW50X2lu
ZGVudChpbnQgbGV2ZWwsIGludCBkZWJ1Z19sZXZlbCwgaW50IGluZGVudF9sZXZlbCkKIHsKSW5k
ZXg6IHRpbWUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aW1lLmMJKHJldmlzaW9uIDE4NTQ0KQorKysgdGlt
ZS5jCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBACiB0aW1lX21vZGlmeShWQUxVRSB0
aW1lKQogewogICAgIHJiX2NoZWNrX2Zyb3plbih0aW1lKTsKLSAgICBpZiAoIU9CSl9UQUlOVEVE
KHRpbWUpICYmIHJiX3NhZmVfbGV2ZWwoKSA+PSA0KQorICAgIGlmICghT0JKX1VOVFJVU1RFRCh0
aW1lKSAmJiByYl9zYWZlX2xldmVsKCkgPj0gNCkKIAlyYl9yYWlzZShyYl9lU2VjdXJpdHlFcnJv
ciwgIkluc2VjdXJlOiBjYW4ndCBtb2RpZnkgVGltZSIpOwogfQogCkluZGV4OiBpbmNsdWRlL3J1
YnkvcnVieS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGluY2x1ZGUvcnVieS9ydWJ5LmgJKHJldmlzaW9uIDE4
NTQ0KQorKysgaW5jbHVkZS9ydWJ5L3J1YnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQz
Miw3IEBACiAjZGVmaW5lIE9CSlNFVFVQKG9iaixjLHQpIGRvIHtcCiAgICAgUkJBU0lDKG9iaikt
PmZsYWdzID0gKHQpO1wKICAgICBSQkFTSUMob2JqKS0+a2xhc3MgPSAoYyk7XAotICAgIGlmIChy
Yl9zYWZlX2xldmVsKCkgPj0gMykgRkxfU0VUKG9iaiwgRkxfVEFJTlQpO1wKKyAgICBpZiAocmJf
c2FmZV9sZXZlbCgpID49IDMpIEZMX1NFVChvYmosIEZMX1RBSU5UIHwgRkxfVU5UUlVTVEVEKTtc
CiB9IHdoaWxlICgwKQogI2RlZmluZSBDTE9ORVNFVFVQKGNsb25lLG9iaikgZG8ge1wKICAgICBP
QkpTRVRVUChjbG9uZSxyYl9zaW5nbGV0b25fY2xhc3NfY2xvbmUoKFZBTFVFKW9iaiksUkJBU0lD
KG9iaiktPmZsYWdzKTtcCkBAIC00NDAsNyArNDQwLDcgQEAKICAgICBpZiAoRkxfVEVTVChvYmos
IEZMX0VYSVZBUikpIHJiX2NvcHlfZ2VuZXJpY19pdmFyKChWQUxVRSljbG9uZSwoVkFMVUUpb2Jq
KTtcCiB9IHdoaWxlICgwKQogI2RlZmluZSBEVVBTRVRVUChkdXAsb2JqKSBkbyB7XAotICAgIE9C
SlNFVFVQKGR1cCxyYl9vYmpfY2xhc3Mob2JqKSwoUkJBU0lDKG9iaiktPmZsYWdzKSYoVF9NQVNL
fEZMX0VYSVZBUnxGTF9UQUlOVCkpO1wKKyAgICBPQkpTRVRVUChkdXAscmJfb2JqX2NsYXNzKG9i
aiksKFJCQVNJQyhvYmopLT5mbGFncykmKFRfTUFTS3xGTF9FWElWQVJ8RkxfVEFJTlR8RkxfVU5U
UlVTVEVEKSk7XAogICAgIGlmIChGTF9URVNUKG9iaiwgRkxfRVhJVkFSKSkgcmJfY29weV9nZW5l
cmljX2l2YXIoKFZBTFVFKWR1cCwoVkFMVUUpb2JqKTtcCiB9IHdoaWxlICgwKQogCkBAIC02OTMs
MTAgKzY5MywxMSBAQAogI2RlZmluZSBGTF9SRVNFUlZFRCAgKCgoVkFMVUUpMSk8PDYpIC8qIHdp
bGwgYmUgdXNlZCBpbiB0aGUgZnV0dXJlIEdDICovCiAjZGVmaW5lIEZMX0ZJTkFMSVpFICAoKChW
QUxVRSkxKTw8NykKICNkZWZpbmUgRkxfVEFJTlQgICAgICgoKFZBTFVFKTEpPDw4KQotI2RlZmlu
ZSBGTF9FWElWQVIgICAgKCgoVkFMVUUpMSk8PDkpCi0jZGVmaW5lIEZMX0ZSRUVaRSAgICAoKChW
QUxVRSkxKTw8MTApCisjZGVmaW5lIEZMX1VOVFJVU1RFRCAoKChWQUxVRSkxKTw8OSkKKyNkZWZp
bmUgRkxfRVhJVkFSICAgICgoKFZBTFVFKTEpPDwxMCkKKyNkZWZpbmUgRkxfRlJFRVpFICAgICgo
KFZBTFVFKTEpPDwxMSkKIAotI2RlZmluZSBGTF9VU0hJRlQgICAgMTEKKyNkZWZpbmUgRkxfVVNI
SUZUICAgIDEyCiAKICNkZWZpbmUgRkxfVVNFUjAgICAgICgoKFZBTFVFKTEpPDwoRkxfVVNISUZU
KzApKQogI2RlZmluZSBGTF9VU0VSMSAgICAgKCgoVkFMVUUpMSk8PChGTF9VU0hJRlQrMSkpCkBA
IC03MTgsNyArNzE5LDYgQEAKICNkZWZpbmUgRkxfVVNFUjE3ICAgICgoKFZBTFVFKTEpPDwoRkxf
VVNISUZUKzE3KSkKICNkZWZpbmUgRkxfVVNFUjE4ICAgICgoKFZBTFVFKTEpPDwoRkxfVVNISUZU
KzE4KSkKICNkZWZpbmUgRkxfVVNFUjE5ICAgICgoKFZBTFVFKTEpPDwoRkxfVVNISUZUKzE5KSkK
LSNkZWZpbmUgRkxfVVNFUjIwICAgICgoKFZBTFVFKTEpPDwoRkxfVVNISUZUKzIwKSkKIAogI2Rl
ZmluZSBTUEVDSUFMX0NPTlNUX1AoeCkgKElNTUVESUFURV9QKHgpIHx8ICFSVEVTVCh4KSkKIApA
QCAtNzMyLDcgKzczMiw5IEBACiAKICNkZWZpbmUgT0JKX1RBSU5URUQoeCkgRkxfVEVTVCgoeCks
IEZMX1RBSU5UKQogI2RlZmluZSBPQkpfVEFJTlQoeCkgRkxfU0VUKCh4KSwgRkxfVEFJTlQpCi0j
ZGVmaW5lIE9CSl9JTkZFQ1QoeCxzKSBkbyB7aWYgKEZMX0FCTEUoeCkgJiYgRkxfQUJMRShzKSkg
UkJBU0lDKHgpLT5mbGFncyB8PSBSQkFTSUMocyktPmZsYWdzICYgRkxfVEFJTlQ7fSB3aGlsZSAo
MCkKKyNkZWZpbmUgT0JKX1VOVFJVU1RFRCh4KSBGTF9URVNUKCh4KSwgRkxfVU5UUlVTVEVEKQor
I2RlZmluZSBPQkpfVU5UUlVTVCh4KSBGTF9TRVQoKHgpLCBGTF9VTlRSVVNURUQpCisjZGVmaW5l
IE9CSl9JTkZFQ1QoeCxzKSBkbyB7aWYgKEZMX0FCTEUoeCkgJiYgRkxfQUJMRShzKSkgUkJBU0lD
KHgpLT5mbGFncyB8PSBSQkFTSUMocyktPmZsYWdzICYgKEZMX1RBSU5UIHwgRkxfVU5UUlVTVEVE
KTt9IHdoaWxlICgwKQogCiAjZGVmaW5lIE9CSl9GUk9aRU4oeCkgRkxfVEVTVCgoeCksIEZMX0ZS
RUVaRSkKICNkZWZpbmUgT0JKX0ZSRUVaRSh4KSBGTF9TRVQoKHgpLCBGTF9GUkVFWkUpCkluZGV4
OiByZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHJlLmMJKHJldmlzaW9uIDE4NTQ0KQorKysgcmUuYwkod29y
a2luZyBjb3B5KQpAQCAtMjI5OSw3ICsyMjk5LDcgQEAKICAgICByYl9lbmNvZGluZyAqZml4ZWRf
ZW5jID0gMDsKICAgICByYl9lbmNvZGluZyAqYV9lbmMgPSByYl9hc2NpaThiaXRfZW5jb2Rpbmco
KTsKIAotICAgIGlmICghT0JKX1RBSU5URUQob2JqKSAmJiByYl9zYWZlX2xldmVsKCkgPj0gNCkK
KyAgICBpZiAoIU9CSl9VTlRSVVNURUQob2JqKSAmJiByYl9zYWZlX2xldmVsKCkgPj0gNCkKIAly
Yl9yYWlzZShyYl9lU2VjdXJpdHlFcnJvciwgIkluc2VjdXJlOiBjYW4ndCBtb2RpZnkgcmVnZXhw
Iik7CiAgICAgcmJfY2hlY2tfZnJvemVuKG9iaik7CiAgICAgaWYgKEZMX1RFU1Qob2JqLCBSRUdf
TElURVJBTCkpCkluZGV4OiB2YXJpYWJsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHZhcmlhYmxlLmMJKHJl
dmlzaW9uIDE4NTQ0KQorKysgdmFyaWFibGUuYwkod29ya2luZyBjb3B5KQpAQCAtOTk1LDcgKzk5
NSw3IEBACiAgICAgbG9uZyBpLCBsZW47CiAgICAgaW50IGl2YXJfZXh0ZW5kZWQ7CiAKLSAgICBp
ZiAoIU9CSl9UQUlOVEVEKG9iaikgJiYgcmJfc2FmZV9sZXZlbCgpID49IDQpCisgICAgaWYgKCFP
QkpfVU5UUlVTVEVEKG9iaikgJiYgcmJfc2FmZV9sZXZlbCgpID49IDQpCiAJcmJfcmFpc2UocmJf
ZVNlY3VyaXR5RXJyb3IsICJJbnNlY3VyZTogY2FuJ3QgbW9kaWZ5IGluc3RhbmNlIHZhcmlhYmxl
Iik7CiAgICAgaWYgKE9CSl9GUk9aRU4ob2JqKSkgcmJfZXJyb3JfZnJvemVuKCJvYmplY3QiKTsK
ICAgICBzd2l0Y2ggKFRZUEUob2JqKSkgewpAQCAtMTIxNiw3ICsxMjE2LDcgQEAKICAgICBzdHJ1
Y3Qgc3RfdGFibGUgKml2X2luZGV4X3RibDsKICAgICBzdF9kYXRhX3QgaW5kZXg7CiAKLSAgICBp
ZiAoIU9CSl9UQUlOVEVEKG9iaikgJiYgcmJfc2FmZV9sZXZlbCgpID49IDQpCisgICAgaWYgKCFP
QkpfVU5UUlVTVEVEKG9iaikgJiYgcmJfc2FmZV9sZXZlbCgpID49IDQpCiAJcmJfcmFpc2UocmJf
ZVNlY3VyaXR5RXJyb3IsICJJbnNlY3VyZTogY2FuJ3QgbW9kaWZ5IGluc3RhbmNlIHZhcmlhYmxl
Iik7CiAgICAgaWYgKE9CSl9GUk9aRU4ob2JqKSkgcmJfZXJyb3JfZnJvemVuKCJvYmplY3QiKTsK
ICAgICBpZiAoIXJiX2lzX2luc3RhbmNlX2lkKGlkKSkgewpAQCAtMTUwNSw3ICsxNTA1LDcgQEAK
ICAgICBpZiAoIXJiX2lzX2NvbnN0X2lkKGlkKSkgewogCXJiX25hbWVfZXJyb3IoaWQsICJgJXMn
IGlzIG5vdCBhbGxvd2VkIGFzIGEgY29uc3RhbnQgbmFtZSIsIHJiX2lkMm5hbWUoaWQpKTsKICAg
ICB9Ci0gICAgaWYgKCFPQkpfVEFJTlRFRChtb2QpICYmIHJiX3NhZmVfbGV2ZWwoKSA+PSA0KQor
ICAgIGlmICghT0JKX1VOVFJVU1RFRChtb2QpICYmIHJiX3NhZmVfbGV2ZWwoKSA+PSA0KQogCXJi
X3JhaXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNhbid0IHJlbW92ZSBjb25zdGFu
dCIpOwogICAgIGlmIChPQkpfRlJPWkVOKG1vZCkpIHJiX2Vycm9yX2Zyb3plbigiY2xhc3MvbW9k
dWxlIik7CiAKQEAgLTE2NjcsNyArMTY2Nyw3IEBACiB7CiAgICAgY29uc3QgY2hhciAqZGVzdCA9
IGlzY29uc3QgPyAiY29uc3RhbnQiIDogImNsYXNzIHZhcmlhYmxlIjsKIAotICAgIGlmICghT0JK
X1RBSU5URUQoa2xhc3MpICYmIHJiX3NhZmVfbGV2ZWwoKSA+PSA0KQorICAgIGlmICghT0JKX1VO
VFJVU1RFRChrbGFzcykgJiYgcmJfc2FmZV9sZXZlbCgpID49IDQpCiAgICAgICByYl9yYWlzZShy
Yl9lU2VjdXJpdHlFcnJvciwgIkluc2VjdXJlOiBjYW4ndCBzZXQgJXMiLCBkZXN0KTsKICAgICBp
ZiAoT0JKX0ZST1pFTihrbGFzcykpIHsKIAlpZiAoQlVJTFRJTl9UWVBFKGtsYXNzKSA9PSBUX01P
RFVMRSkgewpAQCAtMTkyMiw3ICsxOTIyLDcgQEAKICAgICBpZiAoIXJiX2lzX2NsYXNzX2lkKGlk
KSkgewogCXJiX25hbWVfZXJyb3IoaWQsICJ3cm9uZyBjbGFzcyB2YXJpYWJsZSBuYW1lICVzIiwg
cmJfaWQybmFtZShpZCkpOwogICAgIH0KLSAgICBpZiAoIU9CSl9UQUlOVEVEKG1vZCkgJiYgcmJf
c2FmZV9sZXZlbCgpID49IDQpCisgICAgaWYgKCFPQkpfVU5UUlVTVEVEKG1vZCkgJiYgcmJfc2Fm
ZV9sZXZlbCgpID49IDQpCiAJcmJfcmFpc2UocmJfZVNlY3VyaXR5RXJyb3IsICJJbnNlY3VyZTog
Y2FuJ3QgcmVtb3ZlIGNsYXNzIHZhcmlhYmxlIik7CiAgICAgaWYgKE9CSl9GUk9aRU4obW9kKSkg
cmJfZXJyb3JfZnJvemVuKCJjbGFzcy9tb2R1bGUiKTsKIApJbmRleDogb2JqZWN0LmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gb2JqZWN0LmMJKHJldmlzaW9uIDE4NTQ0KQorKysgb2JqZWN0LmMJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQAogICAgICAgICByYl9yYWlzZShyYl9lVHlwZUVycm9y
LCAiW2J1Z10gZnJvemVuIG9iamVjdCAoJXMpIGFsbG9jYXRlZCIsIHJiX29ial9jbGFzc25hbWUo
ZGVzdCkpOwogICAgIH0KICAgICBSQkFTSUMoZGVzdCktPmZsYWdzICY9IH4oVF9NQVNLfEZMX0VY
SVZBUik7Ci0gICAgUkJBU0lDKGRlc3QpLT5mbGFncyB8PSBSQkFTSUMob2JqKS0+ZmxhZ3MgJiAo
VF9NQVNLfEZMX0VYSVZBUnxGTF9UQUlOVCk7CisgICAgUkJBU0lDKGRlc3QpLT5mbGFncyB8PSBS
QkFTSUMob2JqKS0+ZmxhZ3MgJiAoVF9NQVNLfEZMX0VYSVZBUnxGTF9UQUlOVHxGTF9VTlRSVVNU
RUQpOwogICAgIHJiX2NvcHlfZ2VuZXJpY19pdmFyKGRlc3QsIG9iaik7CiAgICAgcmJfZ2NfY29w
eV9maW5hbGl6ZXIoZGVzdCwgb2JqKTsKICAgICBzd2l0Y2ggKFRZUEUob2JqKSkgewpAQCAtNjky
LDYgKzY5Miw2MiBAQAogICAgIHJldHVybiBvYmo7CiB9CiAKKy8qCisgKiAgY2FsbC1zZXE6Cisg
KiAgICAgb2JqLnVudHJ1c3RlZD8gICAgPT4gdHJ1ZSBvciBmYWxzZQorICogIAorICogIFJldHVy
bnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG9iamVjdCBpcyB1bnRhaW50ZWQuCisgKi8KKwor
VkFMVUUKK3JiX29ial91bnRydXN0ZWQoVkFMVUUgb2JqKQoreworICAgIGlmIChPQkpfVU5UUlVT
VEVEKG9iaikpCisJcmV0dXJuIFF0cnVlOworICAgIHJldHVybiBRZmFsc2U7Cit9CisKKy8qCisg
KiAgY2FsbC1zZXE6CisgKiAgICAgb2JqLnVudHJ1c3QgLT4gb2JqCisgKiAgCisgKiAgTWFya3Mg
PGk+b2JqPC9pPiBhcyB1bnRydXN0ZWQuCisgKi8KKworVkFMVUUKK3JiX29ial91bnRydXN0KFZB
TFVFIG9iaikKK3sKKyAgICByYl9zZWN1cmUoNCk7CisgICAgaWYgKCFPQkpfVU5UUlVTVEVEKG9i
aikpIHsKKwlpZiAoT0JKX0ZST1pFTihvYmopKSB7CisJICAgIHJiX2Vycm9yX2Zyb3plbigib2Jq
ZWN0Iik7CisJfQorCU9CSl9VTlRSVVNUKG9iaik7CisgICAgfQorICAgIHJldHVybiBvYmo7Cit9
CisKKworLyoKKyAqICBjYWxsLXNlcToKKyAqICAgICBvYmoudHJ1c3QgICAgPT4gb2JqCisgKiAg
CisgKiAgUmVtb3ZlcyB0aGUgdW50cnVzdGVkIG1hcmsgZnJvbSA8aT5vYmo8L2k+LgorICovCisK
K1ZBTFVFCityYl9vYmpfdHJ1c3QoVkFMVUUgb2JqKQoreworICAgIHJiX3NlY3VyZSgzKTsKKyAg
ICBpZiAoT0JKX1VOVFJVU1RFRChvYmopKSB7CisJaWYgKE9CSl9GUk9aRU4ob2JqKSkgeworCSAg
ICByYl9lcnJvcl9mcm96ZW4oIm9iamVjdCIpOworCX0KKwlGTF9VTlNFVChvYmosIEZMX1VOVFJV
U1RFRCk7CisgICAgfQorICAgIHJldHVybiBvYmo7Cit9CisKIHZvaWQKIHJiX29ial9pbmZlY3Qo
VkFMVUUgb2JqMSwgVkFMVUUgb2JqMikKIHsKQEAgLTcyMyw3ICs3NzksNyBAQAogcmJfb2JqX2Zy
ZWV6ZShWQUxVRSBvYmopCiB7CiAgICAgaWYgKCFPQkpfRlJPWkVOKG9iaikpIHsKLQlpZiAocmJf
c2FmZV9sZXZlbCgpID49IDQgJiYgIU9CSl9UQUlOVEVEKG9iaikpIHsKKwlpZiAocmJfc2FmZV9s
ZXZlbCgpID49IDQgJiYgIU9CSl9VTlRSVVNURUQob2JqKSkgewogCSAgICByYl9yYWlzZShyYl9l
U2VjdXJpdHlFcnJvciwgIkluc2VjdXJlOiBjYW4ndCBmcmVlemUgb2JqZWN0Iik7CiAJfQogCU9C
Sl9GUkVFWkUob2JqKTsKQEAgLTI0MTksNiArMjQ3NSw5IEBACiAgICAgcmJfZGVmaW5lX21ldGhv
ZChyYl9tS2VybmVsLCAidGFpbnQiLCByYl9vYmpfdGFpbnQsIDApOwogICAgIHJiX2RlZmluZV9t
ZXRob2QocmJfbUtlcm5lbCwgInRhaW50ZWQ/IiwgcmJfb2JqX3RhaW50ZWQsIDApOwogICAgIHJi
X2RlZmluZV9tZXRob2QocmJfbUtlcm5lbCwgInVudGFpbnQiLCByYl9vYmpfdW50YWludCwgMCk7
CisgICAgcmJfZGVmaW5lX21ldGhvZChyYl9tS2VybmVsLCAidW50cnVzdCIsIHJiX29ial91bnRy
dXN0LCAwKTsKKyAgICByYl9kZWZpbmVfbWV0aG9kKHJiX21LZXJuZWwsICJ1bnRydXN0ZWQ/Iiwg
cmJfb2JqX3VudHJ1c3RlZCwgMCk7CisgICAgcmJfZGVmaW5lX21ldGhvZChyYl9tS2VybmVsLCAi
dHJ1c3QiLCByYl9vYmpfdHJ1c3QsIDApOwogICAgIHJiX2RlZmluZV9tZXRob2QocmJfbUtlcm5l
bCwgImZyZWV6ZSIsIHJiX29ial9mcmVlemUsIDApOwogICAgIHJiX2RlZmluZV9tZXRob2QocmJf
bUtlcm5lbCwgImZyb3plbj8iLCByYl9vYmpfZnJvemVuX3AsIDApOwogCkluZGV4OiBzdHJpbmcu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBzdHJpbmcuYwkocmV2aXNpb24gMTg1NDQpCisrKyBzdHJpbmcuYwko
d29ya2luZyBjb3B5KQpAQCAtMTAyNyw3ICsxMDI3LDcgQEAKIAlyYl9yYWlzZShyYl9lUnVudGlt
ZUVycm9yLCAiY2FuJ3QgbW9kaWZ5IHN0cmluZzsgdGVtcG9yYXJpbHkgbG9ja2VkIik7CiAgICAg
fQogICAgIGlmIChPQkpfRlJPWkVOKHN0cikpIHJiX2Vycm9yX2Zyb3plbigic3RyaW5nIik7Ci0g
ICAgaWYgKCFPQkpfVEFJTlRFRChzdHIpICYmIHJiX3NhZmVfbGV2ZWwoKSA+PSA0KQorICAgIGlm
ICghT0JKX1VOVFJVU1RFRChzdHIpICYmIHJiX3NhZmVfbGV2ZWwoKSA+PSA0KQogCXJiX3JhaXNl
KHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNhbid0IG1vZGlmeSBzdHJpbmciKTsKIH0K
IApAQCAtMzE3MCw2ICszMTcwLDcgQEAKICAgICBWQUxVRSBwYXQsIHJlcGwsIGhhc2ggPSBRbmls
OwogICAgIGludCBpdGVyID0gMDsKICAgICBpbnQgdGFpbnRlZCA9IDA7CisgICAgaW50IHVudHJ1
c3RlZCA9IDA7CiAgICAgbG9uZyBwbGVuOwogCiAgICAgaWYgKGFyZ2MgPT0gMSAmJiByYl9ibG9j
a19naXZlbl9wKCkpIHsKQEAgLTMxODIsNiArMzE4Myw3IEBACiAJICAgIFN0cmluZ1ZhbHVlKHJl
cGwpOwogCX0KIAlpZiAoT0JKX1RBSU5URUQocmVwbCkpIHRhaW50ZWQgPSAxOworCWlmIChPQkpf
VU5UUlVTVEVEKHJlcGwpKSB1bnRydXN0ZWQgPSAxOwogICAgIH0KICAgICBlbHNlIHsKIAlyYl9y
YWlzZShyYl9lQXJnRXJyb3IsICJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzICglZCBmb3IgMiki
LCBhcmdjKTsKQEAgLTMyMjcsNiArMzIyOSw3IEBACiAJcmJfc3RyX21vZGlmeShzdHIpOwogCXJi
X2VuY19hc3NvY2lhdGUoc3RyLCBlbmMpOwogCWlmIChPQkpfVEFJTlRFRChyZXBsKSkgdGFpbnRl
ZCA9IDE7CisJaWYgKE9CSl9VTlRSVVNURUQocmVwbCkpIHVudHJ1c3RlZCA9IDE7CiAJaWYgKEVO
Q19DT0RFUkFOR0VfVU5LTk9XTiA8IGNyICYmIGNyIDwgRU5DX0NPREVSQU5HRV9CUk9LRU4pIHsK
IAkgICAgaW50IGNyMiA9IEVOQ19DT0RFUkFOR0UocmVwbCk7CiAJICAgIGlmIChjcjIgPT0gRU5D
X0NPREVSQU5HRV9VTktOT1dOIHx8IGNyMiA+IGNyKSBjciA9IGNyMjsKQEAgLTMyNDYsNiArMzI0
OSw3IEBACiAJUlNUUklOR19QVFIoc3RyKVtSU1RSSU5HX0xFTihzdHIpXSA9ICdcMCc7CiAJRU5D
X0NPREVSQU5HRV9TRVQoc3RyLCBjcik7CiAJaWYgKHRhaW50ZWQpIE9CSl9UQUlOVChzdHIpOwor
CWlmICh1bnRydXN0ZWQpIE9CSl9VTlRSVVNUKHN0cik7CiAKIAlyZXR1cm4gc3RyOwogICAgIH0K
SW5kZXg6IGlvLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gaW8uYwkocmV2aXNpb24gMTg1NDQpCisrKyBpby5j
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsOCArMjI3LDggQEAKIFZBTFVFCiByYl9pb190YWludF9j
aGVjayhWQUxVRSBpbykKIHsKLSAgICBpZiAoIU9CSl9UQUlOVEVEKGlvKSAmJiByYl9zYWZlX2xl
dmVsKCkgPj0gNCkKLQlyYl9yYWlzZShyYl9lU2VjdXJpdHlFcnJvciwgIkluc2VjdXJlOiBvcGVy
YXRpb24gb24gdW50YWludGVkIElPIik7CisgICAgaWYgKCFPQkpfVU5UUlVTVEVEKGlvKSAmJiBy
Yl9zYWZlX2xldmVsKCkgPj0gNCkKKwlyYl9yYWlzZShyYl9lU2VjdXJpdHlFcnJvciwgIkluc2Vj
dXJlOiBvcGVyYXRpb24gb24gdHJ1c3RlZCBJTyIpOwogICAgIHJiX2NoZWNrX2Zyb3plbihpbyk7
CiAgICAgcmV0dXJuIGlvOwogfQpAQCAtMjgxOSw3ICsyODE5LDcgQEAKIHN0YXRpYyBWQUxVRQog
cmJfaW9fY2xvc2VfbShWQUxVRSBpbykKIHsKLSAgICBpZiAocmJfc2FmZV9sZXZlbCgpID49IDQg
JiYgIU9CSl9UQUlOVEVEKGlvKSkgeworICAgIGlmIChyYl9zYWZlX2xldmVsKCkgPj0gNCAmJiAh
T0JKX1VOVFJVU1RFRChpbykpIHsKIAlyYl9yYWlzZShyYl9lU2VjdXJpdHlFcnJvciwgIkluc2Vj
dXJlOiBjYW4ndCBjbG9zZSIpOwogICAgIH0KICAgICByYl9pb19jaGVja19jbG9zZWQoUkZJTEUo
aW8pLT5mcHRyKTsKQEAgLTI5MDIsNyArMjkwMiw3IEBACiAgICAgcmJfaW9fdCAqZnB0cjsKICAg
ICBWQUxVRSB3cml0ZV9pbzsKIAotICAgIGlmIChyYl9zYWZlX2xldmVsKCkgPj0gNCAmJiAhT0JK
X1RBSU5URUQoaW8pKSB7CisgICAgaWYgKHJiX3NhZmVfbGV2ZWwoKSA+PSA0ICYmICFPQkpfVU5U
UlVTVEVEKGlvKSkgewogCXJiX3JhaXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNh
bid0IGNsb3NlIik7CiAgICAgfQogICAgIEdldE9wZW5GaWxlKGlvLCBmcHRyKTsKQEAgLTI5NjIs
NyArMjk2Miw3IEBACiAgICAgcmJfaW9fdCAqZnB0cjsKICAgICBWQUxVRSB3cml0ZV9pbzsKIAot
ICAgIGlmIChyYl9zYWZlX2xldmVsKCkgPj0gNCAmJiAhT0JKX1RBSU5URUQoaW8pKSB7CisgICAg
aWYgKHJiX3NhZmVfbGV2ZWwoKSA+PSA0ICYmICFPQkpfVU5UUlVTVEVEKGlvKSkgewogCXJiX3Jh
aXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNhbid0IGNsb3NlIik7CiAgICAgfQog
ICAgIHdyaXRlX2lvID0gR2V0V3JpdGVJTyhpbyk7CkBAIC00NDMwLDcgKzQ0MzAsOCBAQAogICAg
IG9mZl90IHBvcyA9IDA7CiAKICAgICBuZmlsZSA9IHJiX2lvX2dldF9pbyhuZmlsZSk7Ci0gICAg
aWYgKHJiX3NhZmVfbGV2ZWwoKSA+PSA0ICYmICghT0JKX1RBSU5URUQoaW8pIHx8ICFPQkpfVEFJ
TlRFRChuZmlsZSkpKSB7CisgICAgaWYgKHJiX3NhZmVfbGV2ZWwoKSA+PSA0ICYmCisgICAgICAg
CSghT0JKX1VOVFJVU1RFRChpbykgfHwgIU9CSl9VTlRSVVNURUQobmZpbGUpKSkgewogCXJiX3Jh
aXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNhbid0IHJlb3BlbiIpOwogICAgIH0K
ICAgICBHZXRPcGVuRmlsZShpbywgZnB0cik7CkluZGV4OiBkaXIuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBk
aXIuYwkocmV2aXNpb24gMTg1NDQpCisrKyBkaXIuYwkod29ya2luZyBjb3B5KQpAQCAtNDE0LDgg
KzQxNCw4IEBACiBzdGF0aWMgdm9pZAogZGlyX2NoZWNrKFZBTFVFIGRpcikKIHsKLSAgICBpZiAo
IU9CSl9UQUlOVEVEKGRpcikgJiYgcmJfc2FmZV9sZXZlbCgpID49IDQpCi0JcmJfcmFpc2UocmJf
ZVNlY3VyaXR5RXJyb3IsICJJbnNlY3VyZTogb3BlcmF0aW9uIG9uIHVudGFpbnRlZCBEaXIiKTsK
KyAgICBpZiAoIU9CSl9VTlRSVVNURUQoZGlyKSAmJiByYl9zYWZlX2xldmVsKCkgPj0gNCkKKwly
Yl9yYWlzZShyYl9lU2VjdXJpdHlFcnJvciwgIkluc2VjdXJlOiBvcGVyYXRpb24gb24gdHJ1c3Rl
ZCBEaXIiKTsKICAgICByYl9jaGVja19mcm96ZW4oZGlyKTsKIH0KIApAQCAtNjMwLDcgKzYzMCw3
IEBACiB7CiAgICAgc3RydWN0IGRpcl9kYXRhICpkaXJwOwogCi0gICAgaWYgKHJiX3NhZmVfbGV2
ZWwoKSA+PSA0ICYmICFPQkpfVEFJTlRFRChkaXIpKSB7CisgICAgaWYgKHJiX3NhZmVfbGV2ZWwo
KSA+PSA0ICYmICFPQkpfVU5UUlVTVEVEKGRpcikpIHsKIAlyYl9yYWlzZShyYl9lU2VjdXJpdHlF
cnJvciwgIkluc2VjdXJlOiBjYW4ndCBjbG9zZSIpOwogICAgIH0KICAgICBHZXRESVIoZGlyLCBk
aXJwKTsKSW5kZXg6IHZtX21ldGhvZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHZtX21ldGhvZC5jCShyZXZp
c2lvbiAxODU0NCkKKysrIHZtX21ldGhvZC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4
LDggQEAKICAgICBpZiAoTklMX1Aoa2xhc3MpKSB7CiAJa2xhc3MgPSByYl9jT2JqZWN0OwogICAg
IH0KLSAgICBpZiAocmJfc2FmZV9sZXZlbCgpID49IDQgJiYgKGtsYXNzID09IHJiX2NPYmplY3Qg
fHwgIU9CSl9UQUlOVEVEKGtsYXNzKSkpIHsKKyAgICBpZiAocmJfc2FmZV9sZXZlbCgpID49IDQg
JiYKKyAgICAgICAJKGtsYXNzID09IHJiX2NPYmplY3QgfHwgIU9CSl9VTlRSVVNURUQoa2xhc3Mp
KSkgewogCXJiX3JhaXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNhbid0IGRlZmlu
ZSBtZXRob2QiKTsKICAgICB9CiAgICAgaWYgKCFGTF9URVNUKGtsYXNzLCBGTF9TSU5HTEVUT04p
ICYmCkBAIC0zMDcsNyArMzA4LDcgQEAKICAgICBpZiAoa2xhc3MgPT0gcmJfY09iamVjdCkgewog
CXJiX3NlY3VyZSg0KTsKICAgICB9Ci0gICAgaWYgKHJiX3NhZmVfbGV2ZWwoKSA+PSA0ICYmICFP
QkpfVEFJTlRFRChrbGFzcykpIHsKKyAgICBpZiAocmJfc2FmZV9sZXZlbCgpID49IDQgJiYgIU9C
Sl9VTlRSVVNURUQoa2xhc3MpKSB7CiAJcmJfcmFpc2UocmJfZVNlY3VyaXR5RXJyb3IsICJJbnNl
Y3VyZTogY2FuJ3QgcmVtb3ZlIG1ldGhvZCIpOwogICAgIH0KICAgICBpZiAoT0JKX0ZST1pFTihr
bGFzcykpCkBAIC00NzQsNyArNDc1LDcgQEAKICAgICBpZiAocmJfdm1fY2Jhc2UoKSA9PSByYl9j
T2JqZWN0ICYmIGtsYXNzID09IHJiX2NPYmplY3QpIHsKIAlyYl9zZWN1cmUoNCk7CiAgICAgfQot
ICAgIGlmIChyYl9zYWZlX2xldmVsKCkgPj0gNCAmJiAhT0JKX1RBSU5URUQoa2xhc3MpKSB7Cisg
ICAgaWYgKHJiX3NhZmVfbGV2ZWwoKSA+PSA0ICYmICFPQkpfVU5UUlVTVEVEKGtsYXNzKSkgewog
CXJiX3JhaXNlKHJiX2VTZWN1cml0eUVycm9yLCAiSW5zZWN1cmU6IGNhbid0IHVuZGVmIGAlcyci
LAogCQkgcmJfaWQybmFtZShpZCkpOwogICAgIH0KQEAgLTgxMCw3ICs4MTEsNyBAQAogc3RhdGlj
IHZvaWQKIHNlY3VyZV92aXNpYmlsaXR5KFZBTFVFIHNlbGYpCiB7Ci0gICAgaWYgKHJiX3NhZmVf
bGV2ZWwoKSA+PSA0ICYmICFPQkpfVEFJTlRFRChzZWxmKSkgeworICAgIGlmIChyYl9zYWZlX2xl
dmVsKCkgPj0gNCAmJiAhT0JKX1VOVFJVU1RFRChzZWxmKSkgewogCXJiX3JhaXNlKHJiX2VTZWN1
cml0eUVycm9yLAogCQkgIkluc2VjdXJlOiBjYW4ndCBjaGFuZ2UgbWV0aG9kIHZpc2liaWxpdHki
KTsKICAgICB9CkluZGV4OiBzdHJ1Y3QuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdHJ1Y3QuYwkocmV2aXNp
b24gMTg1NDQpCisrKyBzdHJ1Y3QuYwkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBA
CiByYl9zdHJ1Y3RfbW9kaWZ5KFZBTFVFIHMpCiB7CiAgICAgaWYgKE9CSl9GUk9aRU4ocykpIHJi
X2Vycm9yX2Zyb3plbigiU3RydWN0Iik7Ci0gICAgaWYgKCFPQkpfVEFJTlRFRChzKSAmJiByYl9z
YWZlX2xldmVsKCkgPj0gNCkKKyAgICBpZiAoIU9CSl9VTlRSVVNURUQocykgJiYgcmJfc2FmZV9s
ZXZlbCgpID49IDQpCiAgICAgICAgcmJfcmFpc2UocmJfZVNlY3VyaXR5RXJyb3IsICJJbnNlY3Vy
ZTogY2FuJ3QgbW9kaWZ5IFN0cnVjdCIpOwogfQogCkluZGV4OiBjbGFzcy5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGNsYXNzLmMJKHJldmlzaW9uIDE4NTQ0KQorKysgY2xhc3MuYwkod29ya2luZyBjb3B5KQpA
QCAtODMzLDYgKzgzMywxMiBAQAogICAgIGVsc2UgewogCUZMX1VOU0VUKGtsYXNzLCBGTF9UQUlO
VCk7CiAgICAgfQorICAgIGlmIChPQkpfVU5UUlVTVEVEKG9iaikpIHsKKwlPQkpfVU5UUlVTVChr
bGFzcyk7CisgICAgfQorICAgIGVsc2UgeworCUZMX1VOU0VUKGtsYXNzLCBGTF9VTlRSVVNURUQp
OworICAgIH0KICAgICBpZiAoT0JKX0ZST1pFTihvYmopKSBPQkpfRlJFRVpFKGtsYXNzKTsKICAg
ICBBTExPV19JTlRTOwogCkluZGV4OiBoYXNoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaGFzaC5jCShyZXZp
c2lvbiAxODU0NCkKKysrIGhhc2guYwkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3IEBA
CiByYl9oYXNoX21vZGlmeV9jaGVjayhWQUxVRSBoYXNoKQogewogICAgIGlmIChPQkpfRlJPWkVO
KGhhc2gpKSByYl9lcnJvcl9mcm96ZW4oImhhc2giKTsKLSAgICBpZiAoIU9CSl9UQUlOVEVEKGhh
c2gpICYmIHJiX3NhZmVfbGV2ZWwoKSA+PSA0KQorICAgIGlmICghT0JKX1VOVFJVU1RFRChoYXNo
KSAmJiByYl9zYWZlX2xldmVsKCkgPj0gNCkKIAlyYl9yYWlzZShyYl9lU2VjdXJpdHlFcnJvciwg
Ikluc2VjdXJlOiBjYW4ndCBtb2RpZnkgaGFzaCIpOwogfQogCkluZGV4OiBydWJ5LmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcnVieS5jCShyZXZpc2lvbiAxODU0NCkKKysrIHJ1YnkuYwkod29ya2luZyBjb3B5
KQpAQCAtMTA2OSwxMiArMTA2OSwxMiBAQAogI2VuZGlmCiAgICAgb3B0LT5zY3JpcHRfbmFtZSA9
IHJiX3N0cl9uZXc0KHJiX3Byb2duYW1lKTsKICAgICBvcHQtPnNjcmlwdCA9IFJTVFJJTkdfUFRS
KG9wdC0+c2NyaXB0X25hbWUpOworICAgIHNhZmUgPSByYl9zYWZlX2xldmVsKCk7CisgICAgcmJf
c2V0X3NhZmVfbGV2ZWxfZm9yY2UoMCk7CiAgICAgcnVieV9zZXRfYXJndihhcmdjLCBhcmd2KTsK
ICAgICBwcm9jZXNzX3NmbGFnKG9wdCk7CiAKICAgICBydWJ5X2luaXRfbG9hZHBhdGgoKTsKLSAg
ICBzYWZlID0gcmJfc2FmZV9sZXZlbCgpOwotICAgIHJiX3NldF9zYWZlX2xldmVsX2ZvcmNlKDAp
OwogICAgIHJ1YnlfaW5pdF9nZW1zKCEob3B0LT5kaXNhYmxlICYgRElTQUJMRV9CSVQoZ2Vtcykp
KTsKICAgICBsZW5jID0gcmJfbG9jYWxlX2VuY29kaW5nKCk7CiAgICAgZm9yIChpID0gMDsgaSA8
IFJBUlJBWV9MRU4ocmJfYXJndik7IGkrKykgewpJbmRleDogdGVzdC9ydWJ5L3Rlc3RfYXJyYXku
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGVzdC9ydWJ5L3Rlc3RfYXJyYXkucmIJKHJldmlzaW9uIDE4NTQ0
KQorKysgdGVzdC9ydWJ5L3Rlc3RfYXJyYXkucmIJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwxNiAr
NDUxLDIwIEBACiAKICAgZGVmIHRlc3RfY2xvbmUKICAgICBmb3IgdGFpbnQgaW4gWyBmYWxzZSwg
dHJ1ZSBdCi0gICAgICBmb3IgZnJvemVuIGluIFsgZmFsc2UsIHRydWUgXQotICAgICAgICBhID0g
QGNsc1sqKDAuLjk5KS50b19hXQotICAgICAgICBhLnRhaW50ICBpZiB0YWludAotICAgICAgICBh
LmZyZWV6ZSBpZiBmcm96ZW4KLSAgICAgICAgYiA9IGEuY2xvbmUKKyAgICAgIGZvciB1bnRydXN0
IGluIFsgZmFsc2UsIHRydWUgXQorICAgICAgICBmb3IgZnJvemVuIGluIFsgZmFsc2UsIHRydWUg
XQorICAgICAgICAgIGEgPSBAY2xzWyooMC4uOTkpLnRvX2FdCisgICAgICAgICAgYS50YWludCAg
aWYgdGFpbnQKKyAgICAgICAgICBhLnVudHJ1c3QgIGlmIHVudHJ1c3QKKyAgICAgICAgICBhLmZy
ZWV6ZSBpZiBmcm96ZW4KKyAgICAgICAgICBiID0gYS5jbG9uZQogCi0gICAgICAgIGFzc2VydF9l
cXVhbChhLCBiKQotICAgICAgICBhc3NlcnQoYS5fX2lkX18gIT0gYi5fX2lkX18pCi0gICAgICAg
IGFzc2VydF9lcXVhbChhLmZyb3plbj8sIGIuZnJvemVuPykKLSAgICAgICAgYXNzZXJ0X2VxdWFs
KGEudGFpbnRlZD8sIGIudGFpbnRlZD8pCisgICAgICAgICAgYXNzZXJ0X2VxdWFsKGEsIGIpCisg
ICAgICAgICAgYXNzZXJ0KGEuX19pZF9fICE9IGIuX19pZF9fKQorICAgICAgICAgIGFzc2VydF9l
cXVhbChhLmZyb3plbj8sIGIuZnJvemVuPykKKyAgICAgICAgICBhc3NlcnRfZXF1YWwoYS51bnRy
dXN0ZWQ/LCBiLnVudHJ1c3RlZD8pCisgICAgICAgICAgYXNzZXJ0X2VxdWFsKGEudGFpbnRlZD8s
IGIudGFpbnRlZD8pCisgICAgICAgIGVuZAogICAgICAgZW5kCiAgICAgZW5kCiAgIGVuZApJbmRl
eDogdGVzdC9ydWJ5L3Rlc3Rfc3RyaW5nLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3QvcnVieS90ZXN0
X3N0cmluZy5yYgkocmV2aXNpb24gMTg1NDQpCisrKyB0ZXN0L3J1YnkvdGVzdF9zdHJpbmcucmIJ
KHdvcmtpbmcgY29weSkKQEAgLTQyNywxNiArNDI3LDIwIEBACiAKICAgZGVmIHRlc3RfY2xvbmUK
ICAgICBmb3IgdGFpbnQgaW4gWyBmYWxzZSwgdHJ1ZSBdCi0gICAgICBmb3IgZnJvemVuIGluIFsg
ZmFsc2UsIHRydWUgXQotICAgICAgICBhID0gUygiQ29vbCIpCi0gICAgICAgIGEudGFpbnQgIGlm
IHRhaW50Ci0gICAgICAgIGEuZnJlZXplIGlmIGZyb3plbgotICAgICAgICBiID0gYS5jbG9uZQor
ICAgICAgZm9yIHVudHJ1c3QgaW4gWyBmYWxzZSwgdHJ1ZSBdCisgICAgICAgIGZvciBmcm96ZW4g
aW4gWyBmYWxzZSwgdHJ1ZSBdCisgICAgICAgICAgYSA9IFMoIkNvb2wiKQorICAgICAgICAgIGEu
dGFpbnQgIGlmIHRhaW50CisgICAgICAgICAgYS51bnRydXN0ICBpZiB1bnRydXN0CisgICAgICAg
ICAgYS5mcmVlemUgaWYgZnJvemVuCisgICAgICAgICAgYiA9IGEuY2xvbmUKIAotICAgICAgICBh
c3NlcnRfZXF1YWwoYSwgYikKLSAgICAgICAgYXNzZXJ0KGEuX19pZF9fICE9IGIuX19pZF9fKQot
ICAgICAgICBhc3NlcnRfZXF1YWwoYS5mcm96ZW4/LCBiLmZyb3plbj8pCi0gICAgICAgIGFzc2Vy
dF9lcXVhbChhLnRhaW50ZWQ/LCBiLnRhaW50ZWQ/KQorICAgICAgICAgIGFzc2VydF9lcXVhbChh
LCBiKQorICAgICAgICAgIGFzc2VydChhLl9faWRfXyAhPSBiLl9faWRfXykKKyAgICAgICAgICBh
c3NlcnRfZXF1YWwoYS5mcm96ZW4/LCBiLmZyb3plbj8pCisgICAgICAgICAgYXNzZXJ0X2VxdWFs
KGEudW50cnVzdGVkPywgYi51bnRydXN0ZWQ/KQorICAgICAgICAgIGFzc2VydF9lcXVhbChhLnRh
aW50ZWQ/LCBiLnRhaW50ZWQ/KQorICAgICAgICBlbmQKICAgICAgIGVuZAogICAgIGVuZAogCkBA
IC01MzIsMTYgKzUzNiwyMCBAQAogCiAgIGRlZiB0ZXN0X2R1cAogICAgIGZvciB0YWludCBpbiBb
IGZhbHNlLCB0cnVlIF0KLSAgICAgIGZvciBmcm96ZW4gaW4gWyBmYWxzZSwgdHJ1ZSBdCi0gICAg
ICAgIGEgPSBTKCJoZWxsbyIpCi0gICAgICAgIGEudGFpbnQgIGlmIHRhaW50Ci0gICAgICAgIGEu
ZnJlZXplIGlmIGZyb3plbgotICAgICAgICBiID0gYS5kdXAgCisgICAgICBmb3IgdW50cnVzdCBp
biBbIGZhbHNlLCB0cnVlIF0KKyAgICAgICAgZm9yIGZyb3plbiBpbiBbIGZhbHNlLCB0cnVlIF0K
KyAgICAgICAgICBhID0gUygiaGVsbG8iKQorICAgICAgICAgIGEudGFpbnQgIGlmIHRhaW50Cisg
ICAgICAgICAgYS51bnRydXN0ICBpZiB1bnRydXN0CisgICAgICAgICAgYS5mcmVlemUgaWYgZnJv
emVuCisgICAgICAgICAgYiA9IGEuZHVwIAogCi0gICAgICAgIGFzc2VydF9lcXVhbChhLCBiKQot
ICAgICAgICBhc3NlcnQoYS5fX2lkX18gIT0gYi5fX2lkX18pCi0gICAgICAgIGFzc2VydCghYi5m
cm96ZW4/KQotICAgICAgICBhc3NlcnRfZXF1YWwoYS50YWludGVkPywgYi50YWludGVkPykKKyAg
ICAgICAgICBhc3NlcnRfZXF1YWwoYSwgYikKKyAgICAgICAgICBhc3NlcnQoYS5fX2lkX18gIT0g
Yi5fX2lkX18pCisgICAgICAgICAgYXNzZXJ0KCFiLmZyb3plbj8pCisgICAgICAgICAgYXNzZXJ0
X2VxdWFsKGEudGFpbnRlZD8sIGIudGFpbnRlZD8pCisgICAgICAgICAgYXNzZXJ0X2VxdWFsKGEu
dW50cnVzdGVkPywgYi51bnRydXN0ZWQ/KQorICAgICAgICBlbmQKICAgICAgIGVuZAogICAgIGVu
ZCAgICAgCiAgIGVuZApAQCAtNjIzLDcgKzYzMSw5IEBACiAKICAgICBhID0gUygiaGVsbG8iKQog
ICAgIGEudGFpbnQKKyAgICBhLnVudHJ1c3QKICAgICBhc3NlcnQoYS5nc3ViKC8uLywgUygnWCcp
KS50YWludGVkPykKKyAgICBhc3NlcnQoYS5nc3ViKC8uLywgUygnWCcpKS51bnRydXN0ZWQ/KQog
CiAgICAgYXNzZXJ0X2VxdWFsKCJ6IiwgImFiYyIuZ3N1YigvLi8sICJhIiA9PiAieiIpLCAibW92
ZWQgZnJvbSBidGVzdC9rbm93bmJ1ZyIpCiAKQEAgLTY1MSw4ICs2NjEsMTAgQEAKIAogICAgIHIg
PSBTKCdYJykKICAgICByLnRhaW50CisgICAgci51bnRydXN0CiAgICAgYS5nc3ViISgvLi8sIHIp
CiAgICAgYXNzZXJ0KGEudGFpbnRlZD8pIAorICAgIGFzc2VydChhLnVudHJ1c3RlZD8pIAogCiAg
ICAgYSA9IFMoImhlbGxvIikKICAgICBhc3NlcnRfbmlsKGEuc3ViIShTKCdYJyksIFMoJ1knKSkp
CkBAIC04MjMsOSArODM1LDExIEBACiAKICAgICBhID0gUygiZm9vIikKICAgICBhLnRhaW50Cisg
ICAgYS51bnRydXN0CiAgICAgYiA9IGEucmVwbGFjZShTKCJ4eXoiKSkKICAgICBhc3NlcnRfZXF1
YWwoUygieHl6IiksIGIpCiAgICAgYXNzZXJ0KGIudGFpbnRlZD8pCisgICAgYXNzZXJ0KGIudW50
cnVzdGVkPykKIAogICAgIHMgPSAiZm9vIiAqIDEwMAogICAgIHMyID0gKCJiYXIiICogMTAwKS5k
dXAKQEAgLTExNzAsNyArMTE4NCwxMCBAQAogCiAgICAgYSA9IFMoImhlbGxvIikKICAgICBhLnRh
aW50Ci0gICAgYXNzZXJ0KGEuc3ViKC8uLywgUygnWCcpKS50YWludGVkPykKKyAgICBhLnVudHJ1
c3QKKyAgICB4ID0gYS5zdWIoLy4vLCBTKCdYJykpCisgICAgYXNzZXJ0KHgudGFpbnRlZD8pCisg
ICAgYXNzZXJ0KHgudW50cnVzdGVkPykKIAogICAgIG8gPSBPYmplY3QubmV3CiAgICAgZGVmIG8u
dG9fc3RyOyAiYmFyIjsgZW5kCkBAIC0xMjExLDggKzEyMjgsMTAgQEAKIAogICAgIHIgPSBTKCdY
JykKICAgICByLnRhaW50CisgICAgci51bnRydXN0CiAgICAgYS5zdWIhKC8uLywgcikKICAgICBh
c3NlcnQoYS50YWludGVkPykgCisgICAgYXNzZXJ0KGEudW50cnVzdGVkPykgCiAgIGVuZAogCiAg
IGRlZiB0ZXN0X3N1Y2MKSW5kZXg6IHRlc3QvcnVieS90ZXN0X29iamVjdC5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0ZXN0L3J1YnkvdGVzdF9vYmplY3QucmIJKHJldmlzaW9uIDE4NTQ0KQorKysgdGVzdC9y
dWJ5L3Rlc3Rfb2JqZWN0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNCArMzIwLDU5IEBACiAg
ICAgICAxLmV4dGVuZAogICAgIGVuZAogICBlbmQKKworICBkZWYgdGVzdF91bnRydXN0ZWQKKyAg
ICBvYmogPSBsYW1iZGEgeworICAgICAgJFNBRkUgPSA0CisgICAgICB4ID0gT2JqZWN0Lm5ldwor
ICAgICAgeC5pbnN0YW5jZV9ldmFsIHsgQGZvbyA9IDEgfQorICAgICAgeAorICAgIH0uY2FsbAor
ICAgIGFzc2VydF9lcXVhbCh0cnVlLCBvYmoudW50cnVzdGVkPykKKyAgICBhc3NlcnRfZXF1YWwo
dHJ1ZSwgb2JqLnRhaW50ZWQ/KQorCisgICAgeCA9IE9iamVjdC5uZXcKKyAgICBhc3NlcnRfZXF1
YWwoZmFsc2UsIHgudW50cnVzdGVkPykKKyAgICBhc3NlcnRfcmFpc2UoU2VjdXJpdHlFcnJvcikg
ZG8KKyAgICAgIGxhbWJkYSB7CisgICAgICAgICRTQUZFID0gNAorICAgICAgICB4Lmluc3RhbmNl
X2V2YWwgeyBAZm9vID0gMSB9CisgICAgICB9LmNhbGwKKyAgICBlbmQKKworICAgIHggPSBPYmpl
Y3QubmV3CisgICAgeC50YWludAorICAgIGFzc2VydF9yYWlzZShTZWN1cml0eUVycm9yKSBkbwor
ICAgICAgbGFtYmRhIHsKKyAgICAgICAgJFNBRkUgPSA0CisgICAgICAgIHguaW5zdGFuY2VfZXZh
bCB7IEBmb28gPSAxIH0KKyAgICAgIH0uY2FsbAorICAgIGVuZAorCisgICAgeC51bnRydXN0Cisg
ICAgYXNzZXJ0X2VxdWFsKHRydWUsIHgudW50cnVzdGVkPykKKyAgICBhc3NlcnRfbm90aGluZ19y
YWlzZWQgZG8KKyAgICAgIGxhbWJkYSB7CisgICAgICAgICRTQUZFID0gNAorICAgICAgICB4Lmlu
c3RhbmNlX2V2YWwgeyBAZm9vID0gMSB9CisgICAgICB9LmNhbGwKKyAgICBlbmQKKworICAgIHgu
dHJ1c3QKKyAgICBhc3NlcnRfZXF1YWwoZmFsc2UsIHgudW50cnVzdGVkPykKKyAgICBhc3NlcnRf
cmFpc2UoU2VjdXJpdHlFcnJvcikgZG8KKyAgICAgIGxhbWJkYSB7CisgICAgICAgICRTQUZFID0g
NAorICAgICAgICB4Lmluc3RhbmNlX2V2YWwgeyBAZm9vID0gMSB9CisgICAgICB9LmNhbGwKKyAg
ICBlbmQKKworICAgIGEgPSBPYmplY3QubmV3CisgICAgYS51bnRydXN0CisgICAgYXNzZXJ0X2Vx
dWFsKHRydWUsIGEudW50cnVzdGVkPykKKyAgICBiID0gYS5kdXAKKyAgICBhc3NlcnRfZXF1YWwo
dHJ1ZSwgYi51bnRydXN0ZWQ/KQorICAgIGMgPSBhLmNsb25lCisgICAgYXNzZXJ0X2VxdWFsKHRy
dWUsIGMudW50cnVzdGVkPykKKyAgZW5kCiBlbmQK
------art_60372_3271573.1218557809844--