<!-- TROJAN_ENCRYPTED -->QGNoYXJzZXQgIlVURi04IjsKCi8qIQogKiBhbmltYXRlLmNzcyAtaHR0cDovL2RhbmVkZW4ubWUvYW5pbWF0ZQogKiBWZXJzaW9uIC0gMy41LjIKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIC0gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTcgRGFuaWVsIEVkZW4KICovCgouYW5pbWF0ZWQgewogIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKfQoKLmFuaW1hdGVkLmluZmluaXRlIHsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTsKfQoKLmFuaW1hdGVkLmhpbmdlIHsKICBhbmltYXRpb24tZHVyYXRpb246IDJzOwp9CgouYW5pbWF0ZWQuZmxpcE91dFgsCi5hbmltYXRlZC5mbGlwT3V0WSwKLmFuaW1hdGVkLmJvdW5jZUluLAouYW5pbWF0ZWQuYm91bmNlT3V0IHsKICBhbmltYXRpb24tZHVyYXRpb246IC43NXM7Cn0KCkBrZXlmcmFtZXMgYm91bmNlIHsKICBmcm9tLCAyMCUsIDUzJSwgODAlLCB0byB7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEwLCAwLjM1NSwgMS4wMDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7CiAgfQoKICA0MCUsIDQzJSB7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC43NTUsIDAuMDUwLCAwLjg1NSwgMC4wNjApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzBweCwgMCk7CiAgfQoKICA3MCUgewogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNzU1LCAwLjA1MCwgMC44NTUsIDAuMDYwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTE1cHgsIDApOwogIH0KCiAgOTAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwtNHB4LDApOwogIH0KfQoKLmJvdW5jZSB7CiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZTsKICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwp9CgpAa2V5ZnJhbWVzIGZsYXNoIHsKICBmcm9tLCA1MCUsIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAyNSUsIDc1JSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLmZsYXNoIHsKICBhbmltYXRpb24tbmFtZTogZmxhc2g7Cn0KCi8qIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTmljayBQZXR0aXQgLSBodHRwczovL2dpdGh1Yi5jb20vbmlja3BldHRpdC9nbGlkZSAqLwoKQGtleWZyYW1lcyBwdWxzZSB7CiAgZnJvbSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgfQoKICA1MCUgewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDUsIDEuMDUsIDEuMDUpOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogIH0KfQoKLnB1bHNlIHsKICBhbmltYXRpb24tbmFtZTogcHVsc2U7Cn0KCkBrZXlmcmFtZXMgcnViYmVyQmFuZCB7CiAgZnJvbSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgfQoKICAzMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMjUsIDAuNzUsIDEpOwogIH0KCiAgNDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAxLjI1LCAxKTsKICB9CgogIDUwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xNSwgMC44NSwgMSk7CiAgfQoKICA2NSUgewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45NSwgMS4wNSwgMSk7CiAgfQoKICA3NSUgewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDUsIC45NSwgMSk7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgfQp9CgoucnViYmVyQmFuZCB7CiAgYW5pbWF0aW9uLW5hbWU6IHJ1YmJlckJhbmQ7Cn0KCkBrZXlmcmFtZXMgc2hha2UgewogIGZyb20sIHRvIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgfQoKICAxMCUsIDMwJSwgNTAlLCA3MCUsIDkwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTsKICB9CgogIDIwJSwgNDAlLCA2MCUsIDgwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogIH0KfQoKLnNoYWtlIHsKICBhbmltYXRpb24tbmFtZTogc2hha2U7Cn0KCkBrZXlmcmFtZXMgaGVhZFNoYWtlIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQoKICA2LjUlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNnB4KSByb3RhdGVZKC05ZGVnKTsKICB9CgogIDE4LjUlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpIHJvdGF0ZVkoN2RlZyk7CiAgfQoKICAzMS41JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTNweCkgcm90YXRlWSgtNWRlZyk7CiAgfQoKICA0My41JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KSByb3RhdGVZKDNkZWcpOwogIH0KCiAgNTAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KCi5oZWFkU2hha2UgewogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogIGFuaW1hdGlvbi1uYW1lOiBoZWFkU2hha2U7Cn0KCkBrZXlmcmFtZXMgc3dpbmcgewogIDIwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDE1ZGVnKTsKICB9CgogIDQwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC0xMGRlZyk7CiAgfQoKICA2MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA1ZGVnKTsKICB9CgogIDgwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC01ZGVnKTsKICB9CgogIHRvIHsKICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZyk7CiAgfQp9Cgouc3dpbmcgewogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgYW5pbWF0aW9uLW5hbWU6IHN3aW5nOwp9CgpAa2V5ZnJhbWVzIHRhZGEgewogIGZyb20gewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOwogIH0KCiAgMTAlLCAyMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45LCAuOSwgLjkpIHJvdGF0ZTNkKDAsIDAsIDEsIC0zZGVnKTsKICB9CgogIDMwJSwgNTAlLCA3MCUsIDkwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xLCAxLjEsIDEuMSkgcm90YXRlM2QoMCwgMCwgMSwgM2RlZyk7CiAgfQoKICA0MCUsIDYwJSwgODAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKSByb3RhdGUzZCgwLCAwLCAxLCAtM2RlZyk7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgfQp9CgoudGFkYSB7CiAgYW5pbWF0aW9uLW5hbWU6IHRhZGE7Cn0KCi8qIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTmljayBQZXR0aXQgLSBodHRwczovL2dpdGh1Yi5jb20vbmlja3BldHRpdC9nbGlkZSAqLwoKQGtleWZyYW1lcyB3b2JibGUgewogIGZyb20gewogICAgdHJhbnNmb3JtOiBub25lOwogIH0KCiAgMTUlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTI1JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTVkZWcpOwogIH0KCiAgMzAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjAlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAzZGVnKTsKICB9CgogIDQ1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC0zZGVnKTsKICB9CgogIDYwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgMmRlZyk7CiAgfQoKICA3NSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNSUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIC0xZGVnKTsKICB9CgogIHRvIHsKICAgIHRyYW5zZm9ybTogbm9uZTsKICB9Cn0KCi53b2JibGUgewogIGFuaW1hdGlvbi1uYW1lOiB3b2JibGU7Cn0KCkBrZXlmcmFtZXMgamVsbG8gewogIGZyb20sIDExLjElLCB0byB7CiAgICB0cmFuc2Zvcm06IG5vbmU7CiAgfQoKICAyMi4yJSB7CiAgICB0cmFuc2Zvcm06IHNrZXdYKC0xMi41ZGVnKSBza2V3WSgtMTIuNWRlZyk7CiAgfQoKICAzMy4zJSB7CiAgICB0cmFuc2Zvcm06IHNrZXdYKDYuMjVkZWcpIHNrZXdZKDYuMjVkZWcpOwogIH0KCiAgNDQuNCUgewogICAgdHJhbnNmb3JtOiBza2V3WCgtMy4xMjVkZWcpIHNrZXdZKC0zLjEyNWRlZyk7CiAgfQoKICA1NS41JSB7CiAgICB0cmFuc2Zvcm06IHNrZXdYKDEuNTYyNWRlZykgc2tld1koMS41NjI1ZGVnKTsKICB9CgogIDY2LjYlIHsKICAgIHRyYW5zZm9ybTogc2tld1goLTAuNzgxMjVkZWcpIHNrZXdZKC0wLjc4MTI1ZGVnKTsKICB9CgogIDc3LjclIHsKICAgIHRyYW5zZm9ybTogc2tld1goMC4zOTA2MjVkZWcpIHNrZXdZKDAuMzkwNjI1ZGVnKTsKICB9CgogIDg4LjglIHsKICAgIHRyYW5zZm9ybTogc2tld1goLTAuMTk1MzEyNWRlZykgc2tld1koLTAuMTk1MzEyNWRlZyk7CiAgfQp9CgouamVsbG8gewogIGFuaW1hdGlvbi1uYW1lOiBqZWxsbzsKICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7Cn0KCkBrZXlmcmFtZXMgYm91bmNlSW4gewogIGZyb20sIDIwJSwgNDAlLCA2MCUsIDgwJSwgdG8gewogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxMCwgMC4zNTUsIDEuMDAwKTsKICB9CgogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7CiAgfQoKICAyMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpOwogIH0KCiAgNDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguOSwgLjksIC45KTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMDMsIDEuMDMsIDEuMDMpOwogIH0KCiAgODAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguOTcsIC45NywgLjk3KTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7CiAgfQp9CgouYm91bmNlSW4gewogIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbjsKfQoKQGtleWZyYW1lcyBib3VuY2VJbkRvd24gewogIGZyb20sIDYwJSwgNzUlLCA5MCUsIHRvIHsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MTAsIDAuMzU1LCAxLjAwMCk7CiAgfQoKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzAwMHB4LCAwKTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyNXB4LCAwKTsKICB9CgogIDc1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMHB4LCAwKTsKICB9CgogIDkwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDVweCwgMCk7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm06IG5vbmU7CiAgfQp9CgouYm91bmNlSW5Eb3duIHsKICBhbmltYXRpb24tbmFtZTogYm91bmNlSW5Eb3duOwp9CgpAa2V5ZnJhbWVzIGJvdW5jZUluTGVmdCB7CiAgZnJvbSwgNjAlLCA3NSUsIDkwJSwgdG8gewogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxMCwgMC4zNTUsIDEuMDAwKTsKICB9CgogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0zMDAwcHgsIDAsIDApOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDI1cHgsIDAsIDApOwogIH0KCiAgNzUlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApOwogIH0KCiAgOTAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoNXB4LCAwLCAwKTsKICB9CgogIHRvIHsKICAgIHRyYW5zZm9ybTogbm9uZTsKICB9Cn0KCi5ib3VuY2VJbkxlZnQgewogIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbkxlZnQ7Cn0KCkBrZXlmcmFtZXMgYm91bmNlSW5SaWdodCB7CiAgZnJvbSwgNjAlLCA3NSUsIDkwJSwgdG8gewogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxMCwgMC4zNTUsIDEuMDAwKTsKICB9CgogIGZyb20gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMzAwMHB4LCAwLCAwKTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjVweCwgMCwgMCk7CiAgfQoKICA3NSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTsKICB9CgogIDkwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01cHgsIDAsIDApOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiBub25lOwogIH0KfQoKLmJvdW5jZUluUmlnaHQgewogIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJblJpZ2h0Owp9CgpAa2V5ZnJhbWVzIGJvdW5jZUluVXAgewogIGZyb20sIDYwJSwgNzUlLCA5MCUsIHRvIHsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIxNSwgMC42MTAsIDAuMzU1LCAxLjAwMCk7CiAgfQoKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwMDBweCwgMCk7CiAgfQoKICA2MCUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogIH0KCiAgNzUlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTBweCwgMCk7CiAgfQoKICA5MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNXB4LCAwKTsKICB9CgogIHRvIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgfQp9CgouYm91bmNlSW5VcCB7CiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluVXA7Cn0KCkBrZXlmcmFtZXMgYm91bmNlT3V0IHsKICAyMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45LCAuOSwgLjkpOwogIH0KCiAgNTAlLCA1NSUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7CiAgfQp9CgouYm91bmNlT3V0IHsKICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0Owp9CgpAa2V5ZnJhbWVzIGJvdW5jZU91dERvd24gewogIDIwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwcHgsIDApOwogIH0KCiAgNDAlLCA0NSUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTsKICB9Cn0KCi5ib3VuY2VPdXREb3duIHsKICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0RG93bjsKfQoKQGtleWZyYW1lcyBib3VuY2VPdXRMZWZ0IHsKICAyMCUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjBweCwgMCwgMCk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTsKICB9Cn0KCi5ib3VuY2VPdXRMZWZ0IHsKICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0TGVmdDsKfQoKQGtleWZyYW1lcyBib3VuY2VPdXRSaWdodCB7CiAgMjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yMHB4LCAwLCAwKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgfQp9CgouYm91bmNlT3V0UmlnaHQgewogIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VPdXRSaWdodDsKfQoKQGtleWZyYW1lcyBib3VuY2VPdXRVcCB7CiAgMjAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwcHgsIDApOwogIH0KCiAgNDAlLCA0NSUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjBweCwgMCk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICB9Cn0KCi5ib3VuY2VPdXRVcCB7CiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dFVwOwp9CgpAa2V5ZnJhbWVzIGZhZGVJbiB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMTsKICB9Cn0KCi5mYWRlSW4gewogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW47Cn0KCkBrZXlmcmFtZXMgZmFkZUluRG93biB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBub25lOwogIH0KfQoKLmZhZGVJbkRvd24gewogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5Eb3duOwp9CgpAa2V5ZnJhbWVzIGZhZGVJbkRvd25CaWcgewogIGZyb20gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBub25lOwogIH0KfQoKLmZhZGVJbkRvd25CaWcgewogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5Eb3duQmlnOwp9CgpAa2V5ZnJhbWVzIGZhZGVJbkxlZnQgewogIGZyb20gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogbm9uZTsKICB9Cn0KCi5mYWRlSW5MZWZ0IHsKICBhbmltYXRpb24tbmFtZTogZmFkZUluTGVmdDsKfQoKQGtleWZyYW1lcyBmYWRlSW5MZWZ0QmlnIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogbm9uZTsKICB9Cn0KCi5mYWRlSW5MZWZ0QmlnIHsKICBhbmltYXRpb24tbmFtZTogZmFkZUluTGVmdEJpZzsKfQoKQGtleWZyYW1lcyBmYWRlSW5SaWdodCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IG5vbmU7CiAgfQp9CgouZmFkZUluUmlnaHQgewogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5SaWdodDsKfQoKQGtleWZyYW1lcyBmYWRlSW5SaWdodEJpZyB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogbm9uZTsKICB9Cn0KCi5mYWRlSW5SaWdodEJpZyB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblJpZ2h0QmlnOwp9CgpAa2V5ZnJhbWVzIGZhZGVJblVwIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogbm9uZTsKICB9Cn0KCi5mYWRlSW5VcCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwOwp9CgpAa2V5ZnJhbWVzIGZhZGVJblVwQmlnIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBub25lOwogIH0KfQoKLmZhZGVJblVwQmlnIHsKICBhbmltYXRpb24tbmFtZTogZmFkZUluVXBCaWc7Cn0KCkBrZXlmcmFtZXMgZmFkZU91dCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICB9Cn0KCi5mYWRlT3V0IHsKICBhbmltYXRpb24tbmFtZTogZmFkZU91dDsKfQoKQGtleWZyYW1lcyBmYWRlT3V0RG93biB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7CiAgfQp9CgouZmFkZU91dERvd24gewogIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0RG93bjsKfQoKQGtleWZyYW1lcyBmYWRlT3V0RG93bkJpZyB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTsKICB9Cn0KCi5mYWRlT3V0RG93bkJpZyB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXREb3duQmlnOwp9CgpAa2V5ZnJhbWVzIGZhZGVPdXRMZWZ0IHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgfQp9CgouZmFkZU91dExlZnQgewogIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdDsKfQoKQGtleWZyYW1lcyBmYWRlT3V0TGVmdEJpZyB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgfQp9CgouZmFkZU91dExlZnRCaWcgewogIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdEJpZzsKfQoKQGtleWZyYW1lcyBmYWRlT3V0UmlnaHQgewogIGZyb20gewogICAgb3BhY2l0eTogMTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogIH0KfQoKLmZhZGVPdXRSaWdodCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRSaWdodDsKfQoKQGtleWZyYW1lcyBmYWRlT3V0UmlnaHRCaWcgewogIGZyb20gewogICAgb3BhY2l0eTogMTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgfQp9CgouZmFkZU91dFJpZ2h0QmlnIHsKICBhbmltYXRpb24tbmFtZTogZmFkZU91dFJpZ2h0QmlnOwp9CgpAa2V5ZnJhbWVzIGZhZGVPdXRVcCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogIH0KfQoKLmZhZGVPdXRVcCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRVcDsKfQoKQGtleWZyYW1lcyBmYWRlT3V0VXBCaWcgewogIGZyb20gewogICAgb3BhY2l0eTogMTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMDAwcHgsIDApOwogIH0KfQoKLmZhZGVPdXRVcEJpZyB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRVcEJpZzsKfQoKQGtleWZyYW1lcyBmbGlwIHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0zNjBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7CiAgfQoKICA0MCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlM2QoMCwgMCwgMTUwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xOTBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7CiAgfQoKICA1MCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlM2QoMCwgMCwgMTUwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xNzBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICB9CgogIDgwJSB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSBzY2FsZTNkKC45NSwgLjk1LCAuOTUpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICB9CgogIHRvIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICB9Cn0KCi5hbmltYXRlZC5mbGlwIHsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTsKICBhbmltYXRpb24tbmFtZTogZmxpcDsKfQoKQGtleWZyYW1lcyBmbGlwSW5YIHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIDkwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgNDAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIC0yMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogIH0KCiAgNjAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIDEwZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICA4MCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTVkZWcpOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgfQp9CgouZmxpcEluWCB7CiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogIGFuaW1hdGlvbi1uYW1lOiBmbGlwSW5YOwp9CgpAa2V5ZnJhbWVzIGZsaXBJblkgewogIGZyb20gewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgOTBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgIG9wYWNpdHk6IDA7CiAgfQoKICA0MCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTIwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgfQoKICA2MCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgMTBkZWcpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDgwJSB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtNWRlZyk7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTsKICB9Cn0KCi5mbGlwSW5ZIHsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgYW5pbWF0aW9uLW5hbWU6IGZsaXBJblk7Cn0KCkBrZXlmcmFtZXMgZmxpcE91dFggewogIGZyb20gewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7CiAgfQoKICAzMCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTIwZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCA5MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLmZsaXBPdXRYIHsKICBhbmltYXRpb24tbmFtZTogZmxpcE91dFg7CiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9CgpAa2V5ZnJhbWVzIGZsaXBPdXRZIHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpOwogIH0KCiAgMzAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xNWRlZyk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9Cn0KCi5mbGlwT3V0WSB7CiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogIGFuaW1hdGlvbi1uYW1lOiBmbGlwT3V0WTsKfQoKQGtleWZyYW1lcyBsaWdodFNwZWVkSW4gewogIGZyb20gewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSBza2V3WCgtMzBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9CgogIDYwJSB7CiAgICB0cmFuc2Zvcm06IHNrZXdYKDIwZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICA4MCUgewogICAgdHJhbnNmb3JtOiBza2V3WCgtNWRlZyk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiBub25lOwogICAgb3BhY2l0eTogMTsKICB9Cn0KCi5saWdodFNwZWVkSW4gewogIGFuaW1hdGlvbi1uYW1lOiBsaWdodFNwZWVkSW47CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7Cn0KCkBrZXlmcmFtZXMgbGlnaHRTcGVlZE91dCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSBza2V3WCgzMGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLmxpZ2h0U3BlZWRPdXQgewogIGFuaW1hdGlvbi1uYW1lOiBsaWdodFNwZWVkT3V0OwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47Cn0KCkBrZXlmcmFtZXMgcm90YXRlSW4gewogIGZyb20gewogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOwogICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtMjAwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLnJvdGF0ZUluIHsKICBhbmltYXRpb24tbmFtZTogcm90YXRlSW47Cn0KCkBrZXlmcmFtZXMgcm90YXRlSW5Eb3duTGVmdCB7CiAgZnJvbSB7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTQ1ZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIHRyYW5zZm9ybTogbm9uZTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9Cgoucm90YXRlSW5Eb3duTGVmdCB7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluRG93bkxlZnQ7Cn0KCkBrZXlmcmFtZXMgcm90YXRlSW5Eb3duUmlnaHQgewogIGZyb20gewogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA0NWRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgdHJhbnNmb3JtOiBub25lOwogICAgb3BhY2l0eTogMTsKICB9Cn0KCi5yb3RhdGVJbkRvd25SaWdodCB7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluRG93blJpZ2h0Owp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluVXBMZWZ0IHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA0NWRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLnJvdGF0ZUluVXBMZWZ0IHsKICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5VcExlZnQ7Cn0KCkBrZXlmcmFtZXMgcm90YXRlSW5VcFJpZ2h0IHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTkwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLnJvdGF0ZUluVXBSaWdodCB7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluVXBSaWdodDsKfQoKQGtleWZyYW1lcyByb3RhdGVPdXQgewogIGZyb20gewogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOwogICAgb3BhY2l0eTogMTsKICB9CgogIHRvIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMjAwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9Cgoucm90YXRlT3V0IHsKICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0Owp9CgpAa2V5ZnJhbWVzIHJvdGF0ZU91dERvd25MZWZ0IHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgb3BhY2l0eTogMTsKICB9CgogIHRvIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA0NWRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLnJvdGF0ZU91dERvd25MZWZ0IHsKICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0RG93bkxlZnQ7Cn0KCkBrZXlmcmFtZXMgcm90YXRlT3V0RG93blJpZ2h0IHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC00NWRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLnJvdGF0ZU91dERvd25SaWdodCB7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dERvd25SaWdodDsKfQoKQGtleWZyYW1lcyByb3RhdGVPdXRVcExlZnQgewogIGZyb20gewogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC00NWRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLnJvdGF0ZU91dFVwTGVmdCB7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dFVwTGVmdDsKfQoKQGtleWZyYW1lcyByb3RhdGVPdXRVcFJpZ2h0IHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDkwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9Cgoucm90YXRlT3V0VXBSaWdodCB7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dFVwUmlnaHQ7Cn0KCkBrZXlmcmFtZXMgaGluZ2UgewogIDAlIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgfQoKICAyMCUsIDYwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDgwZGVnKTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgfQoKICA0MCUsIDgwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDYwZGVnKTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA3MDBweCwgMCk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLmhpbmdlIHsKICBhbmltYXRpb24tbmFtZTogaGluZ2U7Cn0KCkBrZXlmcmFtZXMgamFja0luVGhlQm94IHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMSkgcm90YXRlKDMwZGVnKTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207CiAgfQoKICA1MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoLTEwZGVnKTsKICB9CgogIDcwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KfQoKLmphY2tJblRoZUJveCB7CiAgYW5pbWF0aW9uLW5hbWU6IGphY2tJblRoZUJveDsKfQoKLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovCgpAa2V5ZnJhbWVzIHJvbGxJbiB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTEyMGRlZyk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBub25lOwogIH0KfQoKLnJvbGxJbiB7CiAgYW5pbWF0aW9uLW5hbWU6IHJvbGxJbjsKfQoKLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovCgpAa2V5ZnJhbWVzIHJvbGxPdXQgewogIGZyb20gewogICAgb3BhY2l0eTogMTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDEyMGRlZyk7CiAgfQp9Cgoucm9sbE91dCB7CiAgYW5pbWF0aW9uLW5hbWU6IHJvbGxPdXQ7Cn0KCkBrZXlmcmFtZXMgem9vbUluIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7CiAgfQoKICA1MCUgewogICAgb3BhY2l0eTogMTsKICB9Cn0KCi56b29tSW4gewogIGFuaW1hdGlvbi1uYW1lOiB6b29tSW47Cn0KCkBrZXlmcmFtZXMgem9vbUluRG93biB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDAsIC0xMDAwcHgsIDApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpOwogIH0KfQoKLnpvb21JbkRvd24gewogIGFuaW1hdGlvbi1uYW1lOiB6b29tSW5Eb3duOwp9CgpAa2V5ZnJhbWVzIHpvb21JbkxlZnQgewogIGZyb20gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgtMTAwMHB4LCAwLCAwKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgfQoKICA2MCUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIwLCAxKTsKICB9Cn0KCi56b29tSW5MZWZ0IHsKICBhbmltYXRpb24tbmFtZTogem9vbUluTGVmdDsKfQoKQGtleWZyYW1lcyB6b29tSW5SaWdodCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDEwMDBweCwgMCwgMCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpOwogIH0KfQoKLnpvb21JblJpZ2h0IHsKICBhbmltYXRpb24tbmFtZTogem9vbUluUmlnaHQ7Cn0KCkBrZXlmcmFtZXMgem9vbUluVXAgewogIGZyb20gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAxMDAwcHgsIDApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIC02MHB4LCAwKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIwLCAxKTsKICB9Cn0KCi56b29tSW5VcCB7CiAgYW5pbWF0aW9uLW5hbWU6IHpvb21JblVwOwp9CgpAa2V5ZnJhbWVzIHpvb21PdXQgewogIGZyb20gewogICAgb3BhY2l0eTogMTsKICB9CgogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4zLCAuMywgLjMpOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICB9Cn0KCi56b29tT3V0IHsKICBhbmltYXRpb24tbmFtZTogem9vbU91dDsKfQoKQGtleWZyYW1lcyB6b29tT3V0RG93biB7CiAgNDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjEsIC4xLCAuMSkgdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9Cgouem9vbU91dERvd24gewogIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0RG93bjsKfQoKQGtleWZyYW1lcyB6b29tT3V0TGVmdCB7CiAgNDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoNDJweCwgMCwgMCk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZSguMSkgdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICB9Cn0KCi56b29tT3V0TGVmdCB7CiAgYW5pbWF0aW9uLW5hbWU6IHpvb21PdXRMZWZ0Owp9CgpAa2V5ZnJhbWVzIHpvb21PdXRSaWdodCB7CiAgNDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoLTQycHgsIDAsIDApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjEpIHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgfQp9Cgouem9vbU91dFJpZ2h0IHsKICBhbmltYXRpb24tbmFtZTogem9vbU91dFJpZ2h0Owp9CgpAa2V5ZnJhbWVzIHpvb21PdXRVcCB7CiAgNDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgNjBweCwgMCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9Cgouem9vbU91dFVwIHsKICBhbmltYXRpb24tbmFtZTogem9vbU91dFVwOwp9CgpAa2V5ZnJhbWVzIHNsaWRlSW5Eb3duIHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICB9CgogIHRvIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgfQp9Cgouc2xpZGVJbkRvd24gewogIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluRG93bjsKfQoKQGtleWZyYW1lcyBzbGlkZUluTGVmdCB7CiAgZnJvbSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgfQoKICB0byB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogIH0KfQoKLnNsaWRlSW5MZWZ0IHsKICBhbmltYXRpb24tbmFtZTogc2xpZGVJbkxlZnQ7Cn0KCkBrZXlmcmFtZXMgc2xpZGVJblJpZ2h0IHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB9Cn0KCi5zbGlkZUluUmlnaHQgewogIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluUmlnaHQ7Cn0KCkBrZXlmcmFtZXMgc2xpZGVJblVwIHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIH0KCiAgdG8gewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB9Cn0KCi5zbGlkZUluVXAgewogIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluVXA7Cn0KCkBrZXlmcmFtZXMgc2xpZGVPdXREb3duIHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgfQoKICB0byB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApOwogIH0KfQoKLnNsaWRlT3V0RG93biB7CiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0RG93bjsKfQoKQGtleWZyYW1lcyBzbGlkZU91dExlZnQgewogIGZyb20gewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB9CgogIHRvIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOwogIH0KfQoKLnNsaWRlT3V0TGVmdCB7CiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0TGVmdDsKfQoKQGtleWZyYW1lcyBzbGlkZU91dFJpZ2h0IHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgfQoKICB0byB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogIH0KfQoKLnNsaWRlT3V0UmlnaHQgewogIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dFJpZ2h0Owp9CgpAa2V5ZnJhbWVzIHNsaWRlT3V0VXAgewogIGZyb20gewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB9CgogIHRvIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApOwogIH0KfQoKLnNsaWRlT3V0VXAgewogIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dFVwOwp9Cg==