IiBWaW0gaW5kZW50IGZpbGUKIiBMYW5ndWFnZToJUlBMLzIKIiBWZXJzaW9uOgkwLjIKIiBMYXN0IENoYW5nZToJMjAwMiBBdWd1c3QgMTYKIiBNYWludGFpbmVyOglCRVJUUkFORCBKb+tsIDxycGwyQGZyZWUuZnI+CgoiIE9ubHkgbG9hZCB0aGlzIGluZGVudCBmaWxlIHdoZW4gbm8gb3RoZXIgd2FzIGxvYWRlZC4KaWYgZXhpc3RzKCJiOmRpZF9pbmRlbnQiKQogIGZpbmlzaAplbmRpZgpsZXQgYjpkaWRfaW5kZW50ID0gMQoKc2V0bG9jYWwgaW5kZW50a2V5cys9PX5lbmQsPX5jYXNlLD1+aWYsPX50aGVuLD1+ZWxzZSw9fmRvLD1+dW50aWwsPX53aGlsZSw9fnJlcGVhdCw9fnNlbGVjdCw9fmRlZmF1bHQsPX5mb3IsPX5zdGFydCw9fm5leHQsPX5zdGVwLDw8Piw8Pj4KCiIgRGVmaW5lIHRoZSBhcHByb3ByaWF0ZSBpbmRlbnQgZnVuY3Rpb24gYnV0IG9ubHkgb25jZQpzZXRsb2NhbCBpbmRlbnRleHByPVJwbEdldEZyZWVJbmRlbnQoKQppZiBleGlzdHMoIipScGxHZXRGcmVlSW5kZW50IikKICBmaW5pc2gKZW5kaWYKCmZ1bmN0aW9uIFJwbEdldEluZGVudChsbnVtKQogIGxldCBpbmQgPSBpbmRlbnQoYTpsbnVtKQogIGxldCBwcmV2bGluZT1nZXRsaW5lKGE6bG51bSkKICAiIFN0cmlwIHRhaWwgY29tbWVudAogIGxldCBwcmV2c3RhdD1zdWJzdGl0dXRlKHByZXZsaW5lLCAnIS4qJCcsICcnLCAnJykKCiAgIiBBZGQgYSBzaGlmdHdpZHRoIHRvIHN0YXRlbWVudHMgZm9sbG93aW5nIGlmLCBpZmVyciwgdGhlbiwgZWxzZSwgZWxzZWlmLAogICIgY2FzZSwgc2VsZWN0LCBkZWZhdWx0LCBkbywgdW50aWwsIHdoaWxlLCByZXBlYXQsIGZvciwgc3RhcnQKICBpZiBwcmV2c3RhdCA9fj8gJ1w8XChpZlx8aWZlcnJcfGRvXHx3aGlsZVwpXD4nICYmIHByZXZzdGF0ID1+PyAnXDxlbmRcPicKICBlbHNlaWYgcHJldnN0YXQgPX4/ICdcKF5cfFxzXCtcKTw8XCgkXHxcc1wrXCknICYmIHByZXZzdGF0ID1+PyAnXHNcKz4+XCgkXHxcc1wrXCknCiAgZWxzZWlmIHByZXZzdGF0ID1+PyAnXDxcKGlmXHxpZmVyclx8dGhlblx8ZWxzZVx8ZWxzZWlmXHxzZWxlY3RcfGNhc2VcfGRvXHx1bnRpbFx8d2hpbGVcfHJlcGVhdFx8Zm9yXHxzdGFydFx8ZGVmYXVsdFwpXD4nIHx8IHByZXZzdGF0ID1+PyAnXCheXHxcc1wrXCk8PFwoJFx8XHNcK1wpJwogICAgbGV0IGluZCA9IGluZCArICZzdwogIGVuZGlmCgogICIgU3VidHJhY3QgYSBzaGlmdHdpZHRoIGZyb20gdGhlbiwgZWxzZSwgZWxzZWlmLCBlbmQsIHVudGlsLCByZXBlYXQsIG5leHQsCiAgIiBzdGVwCiAgbGV0IGxpbmUgPSBnZXRsaW5lKHY6bG51bSkKICBpZiBsaW5lID1+PyAnXlxzKlwodGhlblx8ZWxzZVx8ZWxzZWlmXHx1bnRpbFx8cmVwZWF0XHxuZXh0XHxzdGVwXHxkZWZhdWx0XHxlbmRcKVw+JwogICAgbGV0IGluZCA9IGluZCAtICZzdwogIGVsc2VpZiBsaW5lID1+PyAnXlxzKj4+XCgkXHxcc1wrXCknCiAgICBsZXQgaW5kID0gaW5kIC0gJnN3CiAgZW5kaWYKCiAgcmV0dXJuIGluZAplbmRmdW5jdGlvbgoKZnVuY3Rpb24gUnBsR2V0RnJlZUluZGVudCgpCiAgIiBGaW5kIHRoZSBwcmV2aW91cyBub24tYmxhbmsgbGluZQogIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKHY6bG51bSAtIDEpCgogICIgVXNlIHplcm8gaW5kZW50IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUKICBpZiBsbnVtID09IDAKICAgIHJldHVybiAwCiAgZW5kaWYKCiAgbGV0IGluZD1ScGxHZXRJbmRlbnQobG51bSkKICByZXR1cm4gaW5kCmVuZGZ1bmN0aW9uCgoiIHZpbTpzdz0yIHR3PTEzMAo=