Ly8gQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwovLyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgovLyBVc2UgLS1lbmNvZGluZyBjcDEyNTEgZm9yIGdlbnJiCgpzciB7CiAgICAgZXJyb3Jjb2RlcyB7CiAgICAgICAgICAgICAgICAgICAgICLN5ezgIOPw5fjq5SIsCiAgICAgICAgICAgICAgICAgICAgICLI6+Xj4Ovg7SDg8OPz7OXt8iIsCiAgICAgICAgICAgICAgICAgICAgICLN5eTu8fLgvPOe6CDw5fHz8PEiLAogICAgICAgICAgICAgICAgICAgICAi1O7w7ODyILzlIOvu+CIsCiAgICAgICAgICAgICAgICAgICAgICLD8OX46uAg8yDv8Ojx8vPv8yDk4PLu8uX26CIsCiAgICAgICAgICAgICAgICAgICAgICLI7fLl8O3gIOPw5fjq4CDzIO/w7uPw4OzzIiwKICAgICAgICAgICAgICAgICAgICAgIsPw5fjq4CDzIO/g8PHo8OCc8yDv7uTg8uDq4CIsCiAgICAgICAgICAgICAgICAgICAgICLD8OX46uAg8yDn4PPn6OzgnPMg7OXs7vDovOUiLAogICAgICAgICAgICAgICAgICAgICAiw/Dl+OrgIPMg7u/x5ePzIOjt5OXq8eAiLAogICAgICAgICAgICAgICAgICAgICAiw/Dl+OrgIPMg7+Dw8ejw4JzzIO/u5ODy4OrgIiwKICAgICAgICAgICAgICAgICAgICAgIs/w7u3gkOXtILzlIOvu+CDx6Ozh7usiLAogICAgICAgICAgICAgICAgICAgICAiz/Du7eCQ5e0gvOUg7/Dl6ujt8/Ig8ejs4e7rIiwKICAgICAgICAgICAgICAgICAgICAgIs/w7u3gkOXtILzlIOjr5ePg6+DtIPHo7OHu6yIsCiAgICAgICAgICAgICAgICAgICAgICLL7vgg9O7w7ODyIPLg4eXr5SIsCiAgICAgICAgICAgICAgICAgICAgICLL7vjgIOTg8u7y5ergIPLg4eXr5SIsCiAgICAgICAgICAgICAgICAgICAgICLB4PTl8CDx5SDv8OXr6O4iLAogICAgICAgICAgICAgICAgICAgICAizeXv7uft4PLgIOPw5fjq4CIsCiAgICAgICAgICAgICAgICAgICAgICLL7vgg8ujvIPDl8fPw8eAiLAogICAgICAgICAgICAgICAgICAgICAiy+744CDl8erlvO8g8eXq4uXt9uAiLAogICAgICAgICAgICAgICAgICAgICAizeXv7uTw5uDt4CDl8erlvO8g8eXq4uXt9uAiCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgaGVscFRvcGljcyB7CiAgICAgICAgICB1ZGF0YSAgICAgICAgICAgeyAiVGhpcyBpcyB1ZGF0YSBoZWxwIHRvcGljIiB9CiAgICAgICAgICByZXNvdXJjZWJ1bmRsZXMgeyAiVGhpcyBpcyByZXNvdXJjZSBidW5kbGUgaGVscCB0b3BpYyIgfQogICAgICAgICAgY29sbGF0aW9uICAgICAgIHsgIlRoaXMgaXMgY29sbGF0aW9uIGhlbHAgdG9waWMiIH0KICAgICAgICAgIGJyZWFraXQgICAgICAgICB7ICJUaGlzIGlzIGJyZWFrIGl0ZXJhdG9yIGhlbHAgdG9waWMiIH0KICAgICAgICAgIHRyYW5zbGl0ICAgICAgICB7ICJUaGlzIGlzIHRyYW5zbGl0ZXJhdGlvbiBoZWxwIHRvcGljIiB9CiAgICAgICAgICB1bmljb2RlICAgICAgICAgeyAiVGhpcyBpcyB1bmljb2RlIGhlbHAgdG9waWMiIH0KICAgICAgICAgIGZvcm1hdCAgICAgICAgICB7ICJUaGlzIGlzIGZvcm1hdCBoZWxwIHRvcGljIiB9CiAgICAgIH0KCiAgICAgIGhlbHBLZXl3b3JkcyB7CiAgICAgICAgICB1ZGF0YSAgICAgICAgICAgeyAidWRhdGEiIH0KICAgICAgICAgIHJlc291cmNlYnVuZGxlcyB7ICJyZXNvdXJjZXMiIH0KICAgICAgICAgIGNvbGxhdGlvbiAgICAgICB7ICJjb2xsYXRpb24iIH0KICAgICAgICAgIGJyZWFraXQgICAgICAgICB7ICJicmVha2l0IiB9CiAgICAgICAgICB0cmFuc2xpdCAgICAgICAgeyAidHJhbnNsaXRlcmF0aW9uIiB9CiAgICAgICAgICB1bmljb2RlICAgICAgICAgeyAidW5pY29kZSIgfQogICAgICAgICAgZm9ybWF0ICAgICAgICAgIHsgImZvcm1hdCIgfQogICAgICB9Cn0K