------ 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--