Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IFN5bnRhY29yZSBMTEMgqSAyMDE2LTIwMjEKLy8gCi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwovLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAovLyBTUERYLUZpbGVDb250cmlidXRvcjogU3ludGFjb3JlIExMQwovLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLy8gQGZpbGUgICAgICAgPHNjcjFfbWVtaWYuc3ZoPgovLy8gQGJyaWVmICAgICAgTWVtb3J5IGludGVyZmFjZSBkZWZpbml0aW9ucyBmaWxlCi8vLwoKYGlmbmRlZiBTQ1IxX01FTUlGX1NWSApgZGVmaW5lIFNDUjFfTUVNSUZfU1ZICgpgaW5jbHVkZSAic2NyMV9hcmNoX2Rlc2NyaXB0aW9uLnN2aCIKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBNZW1vcnkgY29tbWFuZCBlbnVtCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovL3R5cGVkZWYgZW51bSBsb2dpYyB7CnBhcmFtZXRlciAgICBTQ1IxX01FTV9DTURfUkQgICAgID0gMSdiMDsKcGFyYW1ldGVyICAgIFNDUjFfTUVNX0NNRF9XUiAgICAgPSAxJ2IxOwovL2BpZmRlZiBTQ1IxX1hQUk9QX0VOCi8vICAgICwKcGFyYW1ldGVyICAgICBTQ1IxX01FTV9DTURfRVJST1IgID0gJ3g7Ci8vYGVuZGlmIC8vIFNDUjFfWFBST1BfRU4KLy99IHR5cGVfc2NyMV9tZW1fY21kX2U7CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTWVtb3J5IGRhdGEgd2lkdGggZW51bQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy90eXBlZGVmIGVudW0gbG9naWNbMTowXSB7CnBhcmFtZXRlciAgICBTQ1IxX01FTV9XSURUSF9CWVRFICAgICA9IDInYjAwOwpwYXJhbWV0ZXIgICAgU0NSMV9NRU1fV0lEVEhfSFdPUkQgICAgPSAyJ2IwMTsKcGFyYW1ldGVyICAgIFNDUjFfTUVNX1dJRFRIX1dPUkQgICAgID0gMidiMTA7Ci8vYGlmZGVmIFNDUjFfWFBST1BfRU4KLy8gICAgLApwYXJhbWV0ZXIgICAgU0NSMV9NRU1fV0lEVEhfRVJST1IgICAgPSAneDsKLy9gZW5kaWYgLy8gU0NSMV9YUFJPUF9FTgovL30gdHlwZV9zY3IxX21lbV93aWR0aF9lOwoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE1lbW9yeSByZXNwb25zZSBlbnVtCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovL3R5cGVkZWYgZW51bSBsb2dpY1sxOjBdIHsKcGFyYW1ldGVyICAgIFNDUjFfTUVNX1JFU1BfTk9UUkRZICAgID0gMidiMDA7CnBhcmFtZXRlciAgICBTQ1IxX01FTV9SRVNQX1JEWV9PSyAgICA9IDInYjAxOwpwYXJhbWV0ZXIgICAgU0NSMV9NRU1fUkVTUF9SRFlfRVIgICAgPSAyJ2IxMDsKLy9gaWZkZWYgU0NSMV9YUFJPUF9FTgovLyAgICAsCnBhcmFtZXRlciAgICBTQ1IxX01FTV9SRVNQX0VSUk9SICAgICA9ICd4OwovL2BlbmRpZiAvLyBTQ1IxX1hQUk9QX0VOCi8vfSB0eXBlX3NjcjFfbWVtX3Jlc3BfZTsKCmBlbmRpZiAvLyBTQ1IxX01FTUlGX1NWSAo=