IyBUaGlzIHNldCBvZiB0ZXN0cyBjaGVja3MgbG9jYWwtc3BlY2lmaWMgZmVhdHVyZXMsIHVzaW5nIHRoZSAiZnJfRlIiIGxvY2FsZS4gCiMgSXQgaXMgbm90IFBlcmwtY29tcGF0aWJsZS4gV2hlbiBydW4gdmlhIFJ1blRlc3QsIHRoZSBsb2NhbGUgaXMgZWRpdGVkIHRvCiMgYmUgd2hpY2hldmVyIG9mICJmcl9GUiIsICJmcmVuY2giLCBvciAiZnIiIGlzIGZvdW5kIHRvIGV4aXN0LiBUaGVyZSBpcwojIGRpZmZlcmVudCB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBjYWxsZWQgd2ludGVzdGlucHV0MyBmb3IgdXNlIG9uIFdpbmRvd3MsCiMgd2hlcmUgdGhlIGxvY2FsZSBpcyBjYWxsZWQgImZyZW5jaCIgYW5kIHRoZSB0ZXN0cyBhcmUgcnVuIHVzaW5nCiMgUnVuVGVzdC5iYXQuIAoKI2ZvcmJpZF91dGYKCi9eW1x3XSsvClw9IEV4cGVjdCBubyBtYXRjaAogICAgyWNvbGUKTm8gbWF0Y2gKCi9eW1x3XSsvbG9jYWxlPWZyX0ZSCiAgICDJY29sZQogMDogyWNvbGUKCi9eW1x3XSsvClw9IEV4cGVjdCBubyBtYXRjaAogICAgyWNvbGUKTm8gbWF0Y2gKCi9eW1xXXSsvCiAgICDJY29sZQogMDogXHhjOQoKL15bXFddKy9sb2NhbGU9ZnJfRlIKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICDJY29sZQpObyBtYXRjaAoKL1tcYl0vCiAgICBcYgogMDogXHgwOApcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIGEKTm8gbWF0Y2gKCi9bXGJdL2xvY2FsZT1mcl9GUgogICAgXGIKIDA6IFx4MDgKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICBhCk5vIG1hdGNoCgovXlx3Ky8KXD0gRXhwZWN0IG5vIG1hdGNoCiAgICDJY29sZQpObyBtYXRjaAoKL15cdysvbG9jYWxlPWZyX0ZSCiAgICDJY29sZQogMDogyWNvbGUKCi8oLispXGIoLispLwogICAgyWNvbGUKIDA6IFx4Yzljb2xlCiAxOiBceGM5CiAyOiBjb2xlCgovKC4rKVxiKC4rKS9sb2NhbGU9ZnJfRlIKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICDJY29sZQpObyBtYXRjaAoKL8ljb2xlL2kKICAgIMljb2xlCiAwOiBceGM5Y29sZQpcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIOljb2xlCk5vIG1hdGNoCgovyWNvbGUvaSxsb2NhbGU9ZnJfRlIKICAgIMljb2xlCiAwOiDJY29sZQogICAg6WNvbGUKIDA6IOljb2xlCgovXHcvSQpDYXB0dXJlIGdyb3VwIGNvdW50ID0gMApTdGFydGluZyBjb2RlIHVuaXRzOiAwIDEgMiAzIDQgNSA2IDcgOCA5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgCiAgUSBSIFMgVCBVIFYgVyBYIFkgWiBfIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiAKU3ViamVjdCBsZW5ndGggbG93ZXIgYm91bmQgPSAxCgovXHcvSSxsb2NhbGU9ZnJfRlIKQ2FwdHVyZSBncm91cCBjb3VudCA9IDAKU3RhcnRpbmcgY29kZSB1bml0czogMCAxIDIgMyA0IDUgNiA3IDggOSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIAogIFEgUiBTIFQgVSBWIFcgWCBZIFogXyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogCiAgqiC1ILogwCDBIMIgwyDEIMUgxiDHIMggySDKIMsgzCDNIM4gzyDQINEg0iDTINQg1SDWINgg2SDaINsg3CDdIN4g3yDgIOEg4iAKICDjIOQg5SDmIOcg6CDpIOog6yDsIO0g7iDvIPAg8SDyIPMg9CD1IPYg+CD5IPog+yD8IP0g/iD/IApTdWJqZWN0IGxlbmd0aCBsb3dlciBib3VuZCA9IDEKCiMgQWxsIHJlbWFpbmluZyB0ZXN0cyBhcmUgaW4gdGhlIGZyX0ZSIGxvY2FsZSwgc28gc2V0IHRoZSBkZWZhdWx0LgoKI3BhdHRlcm4gbG9jYWxlPWZyX0ZSCgovXltceGM4LVx4YzldL2kKICAgIMljb2xlCiAwOiDJCiAgICDpY29sZQogMDog6QoKL15bXHhjOC1ceGM5XS8KICAgIMljb2xlCiAwOiDJClw9IEV4cGVjdCBubyBtYXRjaAogICAg6WNvbGUKTm8gbWF0Y2gKCi9cVysvCiAgICA+Pj5ceGFhPDw8CiAwOiA+Pj4KICAgID4+Plx4YmE8PDwgCiAwOiA+Pj4KCi9bXFddKy8KICAgID4+Plx4YWE8PDwKIDA6ID4+PgogICAgPj4+XHhiYTw8PCAKIDA6ID4+PgoKL1teWzphbHBoYTpdXSsvCiAgICA+Pj5ceGFhPDw8CiAwOiA+Pj4KICAgID4+Plx4YmE8PDwgCiAwOiA+Pj4KCi9cdysvCiAgICA+Pj5ceGFhPDw8CiAwOiCqCiAgICA+Pj5ceGJhPDw8IAogMDogugoKL1tcd10rLwogICAgPj4+XHhhYTw8PAogMDogqgogICAgPj4+XHhiYTw8PCAKIDA6ILoKCi9bWzphbHBoYTpdXSsvCiAgICA+Pj5ceGFhPDw8CiAwOiCqCiAgICA+Pj5ceGJhPDw8IAogMDogugogICAgCi9bWzphbHBoYTpdXVtbOmxvd2VyOl1dW1s6dXBwZXI6XV0vSUIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgQnJhCiAgICAgICAgW0EtWmEtelx4YWFceGI1XHhiYVx4YzAtXHhkNlx4ZDgtXHhmNlx4ZjgtXHhmZl0KICAgICAgICBbYS16XHhiNVx4ZGYtXHhmNlx4ZjgtXHhmZl0KICAgICAgICBbQS1aXHhjMC1ceGQ2XHhkOC1ceGRlXQogICAgICAgIEtldAogICAgICAgIEVuZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2FwdHVyZSBncm91cCBjb3VudCA9IDAKU3RhcnRpbmcgY29kZSB1bml0czogQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSBaIAogIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiCqILUguiDAIMEgwiDDIMQgxSDGIMcgCiAgyCDJIMogyyDMIM0gziDPINAg0SDSINMg1CDVINYg2CDZINog2yDcIN0g3iDfIOAg4SDiIOMg5CDlIOYg5yDoIOkg6iDrIOwg7SAKICDuIO8g8CDxIPIg8yD0IPUg9iD4IPkg+iD7IPwg/SD+IP8gClN1YmplY3QgbGVuZ3RoIGxvd2VyIGJvdW5kID0gMwoKIyBFbmQgb2YgdGVzdGlucHV0MyAK