class Observable:

    def __init__(self, wrapped, *callbacks):
        self.wrapped = wrapped
        self.callbacks = list(callbacks)

    def subscribe(self, cb):
        self.callbacks.append(cb)

    def unsubscribe(self, cb):
        self.callbacks.append(cb)

    def __getattr__(self, name):
        res = self.wrapped.__getattribute__(name)
        if not callable(res):
            return res

        def wrap(*args, **kwargs):
            for c in self.callbacks:
                c(self.wrapped, *args, **kwargs)
            return res(*args, **kwargs)
        return wrap

    def __str__(self):
        return self.wrapped.__str__()

8440fbb8106ca6c09d8b4144e42089d90761b226
class Observable:

    def __init__(self, wrapped, *callbacks):
        self.wrapped = wrapped
        self.callbacks = list(callbacks)

    def subscribe(self, cb):
        self.callbacks.append(cb)
    <mask token>
    <mask token>
    <mask token>

class Observable:

    def __init__(self, wrapped, *callbacks):
        self.wrapped = wrapped
        self.callbacks = list(callbacks)

    def subscribe(self, cb):
        self.callbacks.append(cb)
    <mask token>

    def __getattr__(self, name):
        res = self.wrapped.__getattribute__(name)
        if not callable(res):
            return res

        def wrap(*args, **kwargs):
            for c in self.callbacks:
                c(self.wrapped, *args, **kwargs)
            return res(*args, **kwargs)
        return wrap
    <mask token>

class Observable:

    def __init__(self, wrapped, *callbacks):
        self.wrapped = wrapped
        self.callbacks = list(callbacks)

    def subscribe(self, cb):
        self.callbacks.append(cb)

    def unsubscribe(self, cb):
        self.callbacks.append(cb)

    def __getattr__(self, name):
        res = self.wrapped.__getattribute__(name)
        if not callable(res):
            return res

        def wrap(*args, **kwargs):
            for c in self.callbacks:
                c(self.wrapped, *args, **kwargs)
            return res(*args, **kwargs)
        return wrap
    <mask token>

class Observable:

    def __init__(self, wrapped, *callbacks):
        self.wrapped = wrapped
        self.callbacks = list(callbacks)

    def subscribe(self, cb):
        self.callbacks.append(cb)

    def unsubscribe(self, cb):
        self.callbacks.append(cb)

    def __getattr__(self, name):
        res = self.wrapped.__getattribute__(name)
        if not callable(res):
            return res

        def wrap(*args, **kwargs):
            for c in self.callbacks:
                c(self.wrapped, *args, **kwargs)
            return res(*args, **kwargs)
        return wrap

    def __str__(self):
        return self.wrapped.__str__()
