IDT messaging services may process bracketed metadata embedded in message strings. Write a function that determines whether every bracket is correctly matched and nested.
A string is balanced when each opening bracket has a matching closing bracket of the same type, brackets close in last-in, first-out order, and no closing bracket appears without a corresponding opening bracket. Supported bracket pairs are (), [], and {}. The empty string is balanced.
Implement is_balanced(s), where s is a string containing only the six bracket characters (, ), [, ], {, and }. Return True if the string is balanced, otherwise return False.
def is_balanced(s):