From octave-sources-request at bevo dot che dot wisc dot edu Wed Jun 2 07:41:11 1999 Subject: dimension argument for sum, cumsum etc (against 2.0.14) From: Kian Chai To: octave-sources at bevo dot che dot wisc dot edu Date: Wed, 2 Jun 1999 13:40:58 +0100 (BST) This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime at docserver dot cac dot washington dot edu for more info. ---559023410-851401618-928327258=:2168 Content-Type: TEXT/PLAIN; charset=US-ASCII ---559023410-851401618-928327258=:2168 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=changelo Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: ChangeLog V2VkIEp1biAgMiAwMToyNTozMiAxOTk5ICBLLk0uQS4gQ2hhaSAgPGtpYW5j QGRhaS5lZC5hYy51az4NCgkqIGxpYm9jdGF2ZS9kTWF0cml4LmggKE1hdHJp eCBjdW1wcm9kIChpbnQgZGltID0gMCkgY29uc3QpOiBBZGRlZA0KCWV4dHJh IGFyZ3VtZW50IGluZGljYXRlIHRoZSBkaW1lbnNpb24gYWxvbmcgd2hpY2gg dGhlIG9wZXJhdGlvbiBpcw0KCXBlcmZvcm1lZC4NCgkoTWF0cml4IGN1bXN1 bSAoaW50IGRpbSA9IDApIGNvbnN0KTogTGlrZXdpc2UNCgkoTWF0cml4IHBy b2QgKGludCBkaW0gPSAwKSBjb25zdCk6IExpa2V3aXNlDQoJKE1hdHJpeCBz dW0gKGludCBkaW0gPSAwKSBjb25zdCk6IExpa2V3aXNlDQoJKE1hdHJpeCBz dW1zcSAoaW50IGRpbSA9IDApIGNvbnN0KTogTGlrZXdpc2UNCgkqIGxpYm9j dGF2ZS9DTWF0cml4LmggKENvbXBsZXhNYXRyaXggY3VtcHJvZCAoaW50IGRp bSA9IDApIGNvbnN0KToNCglBZGRlZCBleHRyYSBhcmd1bWVudCBpbmRpY2F0 ZSB0aGUgZGltZW5zaW9uIGFsb25nIHdoaWNoIHRoZQ0KCW9wZXJhdGlvbiBp cyBwZXJmb3JtZWQuDQoJKENvbXBsZXhNYXRyaXggY3Vtc3VtIChpbnQgZGlt ID0gMCkgY29uc3QpOiBMaWtld2lzZQ0KCShDb21wbGV4TWF0cml4IHByb2Qg KGludCBkaW0gPSAwKSBjb25zdCk6IExpa2V3aXNlDQoJKENvbXBsZXhNYXRy aXggc3VtIChpbnQgZGltID0gMCkgY29uc3QpOiBMaWtld2lzZQ0KCShDb21w bGV4TWF0cml4IHN1bXNxIChpbnQgZGltID0gMCkgY29uc3QpOiBMaWtld2lz ZQ0KCSogbGlib2N0YXZlL2RNYXRyaXguY2MgKE1hdHJpeCBjdW1wcm9kIChp bnQgZGltID0gMCkgY29uc3QpOiBBZGRlZA0KCWV4dHJhIGFyZ3VtZW50IGlu ZGljYXRlIHRoZSBkaW1lbnNpb24gb2Ygb3BlcmF0aW9uLiBSZW1vdmUNCglk dXBsaWNhdGUgY29kZSBzbyB0aGF0IHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNo ZWNrIGZvciBjb2x1bW4gb3INCglyb3cgdmVjdG9yLiBSZXN1bHRhbnQgY29k ZSBjb3VsZCBiZSBzbG93ZXIgKGJ1dCBuZWF0ZXI/KQ0KCShNYXRyaXggY3Vt c3VtIChpbnQgZGltID0gMCkgY29uc3QpOiBMaWtld2lzZQ0KCShNYXRyaXgg cHJvZCAoaW50IGRpbSA9IDApIGNvbnN0KTogTGlrZXdpc2UNCgkoTWF0cml4 IHN1bSAoaW50IGRpbSA9IDApIGNvbnN0KTogTGlrZXdpc2UNCgkoTWF0cml4 IHN1bXNxIChpbnQgZGltID0gMCkgY29uc3QpOiBMaWtld2lzZQ0KCSogbGli b2N0YXZlL0NNYXRyaXguY2MgKENvbXBsZXhNYXRyaXggY3VtcHJvZCAoaW50 IGRpbSA9IDApIGNvbnN0KTogDQoJQWRkZWQgZXh0cmEgYXJndW1lbnQgaW5k aWNhdGUgdGhlIGRpbWVuc2lvbiBvZiBvcGVyYXRpb24uIFJlbW92ZQ0KCWR1 cGxpY2F0ZSBjb2RlIHNvIHRoYXQgdGhlcmUgaXMgbm8gZXhwbGljaXQgY2hl Y2sgZm9yIGNvbHVtbiBvcg0KCXJvdyB2ZWN0b3IuIFJlc3VsdGFudCBjb2Rl IGNvdWxkIGJlIHNsb3dlciAoYnV0IG5lYXRlcj8pDQoJKENvbXBsZXhNYXRy aXggY3Vtc3VtIChpbnQgZGltID0gMCkgY29uc3QpOiBMaWtld2lzZQ0KCShD b21wbGV4TWF0cml4IHByb2QgKGludCBkaW0gPSAwKSBjb25zdCk6IExpa2V3 aXNlDQoJKENvbXBsZXhNYXRyaXggc3VtIChpbnQgZGltID0gMCkgY29uc3Qp OiBMaWtld2lzZQ0KCSogc3JjL2RhdGEuY2MgKERFRlVOIChjdW1wcm9kLCBh cmdzLCAsLi4uKSk6IGFkZGVkIGNoZWNrIGZvciBleHRyYQ0KCWRpbWVuc2lv biBhcmd1bWVudCBhbmQgbWFrZSB1c2Ugb2YgaXQuDQoJKERFRlVOIChjdW1z dW0sIGFyZ3MsICwuLi4pKTogTGlrZXdpc2UNCgkoREVGVU4gKHByb2QsIGFy Z3MsICwuLi4pKTogTGlrZXdpc2UNCgkoREVGVU4gKHN1bSwgYXJncywgLC4u LikpOiBMaWtld2lzZQ0KCShERUZVTiAoc3Vtc3EsIGFyZ3MsICwuLi4pKTog TGlrZXdpc2UNCg== ---559023410-851401618-928327258=:2168 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="optdim.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: optdim.diff ZGlmZiAtY3Igb2N0YXZlLTIuMC4xNC9saWJvY3RhdmUvQ01hdHJpeC5jYyBw YXRjaGVzL2xpYm9jdGF2ZS9DTWF0cml4LmNjDQoqKiogb2N0YXZlLTIuMC4x NC9saWJvY3RhdmUvQ01hdHJpeC5jYwlUdWUgSmFuIDE5IDE1OjM0OjU0IDE5 OTkNCi0tLSBwYXRjaGVzL2xpYm9jdGF2ZS9DTWF0cml4LmNjCVdlZCBKdW4g IDIgMTM6Mjk6MDYgMTk5OQ0KKioqKioqKioqKioqKioqDQoqKiogMzE4OSwz MjI2ICoqKioNCiAgfQ0KICANCiAgQ29tcGxleE1hdHJpeA0KISBDb21wbGV4 TWF0cml4OjpjdW1wcm9kICh2b2lkKSBjb25zdA0KICB7DQogICAgaW50IG5y ID0gcm93cyAoKTsNCiAgICBpbnQgbmMgPSBjb2xzICgpOw0KISAgIENvbXBs ZXhNYXRyaXggcmV0dmFsOw0KICAgIGlmIChuciA+IDAgJiYgbmMgPiAwKQ0K ICAgICAgew0KISAgICAgICBpZiAobnIgPT0gMSkNCiEgCXsNCiEgCSAgcmV0 dmFsLnJlc2l6ZSAoMSwgbmMpOw0KISAJICBDb21wbGV4IHByb2QgPSBlbGVt ICgwLCAwKTsNCiEgCSAgZm9yIChpbnQgaiA9IDA7IGogPCBuYzsgaisrKQ0K ISAJICAgIHsNCiEgCSAgICAgIHJldHZhbC5lbGVtICgwLCBqKSA9IHByb2Q7 DQohIAkgICAgICBpZiAoaiA8IG5jIC0gMSkNCiEgCQlwcm9kICo9IGVsZW0g KDAsIGorMSk7DQohIAkgICAgfQ0KISAJfQ0KISAgICAgICBlbHNlIGlmIChu YyA9PSAxKQ0KICAJew0KLSAJICByZXR2YWwucmVzaXplIChuciwgMSk7DQot IAkgIENvbXBsZXggcHJvZCA9IGVsZW0gKDAsIDApOw0KICAJICBmb3IgKGlu dCBpID0gMDsgaSA8IG5yOyBpKyspDQogIAkgICAgew0KISAJICAgICAgcmV0 dmFsLmVsZW0gKGksIDApID0gcHJvZDsNCiEgCSAgICAgIGlmIChpIDwgbnIg LSAxKQ0KISAJCXByb2QgKj0gZWxlbSAoaSsxLCAwKTsNCiAgCSAgICB9DQog IAl9DQogICAgICAgIGVsc2UNCiAgCXsNCi0gCSAgcmV0dmFsLnJlc2l6ZSAo bnIsIG5jKTsNCiAgCSAgZm9yIChpbnQgaiA9IDA7IGogPCBuYzsgaisrKQ0K ICAJICAgIHsNCiAgCSAgICAgIENvbXBsZXggcHJvZCA9IGVsZW0gKDAsIGop Ow0KLS0tIDMxODksMzIxNiAtLS0tDQogIH0NCiAgDQogIENvbXBsZXhNYXRy aXgNCiEgQ29tcGxleE1hdHJpeDo6Y3VtcHJvZCAoaW50IGRpbSkgY29uc3QN CiAgew0KICAgIGludCBuciA9IHJvd3MgKCk7DQogICAgaW50IG5jID0gY29s cyAoKTsNCiEgICBDb21wbGV4TWF0cml4IHJldHZhbCAobnIsIG5jKTsNCiAg ICBpZiAobnIgPiAwICYmIG5jID4gMCkNCiAgICAgIHsNCiEgICAgICAgaWYg KCgobnIgPT0gMSkgJiYgKGRpbSA9PSAwKSkgfHwgKGRpbSA9PSAyKSkNCiAg CXsNCiAgCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsgaSsrKQ0KICAJICAg IHsNCiEgCSAgICAgIENvbXBsZXggcHJvZCA9IGVsZW0gKDAsIDApOw0KISAJ ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuYzsgaisrKQ0KISAJCXsNCiEg CQkgIHJldHZhbC5lbGVtICgwLCBqKSA9IHByb2Q7DQohIAkJICBpZiAoaiA8 IG5jIC0gMSkNCiEgCQkgICAgcHJvZCAqPSBlbGVtIChpLCBqKzEpOw0KISAJ CX0NCiAgCSAgICB9DQogIAl9DQogICAgICAgIGVsc2UNCiAgCXsNCiAgCSAg Zm9yIChpbnQgaiA9IDA7IGogPCBuYzsgaisrKQ0KICAJICAgIHsNCiAgCSAg ICAgIENvbXBsZXggcHJvZCA9IGVsZW0gKDAsIGopOw0KKioqKioqKioqKioq KioqDQoqKiogMzIzNywzMjc0ICoqKioNCiAgfQ0KICANCiAgQ29tcGxleE1h dHJpeA0KISBDb21wbGV4TWF0cml4OjpjdW1zdW0gKHZvaWQpIGNvbnN0DQog IHsNCiAgICBpbnQgbnIgPSByb3dzICgpOw0KICAgIGludCBuYyA9IGNvbHMg KCk7DQohICAgQ29tcGxleE1hdHJpeCByZXR2YWw7DQogICAgaWYgKG5yID4g MCAmJiBuYyA+IDApDQogICAgICB7DQohICAgICAgIGlmIChuciA9PSAxKQ0K ISAJew0KISAJICByZXR2YWwucmVzaXplICgxLCBuYyk7DQohIAkgIENvbXBs ZXggc3VtID0gZWxlbSAoMCwgMCk7DQohIAkgIGZvciAoaW50IGogPSAwOyBq IDwgbmM7IGorKykNCiEgCSAgICB7DQohIAkgICAgICByZXR2YWwuZWxlbSAo MCwgaikgPSBzdW07DQohIAkgICAgICBpZiAoaiA8IG5jIC0gMSkNCiEgCQlz dW0gKz0gZWxlbSAoMCwgaisxKTsNCiEgCSAgICB9DQohIAl9DQohICAgICAg IGVsc2UgaWYgKG5jID09IDEpDQogIAl7DQotIAkgIHJldHZhbC5yZXNpemUg KG5yLCAxKTsNCi0gCSAgQ29tcGxleCBzdW0gPSBlbGVtICgwLCAwKTsNCiAg CSAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsgaSsrKQ0KICAJICAgIHsNCiEg CSAgICAgIHJldHZhbC5lbGVtIChpLCAwKSA9IHN1bTsNCiEgCSAgICAgIGlm IChpIDwgbnIgLSAxKQ0KISAJCXN1bSArPSBlbGVtIChpKzEsIDApOw0KICAJ ICAgIH0NCiAgCX0NCiAgICAgICAgZWxzZQ0KICAJew0KLSAJICByZXR2YWwu cmVzaXplIChuciwgbmMpOw0KICAJICBmb3IgKGludCBqID0gMDsgaiA8IG5j OyBqKyspDQogIAkgICAgew0KICAJICAgICAgQ29tcGxleCBzdW0gPSBlbGVt ICgwLCBqKTsNCi0tLSAzMjI3LDMyNTQgLS0tLQ0KICB9DQogIA0KICBDb21w bGV4TWF0cml4DQohIENvbXBsZXhNYXRyaXg6OmN1bXN1bSAoaW50IGRpbSkg Y29uc3QNCiAgew0KICAgIGludCBuciA9IHJvd3MgKCk7DQogICAgaW50IG5j ID0gY29scyAoKTsNCiEgICBDb21wbGV4TWF0cml4IHJldHZhbCAobnIsIG5j KTsNCiAgICBpZiAobnIgPiAwICYmIG5jID4gMCkNCiAgICAgIHsNCiEgICAg ICAgaWYgKCgobnIgPT0gMSkgJiYgKGRpbSA9PSAwKSkgfHwgKGRpbSA9PSAy KSkNCiAgCXsNCiAgCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsgaSsrKQ0K ICAJICAgIHsNCiEgCSAgICAgIENvbXBsZXggc3VtID0gZWxlbSAoMCwgMCk7 DQohIAkgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG5jOyBqKyspDQohIAkJ ew0KISAJCSAgcmV0dmFsLmVsZW0gKGksIGopID0gc3VtOw0KISAJCSAgaWYg KGogPCBuYyAtIDEpDQohIAkJICAgIHN1bSArPSBlbGVtIChpLCBqKzEpOw0K ISAJCX0NCiAgCSAgICB9DQogIAl9DQogICAgICAgIGVsc2UNCiAgCXsNCiAg CSAgZm9yIChpbnQgaiA9IDA7IGogPCBuYzsgaisrKQ0KICAJICAgIHsNCiAg CSAgICAgIENvbXBsZXggc3VtID0gZWxlbSAoMCwgaik7DQoqKioqKioqKioq KioqKioNCioqKiAzMjg1LDMzMTAgKioqKg0KICB9DQogIA0KICBDb21wbGV4 TWF0cml4DQohIENvbXBsZXhNYXRyaXg6OnByb2QgKHZvaWQpIGNvbnN0DQog IHsNCiAgICBpbnQgbnIgPSByb3dzICgpOw0KICAgIGludCBuYyA9IGNvbHMg KCk7DQogICAgQ29tcGxleE1hdHJpeCByZXR2YWw7DQogICAgaWYgKG5yID4g MCAmJiBuYyA+IDApDQogICAgICB7DQohICAgICAgIGlmIChuciA9PSAxKQ0K ISAJew0KISAJICByZXR2YWwucmVzaXplICgxLCAxKTsNCiEgCSAgcmV0dmFs LmVsZW0gKDAsIDApID0gMS4wOw0KISAJICBmb3IgKGludCBqID0gMDsgaiA8 IG5jOyBqKyspDQohIAkgICAgcmV0dmFsLmVsZW0gKDAsIDApICo9IGVsZW0g KDAsIGopOw0KISAJfQ0KISAgICAgICBlbHNlIGlmIChuYyA9PSAxKQ0KICAJ ew0KISAJICByZXR2YWwucmVzaXplICgxLCAxKTsNCiEgCSAgcmV0dmFsLmVs ZW0gKDAsIDApID0gMS4wOw0KICAJICBmb3IgKGludCBpID0gMDsgaSA8IG5y OyBpKyspDQohIAkgICAgcmV0dmFsLmVsZW0gKDAsIDApICo9IGVsZW0gKGks IDApOw0KICAJfQ0KICAgICAgICBlbHNlDQogIAl7DQotLS0gMzI2NSwzMjg2 IC0tLS0NCiAgfQ0KICANCiAgQ29tcGxleE1hdHJpeA0KISBDb21wbGV4TWF0 cml4Ojpwcm9kIChpbnQgZGltKSBjb25zdA0KICB7DQogICAgaW50IG5yID0g cm93cyAoKTsNCiAgICBpbnQgbmMgPSBjb2xzICgpOw0KICAgIENvbXBsZXhN YXRyaXggcmV0dmFsOw0KICAgIGlmIChuciA+IDAgJiYgbmMgPiAwKQ0KICAg ICAgew0KISAgICAgICBpZiAoKChuciA9PSAxKSAmJiAoZGltID09IDApKSB8 fCAoZGltID09IDIpKQ0KICAJew0KISAJICByZXR2YWwucmVzaXplKG5yLCAx KTsNCiAgCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsgaSsrKQ0KISAJICAg IHsNCiEgCSAgICAgIHJldHZhbC5lbGVtIChpLCAwKSA9IDEuMDsNCiEgCSAg ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmM7IGorKykNCiEgCQlyZXR2YWwu ZWxlbSAoaSwgMCkgKj0gZWxlbSAoaSwgaik7DQohIAkgICAgfQ0KICAJfQ0K ICAgICAgICBlbHNlDQogIAl7DQoqKioqKioqKioqKioqKioNCioqKiAzMzE3 LDMzNDYgKioqKg0KICAJICAgIH0NCiAgCX0NCiAgICAgIH0NCiAgICByZXR1 cm4gcmV0dmFsOw0KICB9DQogIA0KICBDb21wbGV4TWF0cml4DQohIENvbXBs ZXhNYXRyaXg6OnN1bSAodm9pZCkgY29uc3QNCiAgew0KICAgIGludCBuciA9 IHJvd3MgKCk7DQogICAgaW50IG5jID0gY29scyAoKTsNCiAgICBDb21wbGV4 TWF0cml4IHJldHZhbDsNCiAgICBpZiAobnIgPiAwICYmIG5jID4gMCkNCiAg ICAgIHsNCiEgICAgICAgaWYgKG5yID09IDEpDQohIAl7DQohIAkgIHJldHZh bC5yZXNpemUgKDEsIDEpOw0KISAJICByZXR2YWwuZWxlbSAoMCwgMCkgPSAw LjA7DQohIAkgIGZvciAoaW50IGogPSAwOyBqIDwgbmM7IGorKykNCiEgCSAg ICByZXR2YWwuZWxlbSAoMCwgMCkgKz0gZWxlbSAoMCwgaik7DQohIAl9DQoh ICAgICAgIGVsc2UgaWYgKG5jID09IDEpDQogIAl7DQohIAkgIHJldHZhbC5y ZXNpemUgKDEsIDEpOw0KISAJICByZXR2YWwuZWxlbSAoMCwgMCkgPSAwLjA7 DQogIAkgIGZvciAoaW50IGkgPSAwOyBpIDwgbnI7IGkrKykNCiEgCSAgICBy ZXR2YWwuZWxlbSAoMCwgMCkgKz0gZWxlbSAoaSwgMCk7DQogIAl9DQogICAg ICAgIGVsc2UNCiAgCXsNCi0tLSAzMjkzLDMzMjMgLS0tLQ0KICAJICAgIH0N CiAgCX0NCiAgICAgIH0NCisgICBlbHNlDQorICAgICB7DQorICAgICAgIHJl dHZhbC5yZXNpemUgKDEsIDEpOw0KKyAgICAgICByZXR2YWwuZWxlbSAoMCwg MCkgPSAxLjA7DQorICAgICB9DQogICAgcmV0dXJuIHJldHZhbDsNCiAgfQ0K ICANCiAgQ29tcGxleE1hdHJpeA0KISBDb21wbGV4TWF0cml4OjpzdW0gKGlu dCBkaW0pIGNvbnN0DQogIHsNCiAgICBpbnQgbnIgPSByb3dzICgpOw0KICAg IGludCBuYyA9IGNvbHMgKCk7DQogICAgQ29tcGxleE1hdHJpeCByZXR2YWw7 DQogICAgaWYgKG5yID4gMCAmJiBuYyA+IDApDQogICAgICB7DQohICAgICAg IGlmICgoKG5yID09IDEpICYmIChkaW0gPT0gMCkpIHx8IChkaW0gPT0gMikp DQogIAl7DQohIAkgIHJldHZhbC5yZXNpemUgKG5yLCAxKTsNCiAgCSAgZm9y IChpbnQgaSA9IDA7IGkgPCBucjsgaSsrKQ0KISAJICAgIHsNCiEgCSAgICAg IHJldHZhbC5lbGVtIChpLCAwKSA9IDAuMDsNCiEgCSAgICAgIGZvciAoaW50 IGogPSAwOyBqIDwgbmM7IGorKykNCiEgCQlyZXR2YWwuZWxlbSAoaSwgMCkg Kz0gZWxlbSAoaSwgaik7DQohIAkgICAgfQ0KICAJfQ0KICAgICAgICBlbHNl DQogIAl7DQoqKioqKioqKioqKioqKioNCioqKiAzMzUzLDMzODcgKioqKg0K ICAJICAgIH0NCiAgCX0NCiAgICAgIH0NCiAgICByZXR1cm4gcmV0dmFsOw0K ICB9DQogIA0KICBDb21wbGV4TWF0cml4DQohIENvbXBsZXhNYXRyaXg6OnN1 bXNxICh2b2lkKSBjb25zdA0KICB7DQogICAgaW50IG5yID0gcm93cyAoKTsN CiAgICBpbnQgbmMgPSBjb2xzICgpOw0KICAgIENvbXBsZXhNYXRyaXggcmV0 dmFsOw0KICAgIGlmIChuciA+IDAgJiYgbmMgPiAwKQ0KICAgICAgew0KISAg ICAgICBpZiAobnIgPT0gMSkNCiAgCXsNCiEgCSAgcmV0dmFsLnJlc2l6ZSAo MSwgMSk7DQohIAkgIHJldHZhbC5lbGVtICgwLCAwKSA9IDAuMDsNCiEgCSAg Zm9yIChpbnQgaiA9IDA7IGogPCBuYzsgaisrKQ0KISAJICAgIHsNCiEgCSAg ICAgIENvbXBsZXggZCA9IGVsZW0gKDAsIGopOw0KISAJICAgICAgcmV0dmFs LmVsZW0gKDAsIDApICs9IGQgKiBjb25qIChkKTsNCiEgCSAgICB9DQohIAl9 DQohICAgICAgIGVsc2UgaWYgKG5jID09IDEpDQohIAl7DQohIAkgIHJldHZh bC5yZXNpemUgKDEsIDEpOw0KISAJICByZXR2YWwuZWxlbSAoMCwgMCkgPSAw LjA7DQogIAkgIGZvciAoaW50IGkgPSAwOyBpIDwgbnI7IGkrKykNCiAgCSAg ICB7DQohIAkgICAgICBDb21wbGV4IGQgPSBlbGVtIChpLCAwKTsNCiEgCSAg ICAgIHJldHZhbC5lbGVtICgwLCAwKSArPSBkICogY29uaiAoZCk7DQogIAkg ICAgfQ0KICAJfQ0KICAgICAgICBlbHNlDQotLS0gMzMzMCwzMzYyIC0tLS0N CiAgCSAgICB9DQogIAl9DQogICAgICB9DQorICAgZWxzZQ0KKyAgICAgew0K KyAgICAgICByZXR2YWwucmVzaXplICgxLCAxKTsNCisgICAgICAgcmV0dmFs LmVsZW0gKDAsIDApID0gMC4wOw0KKyAgICAgfQ0KICAgIHJldHVybiByZXR2 YWw7DQogIH0NCiAgDQogIENvbXBsZXhNYXRyaXgNCiEgQ29tcGxleE1hdHJp eDo6c3Vtc3EgKGludCBkaW0pIGNvbnN0DQogIHsNCiAgICBpbnQgbnIgPSBy b3dzICgpOw0KICAgIGludCBuYyA9IGNvbHMgKCk7DQogICAgQ29tcGxleE1h dHJpeCByZXR2YWw7DQogICAgaWYgKG5yID4gMCAmJiBuYyA+IDApDQogICAg ICB7DQohICAgICAgIGlmICgoKG5yID09IDEpICYmIChkaW0gPT0gMCkpIHx8 IChkaW0gPT0gMikpDQogIAl7DQohIAkgIHJldHZhbC5yZXNpemUgKG5yLCAx KTsNCiAgCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsgaSsrKQ0KICAJICAg IHsNCiEgCSAgICAgIHJldHZhbC5lbGVtIChpLCAwKSA9IDAuMDsNCiEgCSAg ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmM7IGorKykNCiEgCQl7DQohIAkJ ICBDb21wbGV4IGQgPSBlbGVtIChpLCBqKTsNCiEgCQkgIHJldHZhbC5lbGVt IChpLCAwKSArPSBkICogY29uaiAoZCk7DQohIAkJfQ0KICAJICAgIH0NCiAg CX0NCiAgICAgICAgZWxzZQ0KKioqKioqKioqKioqKioqDQoqKiogMzM5Nywz NDAyICoqKioNCi0tLSAzMzcyLDMzODIgLS0tLQ0KICAJCX0NCiAgCSAgICB9 DQogIAl9DQorICAgICB9DQorICAgZWxzZQ0KKyAgICAgew0KKyAgICAgICBy ZXR2YWwucmVzaXplICgxLCAxKTsNCisgICAgICAgcmV0dmFsLmVsZW0gKDAs IDApID0gMC4wOw0KICAgICAgfQ0KICAgIHJldHVybiByZXR2YWw7DQogIH0N CmRpZmYgLWNyIG9jdGF2ZS0yLjAuMTQvbGlib2N0YXZlL0NNYXRyaXguaCBw YXRjaGVzL2xpYm9jdGF2ZS9DTWF0cml4LmgNCioqKiBvY3RhdmUtMi4wLjE0 L2xpYm9jdGF2ZS9DTWF0cml4LmgJVGh1IEZlYiAxMyAxOToyNzowOCAxOTk3 DQotLS0gcGF0Y2hlcy9saWJvY3RhdmUvQ01hdHJpeC5oCVdlZCBKdW4gIDIg MTM6MDY6MTAgMTk5OQ0KKioqKioqKioqKioqKioqDQoqKiogMzMwLDM0MCAq KioqDQogICAgTWF0cml4IGFsbCAodm9pZCkgY29uc3Q7DQogICAgTWF0cml4 IGFueSAodm9pZCkgY29uc3Q7DQogIA0KISAgIENvbXBsZXhNYXRyaXggY3Vt cHJvZCAodm9pZCkgY29uc3Q7DQohICAgQ29tcGxleE1hdHJpeCBjdW1zdW0g KHZvaWQpIGNvbnN0Ow0KISAgIENvbXBsZXhNYXRyaXggcHJvZCAodm9pZCkg Y29uc3Q7DQohICAgQ29tcGxleE1hdHJpeCBzdW0gKHZvaWQpIGNvbnN0Ow0K ISAgIENvbXBsZXhNYXRyaXggc3Vtc3EgKHZvaWQpIGNvbnN0Ow0KICANCiAg ICBDb21wbGV4Q29sdW1uVmVjdG9yIGRpYWcgKHZvaWQpIGNvbnN0Ow0KICAg IENvbXBsZXhDb2x1bW5WZWN0b3IgZGlhZyAoaW50IGspIGNvbnN0Ow0KLS0t IDMzMCwzNDAgLS0tLQ0KICAgIE1hdHJpeCBhbGwgKHZvaWQpIGNvbnN0Ow0K ICAgIE1hdHJpeCBhbnkgKHZvaWQpIGNvbnN0Ow0KICANCiEgICBDb21wbGV4 TWF0cml4IGN1bXByb2QgKGludCBkaW0gPSAwKSBjb25zdDsNCiEgICBDb21w bGV4TWF0cml4IGN1bXN1bSAoaW50IGRpbSA9IDApIGNvbnN0Ow0KISAgIENv bXBsZXhNYXRyaXggcHJvZCAoaW50IGRpbSA9IDApIGNvbnN0Ow0KISAgIENv bXBsZXhNYXRyaXggc3VtIChpbnQgZGltID0gMCkgY29uc3Q7DQohICAgQ29t cGxleE1hdHJpeCBzdW1zcSAoaW50IGRpbSA9IDApIGNvbnN0Ow0KICANCiAg ICBDb21wbGV4Q29sdW1uVmVjdG9yIGRpYWcgKHZvaWQpIGNvbnN0Ow0KICAg IENvbXBsZXhDb2x1bW5WZWN0b3IgZGlhZyAoaW50IGspIGNvbnN0Ow0KZGlm ZiAtY3Igb2N0YXZlLTIuMC4xNC9saWJvY3RhdmUvZE1hdHJpeC5jYyBwYXRj aGVzL2xpYm9jdGF2ZS9kTWF0cml4LmNjDQoqKiogb2N0YXZlLTIuMC4xNC9s aWJvY3RhdmUvZE1hdHJpeC5jYwlTYXQgRmViIDIwIDA3OjU3OjE0IDE5OTkN Ci0tLSBwYXRjaGVzL2xpYm9jdGF2ZS9kTWF0cml4LmNjCVdlZCBKdW4gIDIg MTM6MDY6MDYgMTk5OQ0KKioqKioqKioqKioqKioqDQoqKiogMjA4MiwyMTI2 ICoqKioNCiAgfQ0KICANCiAgTWF0cml4DQohIE1hdHJpeDo6Y3VtcHJvZCAo dm9pZCkgY29uc3QNCiAgew0KLSAgIE1hdHJpeCByZXR2YWw7DQotIA0KICAg IGludCBuciA9IHJvd3MgKCk7DQogICAgaW50IG5jID0gY29scyAoKTsNCiAg DQohICAgaWYgKG5yID09IDEpDQohICAgICB7DQohICAgICAgIHJldHZhbC5y ZXNpemUgKDEsIG5jKTsNCiEgICAgICAgaWYgKG5jID4gMCkNCiEgCXsNCiEg CSAgZG91YmxlIHByb2QgPSBlbGVtICgwLCAwKTsNCiEgCSAgZm9yIChpbnQg aiA9IDA7IGogPCBuYzsgaisrKQ0KISAJICAgIHsNCiEgCSAgICAgIHJldHZh bC5lbGVtICgwLCBqKSA9IHByb2Q7DQohIAkgICAgICBpZiAoaiA8IG5jIC0g MSkNCiEgCQlwcm9kICo9IGVsZW0gKDAsIGorMSk7DQohIAkgICAgfQ0KISAJ fQ0KISAgICAgfQ0KISAgIGVsc2UgaWYgKG5jID09IDEpDQogICAgICB7DQoh ICAgICAgIHJldHZhbC5yZXNpemUgKG5yLCAxKTsNCiEgICAgICAgaWYgKG5y ID4gMCkNCiAgCXsNCi0gCSAgZG91YmxlIHByb2QgPSBlbGVtICgwLCAwKTsN CiAgCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsgaSsrKQ0KICAJICAgIHsN CiEgCSAgICAgIHJldHZhbC5lbGVtIChpLCAwKSA9IHByb2Q7DQohIAkgICAg ICBpZiAoaSA8IG5yIC0gMSkNCiEgCQlwcm9kICo9IGVsZW0gKGkrMSwgMCk7 DQogIAkgICAgfQ0KICAJfQ0KISAgICAgfQ0KISAgIGVsc2UNCiEgICAgIHsN CiEgICAgICAgcmV0dmFsLnJlc2l6ZSAobnIsIG5jKTsNCiEgICAgICAgaWYg KG5yID4gMCAmJiBuYyA+IDApDQogIAl7DQogIAkgIGZvciAoaW50IGogPSAw OyBqIDwgbmM7IGorKykNCiAgCSAgICB7DQotLS0gMjA4MiwyMTA5IC0tLS0N CiAgfQ0KICANCiAgTWF0cml4DQohIE1hdHJpeDo6Y3VtcHJvZCAoaW50IGRp bSkgY29uc3QNCiAgew0KICAgIGludCBuciA9IHJvd3MgKCk7DQogICAgaW50 IG5jID0gY29scyAoKTsNCisgICBNYXRyaXggcmV0dmFsIChuciwgbmMpOw0K ICANCiEgICBpZiAobnIgPiAwICYmIG5jID4wKQ0KICAgICAgew0KISAgICAg ICBpZiAoKChuciA9PSAxKSAmJiAoZGltID09IDApKSB8fCAoZGltID09IDIp KQ0KICAJew0KICAJICBmb3IgKGludCBpID0gMDsgaSA8IG5yOyBpKyspDQog IAkgICAgew0KISAJICAgICAgZG91YmxlIHByb2QgPSBlbGVtIChpLCAwKTsN CiEgCSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmM7IGorKykNCiEgCQl7 DQohIAkJICByZXR2YWwuZWxlbSAoMCwgaikgPSBwcm9kOw0KISAJCSAgaWYg KGogPCBuYyAtIDEpDQohIAkJICAgIHByb2QgKj0gZWxlbSAoaSwgaisxKTsN CiEgCQl9DQogIAkgICAgfQ0KICAJfQ0KISAgICAgICBlbHNlDQogIAl7DQog IAkgIGZvciAoaW50IGogPSAwOyBqIDwgbmM7IGorKykNCiAgCSAgICB7DQoq KioqKioqKioqKioqKioNCioqKiAyMTM4LDIxODIgKioqKg0KICB9DQogIA0K ICBNYXRyaXgNCiEgTWF0cml4OjpjdW1zdW0gKHZvaWQpIGNvbnN0DQogIHsN Ci0gICBNYXRyaXggcmV0dmFsOw0KLSANCiAgICBpbnQgbnIgPSByb3dzICgp Ow0KICAgIGludCBuYyA9IGNvbHMgKCk7DQogIA0KISAgIGlmIChuciA9PSAx KQ0KISAgICAgew0KISAgICAgICByZXR2YWwucmVzaXplICgxLCBuYyk7DQoh ICAgICAgIGlmIChuYyA+IDApDQohIAl7DQohIAkgIGRvdWJsZSBzdW0gPSBl bGVtICgwLCAwKTsNCiEgCSAgZm9yIChpbnQgaiA9IDA7IGogPCBuYzsgaisr KQ0KISAJICAgIHsNCiEgCSAgICAgIHJldHZhbC5lbGVtICgwLCBqKSA9IHN1 bTsNCiEgCSAgICAgIGlmIChqIDwgbmMgLSAxKQ0KISAJCXN1bSArPSBlbGVt ICgwLCBqKzEpOw0KISAJICAgIH0NCiEgCX0NCiEgICAgIH0NCiEgICBlbHNl IGlmIChuYyA9PSAxKQ0KICAgICAgew0KISAgICAgICByZXR2YWwucmVzaXpl IChuciwgMSk7DQohICAgICAgIGlmIChuciA+IDApDQogIAl7DQotIAkgIGRv dWJsZSBzdW0gPSBlbGVtICgwLCAwKTsNCiAgCSAgZm9yIChpbnQgaSA9IDA7 IGkgPCBucjsgaSsrKQ0KICAJICAgIHsNCiEgCSAgICAgIHJldHZhbC5lbGVt IChpLCAwKSA9IHN1bTsNCiEgCSAgICAgIGlmIChpIDwgbnIgLSAxKQ0KISAJ CXN1bSArPSBlbGVtIChpKzEsIDApOw0KICAJICAgIH0NCiAgCX0NCiEgICAg IH0NCiEgICBlbHNlDQohICAgICB7DQohICAgICAgIHJldHZhbC5yZXNpemUg KG5yLCBuYyk7DQohICAgICAgIGlmIChuciA+IDAgJiYgbmMgPiAwKQ0KICAJ ew0KICAJICBmb3IgKGludCBqID0gMDsgaiA8IG5jOyBqKyspDQogIAkgICAg ew0KLS0tIDIxMjEsMjE0OCAtLS0tDQogIH0NCiAgDQogIE1hdHJpeA0KISBN YXRyaXg6OmN1bXN1bSAoaW50IGRpbSkgY29uc3QNCiAgew0KICAgIGludCBu ciA9IHJvd3MgKCk7DQogICAgaW50IG5jID0gY29scyAoKTsNCisgICBNYXRy aXggcmV0dmFsKG5yLCBuYyk7DQogIA0KISAgIGlmIChuciA+IDAgJiYgbmMg PiAwKQ0KICAgICAgew0KISAgICAgICBpZiAoKChuciA9PSAxKSAmJiAoZGlt ID09IDApKSB8fCAoZGltID09IDIpKQ0KICAJew0KICAJICBmb3IgKGludCBp ID0gMDsgaSA8IG5yOyBpKyspDQogIAkgICAgew0KISAJICAgICAgZG91Ymxl IHN1bSA9IGVsZW0gKGksIDApOw0KISAJICAgICAgZm9yIChpbnQgaiA9IDA7 IGogPCBuYzsgaisrKQ0KISAJCXsNCiEgCQkgIHJldHZhbC5lbGVtIChpLCBq KSA9IHN1bTsNCiEgCQkgIGlmIChqIDwgbmMgLSAxKQ0KISAJCSAgICBzdW0g Kz0gZWxlbSAoaSwgaisxKTsNCiEgCQl9DQogIAkgICAgfQ0KICAJfQ0KISAg ICAgICBlbHNlDQogIAl7DQogIAkgIGZvciAoaW50IGogPSAwOyBqIDwgbmM7 IGorKykNCiAgCSAgICB7DQoqKioqKioqKioqKioqKioNCioqKiAyMTk0LDIz MjUgKioqKg0KICB9DQogIA0KICBNYXRyaXgNCiEgTWF0cml4Ojpwcm9kICh2 b2lkKSBjb25zdA0KICB7DQotICAgTWF0cml4IHJldHZhbDsNCi0gDQogICAg aW50IG5yID0gcm93cyAoKTsNCiAgICBpbnQgbmMgPSBjb2xzICgpOw0KICAN CiEgICBpZiAobnIgPT0gMSkNCiEgICAgIHsNCiEgICAgICAgcmV0dmFsLnJl c2l6ZSAoMSwgMSk7DQohICAgICAgIHJldHZhbC5lbGVtICgwLCAwKSA9IDEu MDsNCiEgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuYzsgaisrKQ0KISAJ cmV0dmFsLmVsZW0gKDAsIDApICo9IGVsZW0gKDAsIGopOw0KISAgICAgfQ0K ISAgIGVsc2UgaWYgKG5jID09IDEpDQohICAgICB7DQohICAgICAgIHJldHZh bC5yZXNpemUgKDEsIDEpOw0KISAgICAgICByZXR2YWwuZWxlbSAoMCwgMCkg PSAxLjA7DQohICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnI7IGkrKykN CiEgCXJldHZhbC5lbGVtICgwLCAwKSAqPSBlbGVtIChpLCAwKTsNCiEgICAg IH0NCiEgICBlbHNlDQogICAgICB7DQohICAgICAgIGlmIChuYyA9PSAwKQ0K ICAJew0KISAJICByZXR2YWwucmVzaXplICgxLCAxKTsNCiEgCSAgcmV0dmFs LmVsZW0gKDAsIDApID0gMS4wOw0KICAJfQ0KICAgICAgICBlbHNlDQotIAly ZXR2YWwucmVzaXplICgxLCBuYyk7DQotIA0KLSAgICAgICBmb3IgKGludCBq ID0gMDsgaiA8IG5jOyBqKyspDQogIAl7DQohIAkgIHJldHZhbC5lbGVtICgw LCBqKSA9IDEuMDsNCiEgCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsgaSsr KQ0KISAJICAgIHJldHZhbC5lbGVtICgwLCBqKSAqPSBlbGVtIChpLCBqKTsN CiAgCX0NCiAgICAgIH0NCiAgICByZXR1cm4gcmV0dmFsOw0KICB9DQogIA0K ICBNYXRyaXgNCiEgTWF0cml4OjpzdW0gKHZvaWQpIGNvbnN0DQogIHsNCi0g ICBNYXRyaXggcmV0dmFsOw0KLSANCiAgICBpbnQgbnIgPSByb3dzICgpOw0K ICAgIGludCBuYyA9IGNvbHMgKCk7DQogIA0KISAgIGlmIChuciA9PSAxKQ0K ISAgICAgew0KISAgICAgICByZXR2YWwucmVzaXplICgxLCAxKTsNCiEgICAg ICAgcmV0dmFsLmVsZW0gKDAsIDApID0gMC4wOw0KISAgICAgICBmb3IgKGlu dCBqID0gMDsgaiA8IG5jOyBqKyspDQohIAlyZXR2YWwuZWxlbSAoMCwgMCkg Kz0gZWxlbSAoMCwgaik7DQohICAgICB9DQohICAgZWxzZSBpZiAobmMgPT0g MSkNCiAgICAgIHsNCiEgICAgICAgcmV0dmFsLnJlc2l6ZSAoMSwgMSk7DQoh ICAgICAgIHJldHZhbC5lbGVtICgwLCAwKSA9IDAuMDsNCiEgICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBucjsgaSsrKQ0KISAJcmV0dmFsLmVsZW0gKDAs IDApICs9IGVsZW0gKGksIDApOw0KISAgICAgfQ0KISAgIGVsc2UNCiEgICAg IHsNCiEgICAgICAgaWYgKG5jID09IDApDQogIAl7DQohIAkgIHJldHZhbC5y ZXNpemUgKDEsIDEpOw0KISAJICByZXR2YWwuZWxlbSAoMCwgMCkgPSAwLjA7 DQogIAl9DQogICAgICAgIGVsc2UNCi0gCXJldHZhbC5yZXNpemUgKDEsIG5j KTsNCi0gDQotICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmM7IGorKykN CiAgCXsNCiEgCSAgcmV0dmFsLmVsZW0gKDAsIGopID0gMC4wOw0KISAJICBm b3IgKGludCBpID0gMDsgaSA8IG5yOyBpKyspDQohIAkgICAgcmV0dmFsLmVs ZW0gKDAsIGopICs9IGVsZW0gKGksIGopOw0KICAJfQ0KICAgICAgfQ0KICAg IHJldHVybiByZXR2YWw7DQogIH0NCiAgDQogIE1hdHJpeA0KISBNYXRyaXg6 OnN1bXNxICh2b2lkKSBjb25zdA0KICB7DQotICAgTWF0cml4IHJldHZhbDsN Ci0gDQogICAgaW50IG5yID0gcm93cyAoKTsNCiAgICBpbnQgbmMgPSBjb2xz ICgpOw0KICANCiEgICBpZiAobnIgPT0gMSkNCiAgICAgIHsNCiEgICAgICAg cmV0dmFsLnJlc2l6ZSAoMSwgMSk7DQohICAgICAgIHJldHZhbC5lbGVtICgw LCAwKSA9IDAuMDsNCiEgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuYzsg aisrKQ0KICAJew0KISAJICBkb3VibGUgZCA9IGVsZW0gKDAsIGopOw0KISAJ ICByZXR2YWwuZWxlbSAoMCwgMCkgKz0gZCAqIGQ7DQogIAl9DQohICAgICB9 DQohICAgZWxzZSBpZiAobmMgPT0gMSkNCiEgICAgIHsNCiEgICAgICAgcmV0 dmFsLnJlc2l6ZSAoMSwgMSk7DQohICAgICAgIHJldHZhbC5lbGVtICgwLCAw KSA9IDAuMDsNCiEgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsgaSsr KQ0KICAJew0KISAJICBkb3VibGUgZCA9IGVsZW0gKGksIDApOw0KISAJICBy ZXR2YWwuZWxlbSAoMCwgMCkgKz0gZCAqIGQ7DQogIAl9DQogICAgICB9DQog ICAgZWxzZQ0KICAgICAgew0KISAgICAgICByZXR2YWwucmVzaXplICgxLCBu Yyk7DQohICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmM7IGorKykNCiEg CXsNCiEgCSAgcmV0dmFsLmVsZW0gKDAsIGopID0gMC4wOw0KISAJICBmb3Ig KGludCBpID0gMDsgaSA8IG5yOyBpKyspDQohIAkgICAgew0KISAJICAgICAg ZG91YmxlIGQgPSBlbGVtIChpLCBqKTsNCiEgCSAgICAgIHJldHZhbC5lbGVt ICgwLCBqKSArPSBkICogZDsNCiEgCSAgICB9DQohIAl9DQogICAgICB9DQog ICAgcmV0dXJuIHJldHZhbDsNCiAgfQ0KICANCiAgTWF0cml4DQogIE1hdHJp eDo6YWJzICh2b2lkKSBjb25zdA0KLS0tIDIxNjAsMjI4NCAtLS0tDQogIH0N CiAgDQogIE1hdHJpeA0KISBNYXRyaXg6OnByb2QgKGludCBkaW0pIGNvbnN0 DQogIHsNCiAgICBpbnQgbnIgPSByb3dzICgpOw0KICAgIGludCBuYyA9IGNv bHMgKCk7DQorICAgTWF0cml4IHJldHZhbDsNCiAgDQohICAgaWYgKG5yID4g MCAmJiBuYyA+IDApDQogICAgICB7DQohICAgICAgIGlmICgoKG5yID09IDEp ICYmIChkaW0gPT0gMCkpIHx8IChkaW0gPT0gMikpDQogIAl7DQohIAkgIHJl dHZhbC5yZXNpemUobnIsIDEpOw0KISAJICBmb3IgKGludCBpID0gMDsgaSA8 IG5yOyBpKyspDQohIAkgICAgew0KISAJICAgICAgcmV0dmFsLmVsZW0gKGks IDApID0gMS4wOw0KISAJICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuYzsg aisrKQ0KISAJCXJldHZhbC5lbGVtIChpLCAwKSAqPSBlbGVtIChpLCBqKTsN CiEgCSAgICB9DQogIAl9DQogICAgICAgIGVsc2UNCiAgCXsNCiEgCSAgcmV0 dmFsLnJlc2l6ZSAoMSwgbmMpOw0KISAJICBmb3IgKGludCBqID0gMDsgaiA8 IG5jOyBqKyspDQohIAkgICAgew0KISAJICAgICAgcmV0dmFsLmVsZW0gKDAs IGopID0gMS4wOw0KISAJICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucjsg aSsrKQ0KISAJCXJldHZhbC5lbGVtICgwLCBqKSAqPSBlbGVtIChpLCBqKTsN CiEgCSAgICB9DQogIAl9DQogICAgICB9DQorICAgZWxzZQ0KKyAgICAgew0K KyAgICAgICByZXR2YWwucmVzaXplICgxLCAxKTsNCisgICAgICAgcmV0dmFs LmVsZW0gKDAsIDApID0gMS4wOw0KKyAgICAgfQ0KICAgIHJldHVybiByZXR2 YWw7DQogIH0NCiAgDQogIE1hdHJpeA0KISBNYXRyaXg6OnN1bSAoaW50IGRp bSkgY29uc3QNCiAgew0KICAgIGludCBuciA9IHJvd3MgKCk7DQogICAgaW50 IG5jID0gY29scyAoKTsNCisgICBNYXRyaXggcmV0dmFsOw0KICANCiEgICBp ZiAobnIgPiAwICYmIG5jID4gMCkNCiAgICAgIHsNCiEgICAgICAgaWYgKCgo bnIgPT0gMSkgJiYgKGRpbSA9PSAwKSkgfHwgKGRpbSA9PSAyKSkNCiAgCXsN CiEgCSAgcmV0dmFsLnJlc2l6ZSAobnIsIDEpOw0KISAJICBmb3IgKGludCBp ID0gMDsgaSA8IG5yOyBpKyspDQohIAkgICAgew0KISAJICAgICAgcmV0dmFs LmVsZW0gKGksIDApID0gMC4wOw0KISAJICAgICAgZm9yIChpbnQgaiA9IDA7 IGogPCBuYzsgaisrKQ0KISAJCXJldHZhbC5lbGVtIChpLCAwKSArPSBlbGVt IChpLCBqKTsNCiEgCSAgICB9DQogIAl9DQogICAgICAgIGVsc2UNCiAgCXsN CiEgCSAgcmV0dmFsLnJlc2l6ZSAoMSwgbmMpOw0KISAJICBmb3IgKGludCBq ID0gMDsgaiA8IG5jOyBqKyspDQohIAkgICAgew0KISAJICAgICAgcmV0dmFs LmVsZW0gKDAsIGopID0gMC4wOw0KISAJICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBucjsgaSsrKQ0KISAJCXJldHZhbC5lbGVtICgwLCBqKSArPSBlbGVt IChpLCBqKTsNCiEgCSAgICB9DQogIAl9DQogICAgICB9DQorICAgZWxzZQ0K KyAgICAgew0KKyAgICAgICByZXR2YWwucmVzaXplICgxLCAxKTsNCisgICAg ICAgcmV0dmFsLmVsZW0gKDAsIDApID0gMC4wOw0KKyAgICAgfQ0KICAgIHJl dHVybiByZXR2YWw7DQogIH0NCiAgDQogIE1hdHJpeA0KISBNYXRyaXg6OnN1 bXNxIChpbnQgZGltKSBjb25zdA0KICB7DQogICAgaW50IG5yID0gcm93cyAo KTsNCiAgICBpbnQgbmMgPSBjb2xzICgpOw0KKyAgIE1hdHJpeCByZXR2YWw7 DQogIA0KISAgIGlmIChuciA+IDAgJiYgbmMgPiAwKQ0KICAgICAgew0KISAg ICAgICBpZiAoKChuciA9PSAxKSAmJiAoZGltID09IDApKSB8fCAoZGltID09 IDIpKQ0KICAJew0KISAJICByZXR2YWwucmVzaXplIChuciwgMSk7DQohIAkg IGZvciAoaW50IGkgPSAwOyBpIDwgbnI7IGkrKykNCiEgCSAgICB7DQohIAkg ICAgICByZXR2YWwuZWxlbSAoaSwgMCkgPSAwLjA7DQohIAkgICAgICBmb3Ig KGludCBqID0gMDsgaiA8IG5jOyBqKyspDQohIAkJew0KISAJCSAgZG91Ymxl IGQgPSBlbGVtIChpLCBqKTsNCiEgCQkgIHJldHZhbC5lbGVtIChpLCAwKSAr PSBkICogZDsNCiEgCQl9DQohIAkgICAgfQ0KICAJfQ0KISAgICAgICBlbHNl DQogIAl7DQohIAkgIHJldHZhbC5yZXNpemUgKDEsIG5jKTsNCiEgCSAgZm9y IChpbnQgaiA9IDA7IGogPCBuYzsgaisrKQ0KISAJICAgIHsNCiEgCSAgICAg IHJldHZhbC5lbGVtICgwLCBqKSA9IDAuMDsNCiEgCSAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgbnI7IGkrKykNCiEgCQl7DQohIAkJICBkb3VibGUgZCA9 IGVsZW0gKGksIGopOw0KISAJCSAgcmV0dmFsLmVsZW0gKDAsIGopICs9IGQg KiBkOw0KISAJCX0NCiEgCSAgICB9DQogIAl9DQogICAgICB9DQogICAgZWxz ZQ0KICAgICAgew0KISAgICAgICByZXR2YWwucmVzaXplICgxLCAxKTsNCiEg ICAgICAgcmV0dmFsLmVsZW0gKDAsIDApID0gMC4wOw0KICAgICAgfQ0KICAg IHJldHVybiByZXR2YWw7DQogIH0NCisgDQogIA0KICBNYXRyaXgNCiAgTWF0 cml4OjphYnMgKHZvaWQpIGNvbnN0DQpkaWZmIC1jciBvY3RhdmUtMi4wLjE0 L2xpYm9jdGF2ZS9kTWF0cml4LmggcGF0Y2hlcy9saWJvY3RhdmUvZE1hdHJp eC5oDQoqKiogb2N0YXZlLTIuMC4xNC9saWJvY3RhdmUvZE1hdHJpeC5oCVRo dSBGZWIgMTMgMTk6MjY6NDQgMTk5Nw0KLS0tIHBhdGNoZXMvbGlib2N0YXZl L2RNYXRyaXguaAlXZWQgSnVuICAyIDEzOjA2OjExIDE5OTkNCioqKioqKioq KioqKioqKg0KKioqIDIxNiwyMjcgKioqKg0KICAgIE1hdHJpeCBhbGwgKHZv aWQpIGNvbnN0Ow0KICAgIE1hdHJpeCBhbnkgKHZvaWQpIGNvbnN0Ow0KICAN CiEgICBNYXRyaXggY3VtcHJvZCAodm9pZCkgY29uc3Q7DQohICAgTWF0cml4 IGN1bXN1bSAodm9pZCkgY29uc3Q7DQohICAgTWF0cml4IHByb2QgKHZvaWQp IGNvbnN0Ow0KISAgIE1hdHJpeCBzdW0gKHZvaWQpIGNvbnN0Ow0KISAgIE1h dHJpeCBzdW1zcSAodm9pZCkgY29uc3Q7DQogICAgTWF0cml4IGFicyAodm9p ZCkgY29uc3Q7DQogIA0KICAgIENvbHVtblZlY3RvciBkaWFnICh2b2lkKSBj b25zdDsNCiAgICBDb2x1bW5WZWN0b3IgZGlhZyAoaW50IGspIGNvbnN0Ow0K LS0tIDIxNiwyMjggLS0tLQ0KICAgIE1hdHJpeCBhbGwgKHZvaWQpIGNvbnN0 Ow0KICAgIE1hdHJpeCBhbnkgKHZvaWQpIGNvbnN0Ow0KICANCiEgICBNYXRy aXggY3VtcHJvZCAoaW50IGRpbSA9IDApIGNvbnN0OyAvL29wdGlvbmFsIGRp bWVuc2lvbiBhcmd1bWVudA0KISAgIE1hdHJpeCBjdW1zdW0gKGludCBkaW0g PSAwKSBjb25zdDsNCiEgICBNYXRyaXggcHJvZCAoaW50IGRpbSA9IDApIGNv bnN0Ow0KISAgIE1hdHJpeCBzdW0gKGludCBkaW0gPSAwKSBjb25zdDsNCiEg ICBNYXRyaXggc3Vtc3EgKGludCBkaW0gPSAwKSBjb25zdDsNCiAgICBNYXRy aXggYWJzICh2b2lkKSBjb25zdDsNCisgDQogIA0KICAgIENvbHVtblZlY3Rv ciBkaWFnICh2b2lkKSBjb25zdDsNCiAgICBDb2x1bW5WZWN0b3IgZGlhZyAo aW50IGspIGNvbnN0Ow0KZGlmZiAtY3Igb2N0YXZlLTIuMC4xNC9zcmMvZGF0 YS5jYyBwYXRjaGVzL3NyYy9kYXRhLmNjDQoqKiogb2N0YXZlLTIuMC4xNC9z cmMvZGF0YS5jYwlUaHUgTWFyIDE4IDE4OjA4OjUzIDE5OTkNCi0tLSBwYXRj aGVzL3NyYy9kYXRhLmNjCVdlZCBKdW4gIDIgMTM6MDY6MDQgMTk5OQ0KKioq KioqKioqKioqKioqDQoqKiogMjM1LDI2MyAqKioqDQogIH0NCiAgDQogIERF RlVOIChjdW1wcm9kLCBhcmdzLCAsDQohICAgImN1bXByb2QgKFgpOiBjdW11 bGF0aXZlIHByb2R1Y3RzIikNCiAgew0KICAgIG9jdGF2ZV92YWx1ZV9saXN0 IHJldHZhbDsNCiAgDQogICAgaW50IG5hcmdpbiA9IGFyZ3MubGVuZ3RoICgp Ow0KICANCiEgICBpZiAobmFyZ2luID09IDEpDQogICAgICB7DQogICAgICAg IG9jdGF2ZV92YWx1ZSBhcmcgPSBhcmdzKDApOw0KICANCiAgICAgICAgaWYg KGFyZy5pc19yZWFsX3R5cGUgKCkpDQogIAl7DQogIAkgIE1hdHJpeCB0bXAg PSBhcmcubWF0cml4X3ZhbHVlICgpOw0KICANCiAgCSAgaWYgKCEgZXJyb3Jf c3RhdGUpDQohIAkgICAgcmV0dmFsKDApID0gdG1wLmN1bXByb2QgKCk7DQog IAl9DQogICAgICAgIGVsc2UgaWYgKGFyZy5pc19jb21wbGV4X3R5cGUgKCkp DQogIAl7DQogIAkgIENvbXBsZXhNYXRyaXggdG1wID0gYXJnLmNvbXBsZXhf bWF0cml4X3ZhbHVlICgpOw0KICANCiAgCSAgaWYgKCEgZXJyb3Jfc3RhdGUp DQohIAkgICAgcmV0dmFsKDApID0gdG1wLmN1bXByb2QgKCk7DQogIAl9DQog ICAgICAgIGVsc2UNCiAgCXsNCi0tLSAyMzUsMjY5IC0tLS0NCiAgfQ0KICAN CiAgREVGVU4gKGN1bXByb2QsIGFyZ3MsICwNCiEgICAiY3VtcHJvZCAoWCk6 IGN1bXVsYXRpdmUgcHJvZHVjdHNcbiINCiEgICAiY3VtcHJvZCAoWCwgRElN KTogY3VtdWxhdGl2ZSBwcm9kdWN0cyBhbG9uZyBkaW1lbnNpb24gRElNIikN CiAgew0KICAgIG9jdGF2ZV92YWx1ZV9saXN0IHJldHZhbDsNCiAgDQogICAg aW50IG5hcmdpbiA9IGFyZ3MubGVuZ3RoICgpOw0KICANCiEgICBpZiAoKG5h cmdpbiA9PSAxKSB8fCAobmFyZ2luID09IDIpKQ0KICAgICAgew0KICAgICAg ICBvY3RhdmVfdmFsdWUgYXJnID0gYXJncygwKTsNCisgICAgICAgaW50IGRp bTsNCisgICAgICAgaWYgKG5hcmdpbiA9PSAxKQ0KKyAJZGltID0gMDsNCisg ICAgICAgZWxzZQ0KKyAJZGltID0gKGludCkgYXJncygxKS5kb3VibGVfdmFs dWUgKCk7DQogIA0KICAgICAgICBpZiAoYXJnLmlzX3JlYWxfdHlwZSAoKSkN CiAgCXsNCiAgCSAgTWF0cml4IHRtcCA9IGFyZy5tYXRyaXhfdmFsdWUgKCk7 DQogIA0KICAJICBpZiAoISBlcnJvcl9zdGF0ZSkNCiEgCSAgICByZXR2YWwo MCkgPSB0bXAuY3VtcHJvZCAoZGltKTsNCiAgCX0NCiAgICAgICAgZWxzZSBp ZiAoYXJnLmlzX2NvbXBsZXhfdHlwZSAoKSkNCiAgCXsNCiAgCSAgQ29tcGxl eE1hdHJpeCB0bXAgPSBhcmcuY29tcGxleF9tYXRyaXhfdmFsdWUgKCk7DQog IA0KICAJICBpZiAoISBlcnJvcl9zdGF0ZSkNCiEgCSAgICByZXR2YWwoMCkg PSB0bXAuY3VtcHJvZCAoZGltKTsNCiAgCX0NCiAgICAgICAgZWxzZQ0KICAJ ew0KKioqKioqKioqKioqKioqDQoqKiogMjcyLDMwMCAqKioqDQogIH0NCiAg DQogIERFRlVOIChjdW1zdW0sIGFyZ3MsICwNCiEgICAiY3Vtc3VtIChYKTog Y3VtdWxhdGl2ZSBzdW1zIikNCiAgew0KICAgIG9jdGF2ZV92YWx1ZV9saXN0 IHJldHZhbDsNCiAgDQogICAgaW50IG5hcmdpbiA9IGFyZ3MubGVuZ3RoICgp Ow0KICANCiEgICBpZiAobmFyZ2luID09IDEpDQogICAgICB7DQogICAgICAg IG9jdGF2ZV92YWx1ZSBhcmcgPSBhcmdzKDApOw0KICANCiAgICAgICAgaWYg KGFyZy5pc19yZWFsX3R5cGUgKCkpDQogIAl7DQogIAkgIE1hdHJpeCB0bXAg PSBhcmcubWF0cml4X3ZhbHVlICgpOw0KICANCiAgCSAgaWYgKCEgZXJyb3Jf c3RhdGUpDQohIAkgICAgcmV0dmFsKDApID0gdG1wLmN1bXN1bSAoKTsNCiAg CX0NCiAgICAgICAgZWxzZSBpZiAoYXJnLmlzX2NvbXBsZXhfdHlwZSAoKSkN CiAgCXsNCiAgCSAgQ29tcGxleE1hdHJpeCB0bXAgPSBhcmcuY29tcGxleF9t YXRyaXhfdmFsdWUgKCk7DQogIA0KICAJICBpZiAoISBlcnJvcl9zdGF0ZSkN CiEgCSAgICByZXR2YWwoMCkgPSB0bXAuY3Vtc3VtICgpOw0KICAJfQ0KICAg ICAgICBlbHNlDQogIAl7DQotLS0gMjc4LDMxMiAtLS0tDQogIH0NCiAgDQog IERFRlVOIChjdW1zdW0sIGFyZ3MsICwNCiEgICAiY3Vtc3VtIChYKTogY3Vt dWxhdGl2ZSBzdW1zXG4iDQohICAgImN1bXN1bSAoWCwgRElNKTogY3VtdWxh dGl2ZSBzdW1zIGFsb25nIGRpbWVuc2lvbiBESU0iKQ0KICB7DQogICAgb2N0 YXZlX3ZhbHVlX2xpc3QgcmV0dmFsOw0KICANCiAgICBpbnQgbmFyZ2luID0g YXJncy5sZW5ndGggKCk7DQogIA0KISAgIGlmICgobmFyZ2luID09IDEpIHx8 IChuYXJnaW4gPT0gMikpDQogICAgICB7DQogICAgICAgIG9jdGF2ZV92YWx1 ZSBhcmcgPSBhcmdzKDApOw0KKyAgICAgICBpbnQgZGltOw0KKyAgICAgICBp ZiAobmFyZ2luID09IDEpDQorIAlkaW0gPSAwOw0KKyAgICAgICBlbHNlDQor IAlkaW0gPSAoaW50KSBhcmdzKDEpLmRvdWJsZV92YWx1ZSAoKTsNCiAgDQog ICAgICAgIGlmIChhcmcuaXNfcmVhbF90eXBlICgpKQ0KICAJew0KICAJICBN YXRyaXggdG1wID0gYXJnLm1hdHJpeF92YWx1ZSAoKTsNCiAgDQogIAkgIGlm ICghIGVycm9yX3N0YXRlKQ0KISAJICAgIHJldHZhbCgwKSA9IHRtcC5jdW1z dW0gKGRpbSk7DQogIAl9DQogICAgICAgIGVsc2UgaWYgKGFyZy5pc19jb21w bGV4X3R5cGUgKCkpDQogIAl7DQogIAkgIENvbXBsZXhNYXRyaXggdG1wID0g YXJnLmNvbXBsZXhfbWF0cml4X3ZhbHVlICgpOw0KICANCiAgCSAgaWYgKCEg ZXJyb3Jfc3RhdGUpDQohIAkgICAgcmV0dmFsKDApID0gdG1wLmN1bXN1bSAo ZGltKTsNCiAgCX0NCiAgICAgICAgZWxzZQ0KICAJew0KKioqKioqKioqKioq KioqDQoqKiogNTcxLDU5OSAqKioqDQogIH0NCiAgDQogIERFRlVOIChwcm9k LCBhcmdzLCAsDQohICAgInByb2QgKFgpOiBwcm9kdWN0cyIpDQogIHsNCiAg ICBvY3RhdmVfdmFsdWVfbGlzdCByZXR2YWw7DQogIA0KICAgIGludCBuYXJn aW4gPSBhcmdzLmxlbmd0aCAoKTsNCiAgDQohICAgaWYgKG5hcmdpbiA9PSAx KQ0KICAgICAgew0KICAgICAgICBvY3RhdmVfdmFsdWUgYXJnID0gYXJncygw KTsNCiAgDQogICAgICAgIGlmIChhcmcuaXNfcmVhbF90eXBlICgpKQ0KICAJ ew0KICAJICBNYXRyaXggdG1wID0gYXJnLm1hdHJpeF92YWx1ZSAoKTsNCiAg DQogIAkgIGlmICghIGVycm9yX3N0YXRlKQ0KISAJICAgIHJldHZhbCgwKSA9 IHRtcC5wcm9kICgpOw0KICAJfQ0KICAgICAgICBlbHNlIGlmIChhcmcuaXNf Y29tcGxleF90eXBlICgpKQ0KICAJew0KICAJICBDb21wbGV4TWF0cml4IHRt cCA9IGFyZy5jb21wbGV4X21hdHJpeF92YWx1ZSAoKTsNCiAgDQogIAkgIGlm ICghIGVycm9yX3N0YXRlKQ0KISAJICAgIHJldHZhbCgwKSA9IHRtcC5wcm9k ICgpOw0KICAJfQ0KICAgICAgICBlbHNlDQogIAl7DQotLS0gNTgzLDYxNyAt LS0tDQogIH0NCiAgDQogIERFRlVOIChwcm9kLCBhcmdzLCAsDQohICAgInBy b2QgKFgpOiBwcm9kdWN0c1xuIg0KISAgICJwcm9kIChYLCBESU0pOiBwcm9k dWN0cyBhbG9uZyBkaW1lbnNpb25cbiIpDQogIHsNCiAgICBvY3RhdmVfdmFs dWVfbGlzdCByZXR2YWw7DQogIA0KICAgIGludCBuYXJnaW4gPSBhcmdzLmxl bmd0aCAoKTsNCiAgDQohICAgaWYgKChuYXJnaW4gPT0gMSkgfHwgKG5hcmdp biA9PSAyKSkNCiAgICAgIHsNCiAgICAgICAgb2N0YXZlX3ZhbHVlIGFyZyA9 IGFyZ3MoMCk7DQorICAgICAgIGludCBkaW07DQorICAgICAgIGlmIChuYXJn aW4gPT0gMSkNCisgCWRpbSA9IDA7DQorICAgICAgIGVsc2UNCisgCWRpbSA9 IChpbnQpIGFyZ3MoMSkuZG91YmxlX3ZhbHVlICgpOw0KICANCiAgICAgICAg aWYgKGFyZy5pc19yZWFsX3R5cGUgKCkpDQogIAl7DQogIAkgIE1hdHJpeCB0 bXAgPSBhcmcubWF0cml4X3ZhbHVlICgpOw0KICANCiAgCSAgaWYgKCEgZXJy b3Jfc3RhdGUpDQohIAkgICAgcmV0dmFsKDApID0gdG1wLnByb2QgKGRpbSk7 DQogIAl9DQogICAgICAgIGVsc2UgaWYgKGFyZy5pc19jb21wbGV4X3R5cGUg KCkpDQogIAl7DQogIAkgIENvbXBsZXhNYXRyaXggdG1wID0gYXJnLmNvbXBs ZXhfbWF0cml4X3ZhbHVlICgpOw0KICANCiAgCSAgaWYgKCEgZXJyb3Jfc3Rh dGUpDQohIAkgICAgcmV0dmFsKDApID0gdG1wLnByb2QgKGRpbSk7DQogIAl9 DQogICAgICAgIGVsc2UNCiAgCXsNCioqKioqKioqKioqKioqKg0KKioqIDY2 MCw2ODggKioqKg0KICB9DQogIA0KICBERUZVTiAoc3VtLCBhcmdzLCAsDQoh ICAgInN1bSAoWCk6IHN1bSBvZiBlbGVtZW50cyIpDQogIHsNCiAgICBvY3Rh dmVfdmFsdWVfbGlzdCByZXR2YWw7DQogIA0KICAgIGludCBuYXJnaW4gPSBh cmdzLmxlbmd0aCAoKTsNCiAgDQohICAgaWYgKG5hcmdpbiA9PSAxKQ0KICAg ICAgew0KICAgICAgICBvY3RhdmVfdmFsdWUgYXJnID0gYXJncygwKTsNCiAg DQogICAgICAgIGlmIChhcmcuaXNfcmVhbF90eXBlICgpKQ0KICAJew0KICAJ ICBNYXRyaXggdG1wID0gYXJnLm1hdHJpeF92YWx1ZSAoKTsNCiAgDQogIAkg IGlmICghIGVycm9yX3N0YXRlKQ0KISAJICAgIHJldHZhbCgwKSA9IHRtcC5z dW0gKCk7DQogIAl9DQogICAgICAgIGVsc2UgaWYgKGFyZy5pc19jb21wbGV4 X3R5cGUgKCkpDQogIAl7DQogIAkgIENvbXBsZXhNYXRyaXggdG1wID0gYXJn LmNvbXBsZXhfbWF0cml4X3ZhbHVlICgpOw0KICANCiAgCSAgaWYgKCEgZXJy b3Jfc3RhdGUpDQohIAkgICAgcmV0dmFsKDApID0gdG1wLnN1bSAoKTsNCiAg CX0NCiAgICAgICAgZWxzZQ0KICAJew0KLS0tIDY3OCw3MTIgLS0tLQ0KICB9 DQogIA0KICBERUZVTiAoc3VtLCBhcmdzLCAsDQohICAgInN1bSAoWCk6IHN1 bSBvZiBlbGVtZW50c1xuIg0KISAgICJzdW0gKFgsIERJTSk6IHN1bSBvZiBl bGVtZW50cyBhbG9uZyBkaW1lbnNpb24gRElNIikNCiAgew0KICAgIG9jdGF2 ZV92YWx1ZV9saXN0IHJldHZhbDsNCiAgDQogICAgaW50IG5hcmdpbiA9IGFy Z3MubGVuZ3RoICgpOw0KICANCiEgICBpZiAoKG5hcmdpbiA9PSAxKSB8fCAo bmFyZ2luID09IDIpKQ0KICAgICAgew0KICAgICAgICBvY3RhdmVfdmFsdWUg YXJnID0gYXJncygwKTsNCisgICAgICAgaW50IGRpbTsNCisgICAgICAgaWYg KG5hcmdpbiA9PSAxKQ0KKyAJZGltID0gMDsNCisgICAgICAgZWxzZQ0KKyAJ ZGltID0gKGludCkgYXJncygxKS5kb3VibGVfdmFsdWUgKCk7DQogIA0KICAg ICAgICBpZiAoYXJnLmlzX3JlYWxfdHlwZSAoKSkNCiAgCXsNCiAgCSAgTWF0 cml4IHRtcCA9IGFyZy5tYXRyaXhfdmFsdWUgKCk7DQogIA0KICAJICBpZiAo ISBlcnJvcl9zdGF0ZSkNCiEgCSAgICByZXR2YWwoMCkgPSB0bXAuc3VtIChk aW0pOw0KICAJfQ0KICAgICAgICBlbHNlIGlmIChhcmcuaXNfY29tcGxleF90 eXBlICgpKQ0KICAJew0KICAJICBDb21wbGV4TWF0cml4IHRtcCA9IGFyZy5j b21wbGV4X21hdHJpeF92YWx1ZSAoKTsNCiAgDQogIAkgIGlmICghIGVycm9y X3N0YXRlKQ0KISAJICAgIHJldHZhbCgwKSA9IHRtcC5zdW0gKGRpbSk7DQog IAl9DQogICAgICAgIGVsc2UNCiAgCXsNCioqKioqKioqKioqKioqKg0KKioq IDY5OCw3MDMgKioqKg0KLS0tIDcyMiw3MjggLS0tLQ0KICANCiAgREVGVU4g KHN1bXNxLCBhcmdzLCAsDQogICAgInN1bXNxIChYKTogc3VtIG9mIHNxdWFy ZXMgb2YgZWxlbWVudHMuXG5cDQorICAgIHN1bXNxIChYLCBESU0pOiBzdW0g b2Ygc3F1YXJlcyBvZiBlbGVtZW50cyBhbG9uZyBkaW1lbnNpb24gRElNLlxu XA0KICBcblwNCiAgVGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGNv bXB1dGluZ1xuXA0KICBcblwNCioqKioqKioqKioqKioqKg0KKioqIDcwOSw3 MzEgKioqKg0KICANCiAgICBpbnQgbmFyZ2luID0gYXJncy5sZW5ndGggKCk7 DQogIA0KISAgIGlmIChuYXJnaW4gPT0gMSkNCiAgICAgIHsNCiAgICAgICAg b2N0YXZlX3ZhbHVlIGFyZyA9IGFyZ3MoMCk7DQogIA0KICAgICAgICBpZiAo YXJnLmlzX3JlYWxfdHlwZSAoKSkNCiAgCXsNCiAgCSAgTWF0cml4IHRtcCA9 IGFyZy5tYXRyaXhfdmFsdWUgKCk7DQogIA0KICAJICBpZiAoISBlcnJvcl9z dGF0ZSkNCiEgCSAgICByZXR2YWwoMCkgPSB0bXAuc3Vtc3EgKCk7DQogIAl9 DQogICAgICAgIGVsc2UgaWYgKGFyZy5pc19jb21wbGV4X3R5cGUgKCkpDQog IAl7DQogIAkgIENvbXBsZXhNYXRyaXggdG1wID0gYXJnLmNvbXBsZXhfbWF0 cml4X3ZhbHVlICgpOw0KICANCiAgCSAgaWYgKCEgZXJyb3Jfc3RhdGUpDQoh IAkgICAgcmV0dmFsKDApID0gdG1wLnN1bXNxICgpOw0KICAJfQ0KICAgICAg ICBlbHNlDQogIAl7DQotLS0gNzM0LDc2MSAtLS0tDQogIA0KICAgIGludCBu YXJnaW4gPSBhcmdzLmxlbmd0aCAoKTsNCiAgDQohICAgaWYgKChuYXJnaW4g PT0gMSkgfHwgKG5hcmdpbiA9PSAyKSkNCiAgICAgIHsNCiAgICAgICAgb2N0 YXZlX3ZhbHVlIGFyZyA9IGFyZ3MoMCk7DQorICAgICAgIGludCBkaW07DQor ICAgICAgIGlmIChuYXJnaW4gPT0gMSkNCisgCWRpbSA9IDA7DQorICAgICAg IGVsc2UNCisgCWRpbSA9IChpbnQpIGFyZ3MoMSkuZG91YmxlX3ZhbHVlICgp Ow0KICANCiAgICAgICAgaWYgKGFyZy5pc19yZWFsX3R5cGUgKCkpDQogIAl7 DQogIAkgIE1hdHJpeCB0bXAgPSBhcmcubWF0cml4X3ZhbHVlICgpOw0KICAN CiAgCSAgaWYgKCEgZXJyb3Jfc3RhdGUpDQohIAkgICAgcmV0dmFsKDApID0g dG1wLnN1bXNxIChkaW0pOw0KICAJfQ0KICAgICAgICBlbHNlIGlmIChhcmcu aXNfY29tcGxleF90eXBlICgpKQ0KICAJew0KICAJICBDb21wbGV4TWF0cml4 IHRtcCA9IGFyZy5jb21wbGV4X21hdHJpeF92YWx1ZSAoKTsNCiAgDQogIAkg IGlmICghIGVycm9yX3N0YXRlKQ0KISAJICAgIHJldHZhbCgwKSA9IHRtcC5z dW1zcSAoZGltKTsNCiAgCX0NCiAgICAgICAgZWxzZQ0KICAJew0K ---559023410-851401618-928327258=:2168--