ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 0x100020, 0x1fffe0}, {&(0x7f0000168a00)="eb52904e5446532020202000102000000000000000f8000000000000000000000000000080008000ff0300000000000002000000000000000f00000000000000f4000000f400000025f72e792ed6fb51000000000e1fbe717cac22c0740b56b40ebb0700cd105eebf032e4cd16cd19ebfe54686973206973206e6f74206120626f6f7461626c65206469736b2e20506c6561736520696e73657274206120626f6f7461626c6520666c6f70707920616e640d0a707265737320616e79206b657920746f2074727920616761696e202e2e2e200d0a00"/224, 0xe0, 0x3ff000}, {&(0x7f0000168b00)="00000000000000000000000000000000000000000000000000000000000055aa", 0x20, 0x3ff1e0}], 0x0, &(0x7f0000168c00)) syz_mount_image$vxfs(&(0x7f0000000040), &(0x7f0000000080)='./file0\x00', 0x4, 0x2, &(0x7f00000000c0)=[{&(0x7f0000005080)="2ad56ea07fdb05e7786fa49a9f8b29d7703605962dcf2e2c3247107aa9156acde6b35ea2535f4cc6b4a53df23068db3961faefec919251e30090d000c2f24bae8fb36636c6b19d34d1d47a1726937403eaa9032f3ebb997e3bb27e08f41b478282c78ebac77dd7c3543cc02885e9e89ebd29343e963fcd682f3e0f86701c0b199db747103e5825241ab099958e6ce62c45e3434b6b4e62c6be297954aaf851c0271c5850627d1d05682654ca1330d8c7f320ea7c449d40ec29225e88a92210dea3e51dee7fdfb9f9cc539b8c4e99149b2f8c2fe62babc8", 0xd7, 0x100000000}, {&(0x7f0000000140)="31d2a37ede0ea1ec0fce98e2dcc2c0f133390c61bf6e1c22fd1c824dd734560305e5cc635fbc20c3dd363793a5631e1bed729522cc8ad82a30650ce58301b45e603de6858786c8757554254b2d0e92438d1cf9816c16fa9664932065e209da2b6a14e49c5e7d20fe12ce889e4d0535ab2f3d7d7d625c6cf8cdb3b9db379a53938f1aa886ee73d9f28c", 0x89, 0xfffffffffffffffd}], 0x382000, &(0x7f0000005180)={[{'G['}, {'ntfs\x00'}], [{@measure}, {@pcr={'pcr', 0x3d, 0x1b}}, {@seclabel}, {@dont_hash}]}) 05:37:34 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) recvmmsg(r0, &(0x7f0000000a00)=[{{0x0, 0x0, &(0x7f0000000280)=[{&(0x7f0000000040)=""/85, 0x55}, {&(0x7f0000000100)=""/219, 0xdb}, {&(0x7f0000000200)=""/118, 0x76}], 0x3}, 0x2}, {{&(0x7f00000002c0)=@nl=@proc, 0x80, &(0x7f0000000780)=[{&(0x7f0000000340)=""/80, 0x50}, {&(0x7f00000003c0)=""/83, 0x53}, {&(0x7f00000004c0)=""/127, 0x7f}, {&(0x7f0000000540)=""/183, 0xb7}, {&(0x7f0000000600)=""/134, 0x86}, {&(0x7f00000006c0)=""/161, 0xa1}], 0x6, &(0x7f0000000800)=""/169, 0xa9}, 0x7}, {{&(0x7f00000008c0)=@rxrpc=@in4={0x21, 0x0, 0x2, 0x10, {0x2, 0x0, @loopback}}, 0x80, &(0x7f0000000440)=[{&(0x7f0000000940)=""/85, 0x55}], 0x1, &(0x7f00000009c0)=""/29, 0x1d}, 0x100}], 0x3, 0x40000063, &(0x7f0000000ac0)={0x77359400}) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:34 executing program 4: pipe(&(0x7f0000000100)={0xffffffffffffffff, 0xffffffffffffffff}) perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x41c1, 0x0, 0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) openat$audio1(0xffffffffffffff9c, 0x0, 0x0, 0x0) vmsplice(r0, &(0x7f00000000c0)=[{&(0x7f0000000080)="cc", 0x1}], 0x1, 0x0) move_pages(0x0, 0xa401, &(0x7f0000000180)=[&(0x7f0000000000/0x2000)=nil], &(0x7f0000000040)=[0x1], 0x0, 0x0) getsockopt$sock_cred(0xffffffffffffffff, 0x1, 0x11, &(0x7f0000000240)={0x0, 0x0}, &(0x7f0000000280)=0x5) setreuid(0x0, r1) syz_mount_image$udf(&(0x7f0000000140), &(0x7f0000000200)='./file0\x00', 0x1, 0x4, &(0x7f0000001680)=[{0x0}, {0x0}, {&(0x7f00000004c0)="e64da80fa23b7b648c78e24a3fd050526ff7265c84cc4c8c85528b8ea9a2316602c2aa60c96d9babfa44e4f95306e5f8af34d3a94b9c092b78b14a9b55986bfaf5e7387956d25a891e84a50d29e47d60a73f43b1af32ad2db0abd478171beac54d5887983aa3cc03a90fc613fc175a56bb6612c3e238fec875dfd6754375e985bbcb2a17c560dc2687c33a750fe080e098", 0x91, 0x7}, {&(0x7f0000000680)="3051cb121138c3d35dbcea398d1fa7d102c06451134b77899f2a1a36c03379f1d9b00b7fa39d77d31c678a7096599a3eb9a4d1d5cb541e60ca3114838a04f4e752a7e6b1c0e30a30a470209b12ef350f9e81df415092f7f3a9eecfaaa3f1a6ab47771aff6c983b404d4701c6ebcf1e88fd86a5e4e7e290ad83adac6d8a02f2b44169ef8deb65d164403ead473a8ffe523b40f727363c8faa8f8f212e8fc19d03bb49d1d9c7aa2f0f9a80ff7c9e7c40450dcfd416402fa70d3466dd2804b8028536fa86eeeac3f4647bc3afeae05c8f9567db557776da218a047e0ec6102e40df6561f6df7585eae23cc51736856098f0305941ae85b13cdfd782a9c5b7bced4251f1d064d07c6474a7883599910e678a5203fb17af1b633c85a85840d2f8199db93b3abb236dd4950d4438431b3e9320301c62bab150cb287ff1dfa28b801fe897403c0c789757c86f9045109be55ab04e656ac9eabfab80107be66311fc74f0dbc899a4a12cb87fb6e463de8b23d13edcb3efed617040995a002db704d2c37e6bbb287f006a77e06bc6253634c9f6cf2bdbac7b293c59b1b754bd8bdb6b96d6d8dc77b9fd23edf0fc1c890032f9a938ed881d23fc756805fa85eae398c1f918947c631e3f76d1dcb47c92c25d68d3c84903cd055081f9bcf3ae8b3829c676bb4cb678121f9c11e5b185a345d1ec57a2976651f59f392c29529d4741b0ab39bb73c1638d504b3b144a3e1178161185cabfce23ee496936849c718bbee02e26713b6fe3c898dcfe70efeaf97cbfcb10d284f57544407a31b76204fa49899b77c5065ad5c76a0ad6c3439a066a29cc0f665832a31dc5f1fbfb04b61c6d7e77048b011a777c01ad93093dfab47382b8ce77b13f1aacef18b557aad01a24110415abefe832928bd9435d00e470c3119f117c223c90f4d41fcb4111804ab03a28b14976128c6d5f346dfd22d7f0d07a107b3457b81dc74bf51697decbc72df2d9a5f0b0078789bc37b6b64cfb4cd6b2b74af79f3a614a00d024558960ea1cc4501d15323890b96a21e539fba0f6c6c72819b1fb44ddae4eaf47a175d2b332076eef12ec694019a0ce49c7aa5119e6bef0f0468b48d8a4bcf8596f7a276616301996bcc445bc0db23eceb1474c5c6b1a6fc48e4d90e759a3b96602effeb009abffab76347ad4eaca2a5c6e7c793a7faa228ba71e48095b78a6eaae45ec60bd26160e6057299774992a66a3833950ae7ce501578efd31279865e918b2953a866c9c5587b3ecfa3e19c4aec39ce2143662a42546c752a3e3e35701c24ee087fc443087a8bd5e49098c2be73ad25691e59594d8ffafe1dc772d0bb47d79083b01cdee0156fdf05cbff40474cd7b42a95250c41781a39ff4e9f9fcd110b67ab251a87635b5b3c8ba61b578b18f1baf961ee6bb2049f0dfb4baf5c4d39c8eb92cd1325efef28d73fddad23c9f43bdfed3e52cb0a7dc9b098c3c8f08d4434c9534b2a7b80985c3ef67181a8ed40deb0deac47f04e2dfbf924b0c8eacfac160d3858632912b1144c5a307f6b59e1788924381f602a242dc85707323f654af0bc4bbea2be3deff6982d559a6b3ba34ec576476ceace1ce2e7b18e1ddd0ae03150ef731dca2573dc672c6c90396d5d903ac12fa527d6fda7c28313ab84a7c10c8962c9ed1d96a2ba09d190deeb91a445d554ab0c85397e0db617c0efb8826ebf1efc4105c9a20da19275edd24c014f1782e7cbdba9b65b296189c4cd8aa5c1e9e9666bb56666f076ad53280c23d59d1f5273ec3f0baf358f243bc8e8180bac210665fd1479705975c7d4d13ee62c2f6747e89a6e2ad9355aaab3b49cfe9d37d0e842bc5bfd1a057e42292497445bf203e986be769f1b0a8c0253a68e83ee35e6ed62aae159c191417504bb62e74e6f662579a4dae4b4227552174f2b63d5613ea3bc44af0e5158eac1d9f10426cbdfe0025aa79db1c2a6a48412692520023355c526e95906568a614eb89cb1fac82f64f727a12a0a030a4ceadcc69836a98c5d7b3b6bdf9fdf3a3545113fb6515b9f88a0315d6c05d818973aaf992b4d8676031be1271c7d7b3ef0972d61638612caa25419d40f65ef1aed74b4ef6430ed9c787b3b5e85a1022189f9056b511866df801b2ccc8607cac37590db816d7c400a8b27c2382f47763b0b73b4d49b969bb8c19a14bf5652097b47938f47a1fa2e03bfeaf805794e4039145066a2f4d43b64fc0b8d77c8ad65343f7d90c8b454556769af1ea145d9fa763707a87efe09aceff0d04f5106a35e60af4cb0a417a021175af8e28ccabad3dd09b52fb472e56811412be21f1fa97c2b09738592f1916b00a9335d75232e4a1ee59af594021270d0e434617ee99724428385ff818781a6de2cad4f8aca3ccb2746a71b5c21f218220571b35acc09b3fd029c5c536f2b9c4c4bd45ed41ba9f5dea0c49039f456f0c54b79535e11da8a6e26a2254b3e6e76441b91d7279e34d9bb7219d14528c18e8dc7399ad0765c9ea9f41d0cb0e008d96368e2e509ea2cba74dd4721ba7cff1095efdfc2cecd68c573e12334a48d1e054ac7bdeb1a88f85fab0dbd716193b349458697b6d3af2fa9799a9e15342d9a96254e626732ee2f9debd192959cfc99f174b9dd9b5dace51f799a72d08086f9a5dde656dd53ca770cd428741dff9a43cf885f339350b793f02e77bd69ccb3002d490993e84e0c29aefa6d32a81ce74d837efa3ff1d4143e28c62139318427f05867be56df52c8bb3875c798315268c5e10d0396421a7f8e6f30796df646c0076356d5c1c652692d6", 0x7be, 0xb089}], 0x1418, 0x0) getgroups(0x8, &(0x7f00000024c0)=[0xee01, 0xee01, 0xffffffffffffffff, 0xffffffffffffffff, 0xee00, 0xee01, 0xee01, 0x0]) getresgid(&(0x7f0000002500), &(0x7f0000002540), &(0x7f0000002580)) ioctl$AUTOFS_DEV_IOCTL_REQUESTER(0xffffffffffffffff, 0xc018937b, &(0x7f00000025c0)={{0x1, 0x1, 0x18, r0, {0xee01, 0xee00}}, './file0\x00'}) fsetxattr$system_posix_acl(0xffffffffffffffff, &(0x7f0000000300)='system.posix_acl_default\x00', &(0x7f0000002600)={{}, {0x1, 0x3}, [{0x2, 0x2, 0xee00}, {0x2, 0x2}, {0x2, 0x3}, {0x2, 0x4}], {0x4, 0x1}, [{0x8, 0x4, r2}, {0x8, 0x1, 0xee01}, {0x8, 0x4, 0xee01}, {0x8, 0x0, r3}], {0x10, 0x1}, {0x20, 0x6}}, 0x64, 0x1) syz_open_dev$vcsa(&(0x7f0000000240), 0x3, 0x202100) preadv(0xffffffffffffffff, 0x0, 0x0, 0xd9f, 0x0) write$tcp_congestion(0xffffffffffffffff, &(0x7f00000001c0)='dctcp\x00', 0x6) ioctl$PERF_EVENT_IOC_QUERY_BPF(0xffffffffffffffff, 0xc008240a, &(0x7f00000002c0)={0x2, 0x0, [0x0, 0x0]}) 05:37:34 executing program 1: r0 = syz_init_net_socket$nfc_llcp(0x27, 0x3, 0x1) bind$nfc_llcp(r0, &(0x7f0000000080)={0x27, 0x0, 0x0, 0x0, 0x0, 0x0, "55c66707d438d4952c2bead8f2b4f36a26dcae4096cb64e44f853ead5e19874e14b5faa84fe2ec2d68f3ca3c16caf152cbf94d0f0d19252db2c31749282bdb"}, 0x60) close(r0) getsockopt$nfc_llcp(r0, 0x118, 0x0, &(0x7f0000000180)=""/229, 0xe5) r1 = openat$full(0xffffffffffffff9c, &(0x7f0000000040), 0x2c180, 0x0) bind$nfc_llcp(r1, &(0x7f0000000100)={0x27, 0x1, 0x2, 0x2, 0x38, 0x8, "c41a9b8c061250fcdcd8bf8af96812d3b07b2908bc8c11b6c96cee97e3ed054a2d708e7dcb967ac09f698f59aad329df05d303520aae0852bd98c2db72806a", 0x1f}, 0x60) 05:37:34 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000040)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:34 executing program 1: r0 = getpid() ptrace$peek(0xffffffffffffffff, r0, &(0x7f0000000040)) perf_event_open(&(0x7f0000000080)={0x3, 0x80, 0x6, 0x7, 0x9, 0x0, 0x0, 0x0, 0x921, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, @perf_config_ext={0x3f, 0x3}, 0x0, 0x402, 0x80000000, 0x0, 0x0, 0x0, 0x1000}, r0, 0x0, 0xffffffffffffffff, 0x0) [ 615.045721] ntfs: (device loop3): read_ntfs_boot_sector(): Primary boot sector is invalid. [ 615.076902] ntfs: (device loop3): read_ntfs_boot_sector(): Mount option errors=recover not used. Aborting without trying to recover. 05:37:34 executing program 4: perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x16308, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_config_ext}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) r0 = socket$inet6(0xa, 0x400000000001, 0x0) close(r0) r1 = socket$inet6_sctp(0xa, 0x801, 0x84) setsockopt$inet_sctp_SCTP_SOCKOPT_BINDX_ADD(r1, 0x84, 0x64, &(0x7f0000cf6fe4)=[@in6={0xa, 0x4e23, 0x0, @loopback}], 0x1c) connect$inet6(r1, &(0x7f0000000080)={0xa, 0x4e23, 0x0, @loopback}, 0x1c) sendto$inet6(r0, 0x0, 0x0, 0x0, 0x0, 0x0) r2 = open(&(0x7f0000000080)='./bus\x00', 0x141042, 0x0) ioctl$sock_ipv6_tunnel_SIOCCHG6RD(r2, 0x89fb, &(0x7f0000000040)={'ip6tnl0\x00', &(0x7f00000000c0)={'syztnl0\x00', 0x0, 0x29, 0x0, 0x7, 0x8, 0x16, @empty, @private2={0xfc, 0x2, '\x00', 0x1}, 0x10, 0x1, 0x2, 0x2}}) getsockopt$sock_linger(0xffffffffffffffff, 0x1, 0xd, 0x0, 0x0) setsockopt$inet_sctp6_SCTP_STREAM_SCHEDULER(r1, 0x84, 0x7b, &(0x7f0000000000)={0x0, 0x2}, 0x8) bind$inet6(0xffffffffffffffff, 0x0, 0x0) ftruncate(r2, 0x200002) sendfile(r0, r2, 0x0, 0x80001d00c0d0) 05:37:34 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f0000000040)=@req={0x9, 0xd3d, 0x2, 0x1}, 0x10) bind$tipc(r0, 0x0, 0x0) r1 = socket(0x1e, 0x4, 0x0) r2 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r2, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r2, 0x0, 0x0) dup2(r1, r2) setsockopt$TIPC_GROUP_JOIN(r1, 0x10f, 0x87, &(0x7f0000000800)={0x41, 0x0, 0x2}, 0x10) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) r3 = openat$ubi_ctrl(0xffffffffffffff9c, &(0x7f00000007c0), 0x8800, 0x0) getsockopt$inet_IP_XFRM_POLICY(r3, 0x0, 0x11, &(0x7f00000001c0)={{{@in6=@private1, @in=@dev}}, {{@in6=@loopback}, 0x0, @in6=@ipv4={""/10, ""/2, @loopback}}}, &(0x7f00000002c0)=0xea) getpeername$packet(r0, &(0x7f0000000080)={0x11, 0x0, 0x0, 0x1, 0x0, 0x6, @remote}, &(0x7f0000000100)=0x14) r5 = socket(0x1e, 0x4, 0x0) setsockopt$TIPC_GROUP_LEAVE(r5, 0x10f, 0x88) sendmsg$tipc(r5, &(0x7f0000000780)={&(0x7f0000000300)=@name={0x1e, 0x2, 0x1, {{0x43, 0x1}}}, 0x10, &(0x7f00000006c0)=[{&(0x7f0000000340)="127016eddbee1851a7d672666cd99b21237553207be5833b24c1ceb14c4fe7c4a98cc421f03e283a43c5c6f723e7a1139841dfe07e6b2849b5a16a800693b0de8a11fcd6d00b9d68889fbfbe77dcacbb196321ed8f83a29d0cc13831425be008992ac779fd6ac2690d606cfd2c0029314f728601609773f60d8f400e854ec0b7549117ff21451b5233e789be5bff97d08827c33de6880c6be03f7bfd3e2137d3", 0xa0}, {&(0x7f0000000400)="088f8d38537325e882f55afea099a073811e8157090b06798516ab501b8472f04d9151bc5f3a4209c289d159507a282f61d239ce3d493bbc61500c4137febbd49327a3c897b2c475c278d676ce6fba980a58ed17f2dcb84ee69392cb90c035a354276a53d18d489dcf13", 0x6a}, {&(0x7f00000004c0)="3b61a5c63cd85f5c44306571f679840066dae0edc8115aff33143fc0aadbf52fa84db7f01b9a90e2e49fd633b4d91b08", 0x30}, {&(0x7f0000000500)="08a6d9ef580f2e80628cdfcdbe391dd7a5d49ba4027f9e62a8940b18fe49102cd64658a51e082fd9a2a907655e782f4355d12984f9ff1d61f337e72222fd50bb37ed6f8305e28c80b6082db11cba05bf4154913b6027925c423ab4c671b6d51d92ccc47c42e43bad3756b80e7b2b5b2470734f75173e39d643f63b99ffca10bbd52b8e3d719432", 0x87}, {&(0x7f00000005c0)="19b20408599967bee4a327787a6e59db232cf08fd01c74385ff9a3cb4403bbf57cf33fddd7b4518a14d85f4e565c45164cb3189e90ff6f9c219f89b91aee3039cdec38bbc07604b06301270caee389b66e0a791c267e97beb858ab348b588c07be8d21ea4c3dbab03688255bdd028ac8a765940311361e8693f6554b83478e6aedd84eaa4f87c4d329d385790f882ff48c7fe02e4f0bb393edec4bd8f204cf82302d3b749c30a7bbc994c9dfd7e025f290cc0eea3c503393f964c8bfc51584dad8fbba64dc313aa316b839a74c0c874ab80b3c2eb7dc8f4cf1fac3ffe751d31fe66fdfd5d7c2ac156e6188041c6cef9336c1a8a6f2d521db36b98378ab", 0xfd}], 0x5, &(0x7f0000000740)="6de97250111b6c9f854b00d4404eb3bdd106961f58bbacd937d70e0238ca5972", 0x20, 0x1}, 0x4008800) setsockopt$packet_tx_ring(r5, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r5, 0x0, 0x0) ioctl$sock_inet6_SIOCADDRT(r5, 0x890b, &(0x7f0000000140)={@loopback, @local, @loopback, 0xa53, 0x6, 0x3f, 0x300, 0x100000000, 0x400600ca, r4}) setsockopt$TIPC_GROUP_LEAVE(r5, 0x10f, 0x88) [ 615.160554] ntfs: (device loop3): ntfs_fill_super(): Not an NTFS volume. 05:37:34 executing program 0: setsockopt$packet_tx_ring(0xffffffffffffffff, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) setsockopt$packet_rx_ring(0xffffffffffffffff, 0x107, 0x5, &(0x7f0000000400)=@req3={0x0, 0xab24, 0x80000000, 0x9, 0x96, 0x9, 0x1}, 0x1c) sendmsg$TIPC_CMD_ENABLE_BEARER(0xffffffffffffffff, &(0x7f0000000180)={&(0x7f0000000080)={0x10, 0x0, 0x0, 0x2000}, 0xc, &(0x7f0000000140)={&(0x7f0000000100)={0x3c, 0x0, 0x4, 0x70bd27, 0x25dfdbfb, {{}, {}, {0x20, 0x17, {0x15, 0x1, @l2={'ib', 0x3a, 'veth1_to_bond\x00'}}}}, ["", ""]}, 0x3c}, 0x1, 0x0, 0x0, 0x14}, 0x0) bind$tipc(0xffffffffffffffff, 0x0, 0x0) sendmsg$tipc(0xffffffffffffffff, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) r0 = socket(0x1e, 0x4, 0x0) r1 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r1, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r1, 0x0, 0x0) dup2(r0, r1) sendmsg$TIPC_CMD_SHOW_PORTS(r0, &(0x7f00000003c0)={&(0x7f0000000300)={0x10, 0x0, 0x0, 0x10000000}, 0xc, &(0x7f0000000380)={&(0x7f0000000340)={0x1c, 0x0, 0x20, 0x70bd27, 0x25dfdbfb, {}, ["", "", ""]}, 0x1c}, 0x1, 0x0, 0x0, 0x20000000}, 0x800) r2 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x84099, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0xa) r3 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r3, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r2, 0x2405, r3) write$binfmt_script(r2, &(0x7f00000001c0)={'#! ', './file0', [{0x20, 'veth1_to_bond\x00'}, {0x20, '['}, {0x20, 'veth1_to_bond\x00'}, {0x20, 'ib'}, {0x20, 'ib'}, {0x20, 'veth1_to_bond\x00'}], 0xa, "f595637a2ab540b5e85f87c396ce71480ebfd47c13d3096b00b3166c7fa1fb17c9b1396356d92406c4340703d9a1a6ad01f095db9e4ddf0fe4e3f71ab2cf3903b90363d3a3dd30962daf2f558df2974996df7cf3757a8632d92fdffd7f7de794d7ffdcbbc37feba7bffadb05b3d8bc9c93e70368ba80a732b9dc7c539126e68ffc13b62021e2008ae4ad719e3580994284982e843020d47c1d11a8f860d2e96d74912d29728182fac3210abc22d148d78ef60fa43f3e2de89c76fe5d4885582d86df640b451f5a497a39c29f1be82c78ad9472b099da4871629d407c277efce9d257447b37b1b2a8d9d9374aba5c861e3636577073f6a51e5c"}, 0x139) fcntl$notify(0xffffffffffffffff, 0x402, 0x10) 05:37:34 executing program 4: timer_create(0x0, &(0x7f0000066000), &(0x7f00009b1ffc)) fsetxattr$security_ima(0xffffffffffffffff, 0x0, 0x0, 0xf, 0x0) write$P9_RXATTRCREATE(0xffffffffffffffff, &(0x7f0000000040)={0x7, 0x21, 0x1}, 0x7) prlimit64(0x0, 0xe, &(0x7f0000000280)={0x9, 0x8d}, 0x0) sched_setattr(0x0, &(0x7f0000000140)={0x38, 0x2, 0x0, 0x0, 0x9}, 0x0) perf_event_open(&(0x7f0000000080)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x317d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) syz_mount_image$udf(&(0x7f0000000000), &(0x7f0000000100)='./file0\x00', 0x0, 0xe, &(0x7f0000000200)=[{&(0x7f0000010000)='\x00BEA01', 0x6, 0x8000}, {&(0x7f0000010100)="004e535230330100"/22, 0x16, 0x8800}, {&(0x7f0000010300)="0100030012000100cbf1f001600000000100000000000000084c696e757855444600000000000000000000000000000000000000000000090100010003000300010000000100000008313233343536373831323334353637384c696e75785544460000", 0x63, 0xc000}, {&(0x7f0000010400)="0000000000000019004f53544120436f6d7072657373656420556e69636f646500000000000000000000000000000000000000000000000000000000000000000000000000000000004f53544120436f6d7072657373656420556e69636f64650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a4c696e7578206d6b756466667300000000000000000004050000000000007810e4070913142c1643092d002a4c696e757820554446465300000000000000000000000405", 0xde, 0xc0c0}, {&(0x7f0000010500)="00000000000000000100000000000000000000000000000000000000000000000600030061000100fd10e8016100000002000000004f53544120436f6d7072657373656420556e69636f646500000000000000000000000000000000000000000000000000000000000000000000000000000000084c696e7578554446", 0x7d, 0xc1e0}, {&(0x7f0000010600)="000000000000000000000000000000000000000900020000002a4f5354412055444620436f6d706c69616e74000000000102000000000000000200002000000000000000000000004000000001000000002a4c696e757820554446465300000000000000000000000405", 0x6a, 0xc2c0}, {&(0x7f0000010700)="00000000000000000000000000000000004000008000000002400000002a554446205370617261626c6520506172746974696f6e0102040500000000010000002000020038010000a0000000e0070000000000000000000000000000000000000500030033000100cd0af001620000000500000001000000002b4e535230330000000000000000000000000000000000000000000000000000000000000000000002", 0xa2, 0xc3a0}, {&(0x7f0000010800)="0000000000000000000000000000000000000000000000000300000020050000a0020000002a4c696e757820554446465300000000000000000000000405", 0x3e, 0xc4a0}, {&(0x7f0000010d00), 0x0, 0x10000}, {&(0x7f0000000140)="02000300fe0001008f77f00100010000004000006000000000400000c007", 0x1e, 0x20000}, {&(0x7f0000011200)="080103002e000100c059080000000000a002000054000000fefffffffe", 0x1d, 0xa4000}, {&(0x7f0000011300)="000103006e0001003a1ef001200000007810e4070913142c1643092d0300030001000000010000000000000000000000004f53544120436f6d7072657373656420556e69636f646500000000000000000000000000000000000000000000000000000000000000000000000000000000084c696e7578554446", 0x79, 0xa8000}, {&(0x7f0000011400)="00000000000000000000000000000009004f53544120436f6d7072657373656420556e69636f646500000000000000000000000000000000000000000000000000000000000000000000000000000000084c696e7578554446000000000000000000000000000000000000000000000908436f707972696768740000000000000000000000000000000000000000000a084162737472616374000000000000000000000000000000000000000000000900020000600000000000000000000000002a4f5354412055444620436f6d706c69616e74000000000102000000000000000000000000000000000000000000000002000040", 0xf5, 0xa80e0}, {&(0x7f0000011700)="0a010300ed000100c6e7d0016000000000000000040000000100000400000000000003000000000000000000a53c000002000000000000000801000000000000080100000000000000000000000000000010e4070913122c1643092d0010e4070913122c170936350010e4070913122c1643092d0010e4070913122c1709363501000000000000000000000000000000000000000000000000000000000000000000000000000000002a4c696e75782055444646530000000000000000000000040500000000000000000000000000000000000008010000010103008500010033d418006000000001000a0000020000600000000000000000000000000000000101030087000100e81d1c0060000000010002060002000061000000000000001000000000000866696c6530010103009e0001001ffd1c0060000000010000060002000067000000000000001300000000000866696c6531010103000900010097f01c0060000000010000060002000068000000000000001400000000000866696c65320101030028000100c3e31c0060000000010000060002000068000000000000001500000000000866696c653301010300e4000100b7a72000600000000100000a000200007b000000000000001600000000000866696c652e636f6c64", 0x1e0, 0xb0000}], 0x0, &(0x7f0000000180)=ANY=[@ANYBLOB="007beec126899e340c6ccb9f2229da59c6a414b0e2abf09f5399de0e231fbc20dd4625cbc46bee0e6fb276c3aa2e7b92902984e66dafbbcc7a8cd96a8dffffee7eee2beafe8df6bd8317dcda1c4159e2676476e87a09297762e8b253"]) chdir(0x0) r0 = open(&(0x7f0000000200)='./bus\x00', 0x141042, 0x0) write$UHID_INPUT(r0, &(0x7f0000000980), 0x10a9) bind$inet6(0xffffffffffffffff, &(0x7f0000fa0fe4)={0xa, 0x4e20, 0x0, @loopback}, 0x1c) ftruncate(0xffffffffffffffff, 0x80006) 05:37:35 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req={0x4, 0xc5d, 0x10003, 0x6}, 0xfffffca7) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:35 executing program 0: r0 = socket(0x2ab1651069596d7d, 0x5, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000002c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) r1 = socket(0x1e, 0x4, 0x0) r2 = socket(0x1e, 0x4, 0x0) r3 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r3, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r3, 0x0, 0x0) sendto$inet(0xffffffffffffffff, 0x0, 0x10b, 0x200007fe, &(0x7f0000000100)={0x2, 0x10004e23, @dev={0xac, 0x14, 0x14, 0xa}}, 0x10) sendto$inet(0xffffffffffffffff, &(0x7f0000d7cfcb), 0xffffffffffffffef, 0x58f7, 0x0, 0x53) ioctl$sock_SIOCSIFVLAN_ADD_VLAN_CMD(0xffffffffffffffff, 0x8983, &(0x7f0000000340)={0x0, 'gretap0\x00', {0x3}}) setsockopt$TIPC_GROUP_JOIN(r3, 0x10f, 0x87, &(0x7f0000000280)={0x41, 0x4, 0x2}, 0x10) setsockopt$packet_tx_ring(r2, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r2, 0x0, 0x0) dup2(r1, r2) mmap(&(0x7f0000ff9000/0x4000)=nil, 0x4000, 0x1000008, 0x10, r3, 0xf6d2f000) ioctl$BTRFS_IOC_WAIT_SYNC(r3, 0x40089416, &(0x7f0000000300)) ioctl$sock_ipv4_tunnel_SIOCADDTUNNEL(r0, 0x89f1, &(0x7f0000000080)={'syztnl0\x00', &(0x7f0000000100)=ANY=[@ANYBLOB='syztnl1\x00\x00\x00\x00\x00\x00\x00\x00\x00', @ANYRES32=0x0, @ANYBLOB="07000010000003ff000000074bb7006c00640000030490787f0000eaac1e00010166455ea80813aa6500000001ffffffff0000dd3d64010100000001ffac1e000100000002ac1414bb000000010a01010100000007000000000000001f000717a6e000000100000000ac1414aa00"/120]}) sendmsg$nl_route_sched(r2, &(0x7f0000000240)={&(0x7f0000000040)={0x10, 0x0, 0x0, 0xe0000008}, 0xc, &(0x7f0000000200)={&(0x7f00000001c0)=@gettclass={0x24, 0x2a, 0x8, 0x70bd27, 0x25dfdbfe, {0x0, 0x0, 0x0, r4, {0xc, 0xe}, {0x2, 0xfff3}, {0x4, 0x5}}, [""]}, 0x24}, 0x1, 0x0, 0x0, 0x11}, 0x10) 05:37:35 executing program 4: r0 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc75f, 0x0, @perf_bp={0x0}, 0x10227}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) getpid() bpf$ITER_CREATE(0x21, 0x0, 0x0) sendmsg$kcm(0xffffffffffffffff, &(0x7f0000000d00)={&(0x7f0000000240)=@ax25={{0x3, @null}, [@null, @default, @null, @default, @netrom={0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x0, 0x0}, @rose={0xbb, 0xbb, 0xbb, 0x1, 0x0}, @netrom={0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x0, 0x0}, @default]}, 0x80, &(0x7f0000000680)=[{0x0}, {&(0x7f0000000380)="ca3744608dddfa8a53921f53daa3d5e3e3d0d0b27ab0cbe07a68d7dd9c282085ced40cc9fa5834b58a63702af61399600f046b7a95f2c6cf6d09c96d4b5561565b9b82c618f9fcd42f9c791003004245b49827fbad3c34a86681ef526af3ef43b37f887f71f2835706", 0x69}, {&(0x7f0000000400)="5c38af4b427969b8242af70f7d920e85fa41", 0x12}, {&(0x7f0000000440)="a4b03241348347b2eca181f49283500c320777e751ed70538e7077b62c651e0c7583b6e281bbe77eadcf73d939b51daa1c03f4ade1ea16e3356af85bc1e11b", 0x3f}, {&(0x7f00000004c0)="51940f889475200008bcfe42325862c5ee2fbeca7a1c65e6e45e605b2bf9b03756868f677b9e0cb8d89675c8730341943be42ae8f68e2c9588932084763d04e4a4222b5f4d627e3d783bfc33757b69be6e87ddc7e8737e089c22a6b47f3deae2c12b411197c7cf1e", 0x68}, {&(0x7f0000000580)}, {0x0}], 0x7, 0x0, 0x5f0}, 0x20008002) mremap(&(0x7f0000186000/0x4000)=nil, 0x4000, 0x2000, 0x0, &(0x7f00007a3000/0x2000)=nil) mprotect(&(0x7f0000000000/0x800000)=nil, 0x800000, 0x2) r1 = gettid() fchown(r0, 0xee00, 0x0) lsetxattr$trusted_overlay_redirect(&(0x7f0000000140)='./file0\x00', &(0x7f0000000180), &(0x7f00000001c0)='./file0\x00', 0x8, 0x0) process_vm_writev(r1, &(0x7f0000c22000)=[{&(0x7f000034afa4)=""/1, 0x1f80}], 0x3de, &(0x7f0000c22fa0)=[{&(0x7f0000000040)=""/15, 0x2d77744}], 0x30b, 0x0) 05:37:35 executing program 1: r0 = getpgid(0x0) r1 = perf_event_open(&(0x7f0000000700)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, @perf_bp={0x0}}, r0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) ppoll(0x0, 0x0, 0x0, 0x0, 0x0) r2 = socket$nl_netfilter(0x10, 0x3, 0xc) r3 = dup(r2) sendmsg$IPSET_CMD_CREATE(r3, &(0x7f0000000240)={0x0, 0x0, &(0x7f0000000000)={&(0x7f00000003c0)={0x4c, 0x2, 0x6, 0x5, 0x0, 0xf0ffff, {}, [@IPSET_ATTR_PROTOCOL={0x5, 0x1, 0x6}, @IPSET_ATTR_FAMILY={0x5, 0x5, 0x2}, @IPSET_ATTR_SETNAME={0x9, 0x2, 'syz0\x00'}, @IPSET_ATTR_REVISION={0x5}, @IPSET_ATTR_TYPENAME={0x11, 0x3, 'hash:net,net\x00'}]}, 0x4c}}, 0x0) getsockopt$sock_cred(0xffffffffffffffff, 0x1, 0x11, &(0x7f0000caaffb)={0x0, 0x0, 0x0}, &(0x7f0000cab000)=0xc) setregid(0x0, r4) r5 = gettid() rt_sigqueueinfo(r5, 0x3c, &(0x7f0000000040)) recvmsg$unix(r3, &(0x7f0000006280)={0x0, 0x0, &(0x7f0000006180)=[{&(0x7f0000005e40)=""/18, 0x12}, {&(0x7f0000005e80)=""/135, 0x87}, {&(0x7f0000005f40)=""/232, 0xe8}, {&(0x7f0000006040)=""/138, 0x8a}, {&(0x7f0000006100)=""/36, 0x24}, {&(0x7f0000006140)=""/23, 0x17}], 0x6, &(0x7f0000006200)=[@rights={{0x28, 0x1, 0x1, [0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]}}, @rights={{0x14, 0x1, 0x1, [0xffffffffffffffff]}}, @cred={{0x1c, 0x1, 0x2, {0x0, 0x0, 0x0}}}], 0x60}, 0x43) r7 = syz_open_dev$video(&(0x7f0000008c00), 0x3, 0x42a40) r8 = syz_open_dev$dmmidi(&(0x7f0000008c40), 0x200, 0x10080) r9 = syz_mount_image$nfs4(&(0x7f0000008c80), &(0x7f0000008cc0)='./file0\x00', 0x2, 0x7, &(0x7f000000a080)=[{&(0x7f0000008d00)="8715f1e09cf5c0e567ed4d66c67752345ca4c5beb222598f3b0d4b0dc5c6ce1b803838deddaa290bdb2a4bf4d1d9fefff2afead84c8e27c0fa057f28dc84799712157dd8faf70176a5c4079d1d1b283ee6db0c4ca528c0532b994adedad4efff62de9cc3212c44b3245880017eafd0a21f549d04b3a09f0c0c523a4e3c53e6b8f810a5c7c6982ae6f7584106cbf8eaecca580d7fdef489e1e846e5d9f4fca51f4d75b7ce28e7046a17bed824f9c1df48e175ba5e640f30a2eb17bcadcd729dedda4c4e3e0602e433060e2778d61f4dd68df7175b3c2e98d160cb9820458ac18a070e0ff5e9f3af28973ecad14f4dd5923d48fd6c3dfc9f61fb61489bf81802a52b05dba3100306eeba617e44da4433cf734119d4d1d39b740126611de3adf6f3b59f7825e7128b95300e8beb620bca9ff2a5222b8f6411c612b6ffc63d7baa11cbf39e0d94b7fbe202a91952d40261117cd5e58cf10e24279cff58ee85f21b49f635b32dce81f0829d6cae3c2acf3d47685910154c9d47adcc65e379f51ae5766462ee8a2594a8741f3aef4777070c6909cf19d77696bfbc5a42ae0aac860f084368ab36516a3dab6b2bb5000910ef3fbf634eff4a194b25c3a42fd418d042f01d08c18d07269db2836fc4b42b1b64198022fa2ea20a36636a83e5804123ebe40188c4db18d14b72bb6eb685b0905804921f5dade63569c1ec513282353b1e7d3a91de9ba99aa99cab05f4fae4f5f2860bb3da6a4abcdc05796f949ba651228ae453a9d3026a70d6c038223ada89c9dd40e61d77757a1e7ff6af60d9087be43295f50ef7c32d77ab5f634b820586ecfdde131672eb192ba84a3914bda899bee8266db58281b2f48c14e9651e65d72778edbbf4655027102b8fe8797402f9ebbe7fa137edbf76a823d8175ab452f31ad8264f3a3a184d55a37a9e62cccbf09f1e7e87a713cf780d658062e0cc25d4c4f5e44fb4505f11be6945b50a8fd5f90f521d5b26702b8ecd6f7d43a5ad83e9726144bb0d752ea732aa04bdbe010711d45c2926eac1c7ccf12dbbab89b0782c0fb53c0f08a2d0a1b333b8a048aa8255b0a67949ee8595ea9f8180c5762c44158400f3f5f042aada3c94b367b3c26d82e3cdd259f1e06d2ff0e213a1e76bbbf427b081fcafe5029b3cd0a1595968c59b14d0ec4fdc066a25a3b6bec181af26dd0d217a92614bf4638f720ca8ff439a082c1702bab62776f108e609c87def02db69312a3f4287551c26f6b3750749cc5ccbdc1765e1dc78dcbc413a1bd4dc7fcd99dd64a1ccc751d13dbbd9d8de9730fc05e5cbc55ccff2132f574c93f037ce2d021bf464149922f49faa64d85065be411dba2b977d83d24f945bd5f4f2355e134078ab2d71730d733c99d560bd9bc76960d7c333453209d61b52e4f4053508137ade2b42fe605887884b7069b635368835531ee846590d0d4d1f5f6ea152bb72946f09c748389ee00f6225af998ffc8605a208b482f769488dc004771cdeded19b64f0cd8893eba3925a66f922298ea6d8293846d7c8b74d0df73f58df09f81ea0a6f049fdc23bd4e68f08f044b6eb455b47b2582d0be69dff3a7801a3e3398c8e38cadc2401e352f782559e64244024664e85d31344f2c6f3e72ed5b0e2d295390bc334dd5757975bb3f09af4dd5864002ed3729990f4c97c9d1f245ae41e1cfae4f9e23748e81ebc7a91615199d08d162889aae6964b1681b393c9f7b63de6ba0b7620fdceabe37b23444f68f42f4ad1c01ae31b30e9b69615b02f15108fe1418626fe6d5d7f5e7995f047c0d126a732f965d256cdd865ec09ae5136dc0afb7e19a2d338a56bcb7692d46afd774ccac4b1cb2f3874c76c508da6cb5d1d796fe74a5d1529b19f9cf3927dc27823f0b22dc48ada8e4f60dcd14e06efaa9a559e5c153841e8a76a6b81c6988802615ea8c419f0dece92acdb5567547f1d88cc6f454e3ca29bd8e62332b2a22cc310661c596191bcbd9231d3350b233c091f1968d4e74a35b915e02e979540883e757ee666255b9f3b477cfa4e197471491bbb65857bc134be8ef3843c89461e68f4ec4b34fc9eb009ae39f004c5420f50537539bf4068cb313bb3720d34299b12c41209c3d17158fc75aa6724b53f192ce8c2c9283661e6aa6c02277170ed8fc7460d95c70d4b83ce6071afb6c629e17e8fff28c3265d796b78c2780f50e2ffb7f41e28b5aab020560bf4ff264c87c79f5c8a8c4370df3ca345e7030525ee63662586da47ab7ea2483387baeed88783f781376a905807883be7d6e92842b7bd25e1238af17bfd7f9af5b4b78ae0343adbbed3f317cde139176d72bc3d7b17ee0f1a0ed1114e02bf9a052074e3372abe0aa1e101814a2f1a50a836c42e9b05456598c6f1910d2d21fd7063ed26d6ed1f9136931e8d566f5862771b6389560ab828346016ad38d4ee40a52bf2beb48ae902a1817b83ffd9c3b2ed0031735963a7349178db8845137b102302a6593b0ad97de5594c1586064eaf540d051b144f33f6844cc2f7fba8fb779f367fc491944773e5630779c1f083cbb67e2d2948277b7b4f1d15504cd14310b78e432ba31adab5f4dbd8332ccaadee01ee6f236b9befbbcfa65c4c5d53fa6d8cfb7e19b6550473f607c8606ea9eb00c8910150df1f48551e296a64f52b5e56144dc2f2d693ed9930dca2a4944e362406c02b4a5f4b31b1278898a5e3fd19addedac34ae346740b8989f51c6f642c7039a1140661f9a3e2fb530fc60b24be69b0850712358bafe0bb362307ca4f16c967dce4b4bf5ff081f0df58387d353eea0f5271caded62741f4a4a664eadb6fc626c95ea560e04ef968bedbdc15bb9655e3c1363c96956cc74df94dc3d27acc91f051993b9ac3484ffbccbf71702641962b4e5b1f8f85994eb1ead23db82f67896a2472080aaffc3c5f3197031871f93105a782f36c5778cef089dd55b918027fc3299b77543f2d9ec8fe9ea9a485c723996912246284c8d77e98ce92ae44fe676fb46dee06451c4a808bcfd6acf1774c727848c779c19ed85446ec91c16f97d6188c5d13d4d54ae2b758924d54b4a5411906e777d126ea8e3bb3cc08841fa05f95e2dfe83847ad999263d1a09a12ac5ff8f490ec8ee5f1241966e467ce945fa53f99ae49c9f2b1910446289e0449e90b7e1f66c5e8f93bae55e4f72519b64cac5dcb90ede1cde5414fc6b6f567aa7574e79aac95d01febefdb6a40250b2f0b3f8ba7f0d241dcfb058e3e8b5af1f4783df4de787029ba557fe31a5916e1c888b8b28ed8b22948aeceafc7980b11a7700cb55ce32693f4b29ebddab497dddb23e732361adb56148b0947cb112269352825816983d7812ebd12f7141425aff3341b319f852674957a4d244190c93aa9bb9e9def79fe834eb801ad880590c630bd2ecba0a191eff53cedf569973862057f4e655cb7012dae8b3fbe908bbf1702a3a72f88295212c1e2ba349800295c7f8c2d5b13fb953d3dbba4a15bc33f4a861374f1f9456f0cd63a0f4d84cad9932ceb73f2028c85ddb78be16ea6eabded3b6ef0cca96ac6101aaa6337ed89da2233642a862015743456d96ecb45e32659931aaf16fba10e8e7301e743ea304b49c999bcc593b9255ef1bcb73bb14555a907bee019d99237cf193b465e3b52d64b1fb2980b2359b7885089a272562b83e6816e96d513024407e1ee1b5d98b7ca52743107a96973b171c3dcd902948ee49d36c619771aa51d9bca7db8deb786844cf189606a8cbe15ac0de42c37f67f48f9a13325c20ff884ae808a1832458c1d01c062c2d64d930ee867c32c77d2bf50516484427801d30c405a4c533e5c393044df253c1141ad8bd7da986152022aae6e5be6fce1c80202db59873b2f70317031c2d385ed39c1bf31abae8e5639158c492a0203ff4f15615a279a433901f33f71937c87f6b4203cecfba8e61703f60ef9c293f90c65094ebbe1f06bd19ce67d3806f213a4a6e82ff380981b4d2752ffe0a96ed95673dd83171082c1fd644f4a9f93133cff809e7b300bc8912a56606c8d97cb10639b103b846d91d968294b932d5cf6563182a8d263f3d1c9859dbdc2fa5eb4bdaf993bb48d6dc86a178eef7fd91573bbf8f08bced7f14a60d338cd674dd5a93cef423ee85d5adb93f3d00191f069aee982a6368b78601f48f2e7dc69f925a794f9f129ea2374700bf888f529857a8a06acfbd9553afd6d44685282e92379fa56db966822215227bda2e2cb655829f983eb5ac78551945b35c43400f7a0eef09e258fcab0b46d98a4f8ed727891c9796860b750430fe66658d3c5c00b41153aac101f0633fecfb5dd7e172d528d86efee0d07fb478c768591c695dc30044b7be30de915f4062e90e59f1701e52bcb1d61dbe2f8ba3ba3f1f168e8213d850d84e0e56a46af96db6e007eb33083a0f2c25230790f44915ddc5d1e4b4fa426480c0c52d290374564da14b4b6e9078c931a795168be9aa64a24041b5de4998797f58d948a275ae81337a99b250e1987006db46048f9c738e7fc4ee91f53e8125e0083fc84ea3d6d667c7ce0a9b12fdd2b2d50fe6ca39badff4d739f876d925f4c93012151197420b7b64cfceed6cedbadd965e39aac142f057e5fb3212bc5068c4fbc93e3de7505dbac8e7a505202b803b1c7ecb99db317789a1077b73dc3dd150cf16933c3909e5c3aa4b50df505eb67524cedbeabde0e963007dfa8c59bad7482d0b6100ad7a113b2b501f8050ef2d7d1681dcea8469fb4bde61fb5a34a102ecf1db0f14353e1d6e62bf25c2793d002957a9406a733aa3fc2850374c22a4533ebceb83ac8cb2682c9adf904c988ab185bb0b23a0284b8dd7f273b06b5c9b0fb6c71ed2eecd6aa290b21696ba8832d9bd3f50d33065866b1a561fffc929cb15310d05070837d35cac0657835b2804408b43106a5564d313e2f021a9e6cab8d91e9dcea39213008766965018f0746a8d3078bf1ac20f1656a188984ca5624a385e9c8a72282096f0a99722fb5b21b2eb575d162c96f57d624249f7656b94b286097aab915a3c128878393986ce1c33e671cb8ed4289fe8e0ba1a2f737f7197ee6be2ee355e0cc303653d2eaab0d1ec4a7f86e2b7e965b6bfd4876ea02f0a6fce376f7f7e87e5cb43858b5d4922d351389962fd40135533a482ebaf0b36768a80baea59a9b39a503601c409c31c750b03522f9d6b3815442ac138f43d635ced426fc689ac82f08b349c31e3f3cece195ce5c4853e6e928799b1a74098aa82d91b17bb96054e29c34d4b124152f7f328e73a5414a5fb515db1127dfb1c8dad9c85014060397dd9cb10b53e3b803a6f83fa80b3a45a9d3c77b2d7b84c3e5288edd9e609c16190708059d13b4af93e3dd24103a4910a1e9bbf16c598392839dc5792f3971554d07ddbd52a105482785967655b095165cb151c076fb231a06ff400fd1693d0a06b7aab544579d91ce05d2c7574ba1c88f6a0fd2ae9607f4157114aa13648b520af39c37178bc3c63c04a8a9adab62b0959b96d54f48cf6d11560a4a207bff639891d3b074ede3c8e6b853cffa589b634579483c3368fbe962cc74c53305d90ae08a2367f462158849e428a6a58e1937430fcebc702fe3d4e387fc0f65eb0d3a973acbfe5fc70dd0311d792f262b0fbf07888ddbf65ab599d759c5667a415d7b122adc98a4bf21e47b5085f22401c740051b957a30328eea6ecd57f4ab19f869317f7df0874fe4f06b695629b1936ecf1c726dbaaafe12b1412f943035e18aba941f1e85b2d1d1b84503e2cd", 0x1000, 0x2}, {&(0x7f0000009d00)="1bed54bba3b5d313285f329bcf378dbac72adbfdb2214ca813165d5be92af81d14cecedb67e7f2a958b120f2c44b99d91a6c21c6bda6319f", 0x38, 0x7}, {&(0x7f0000009d40)="cac05bb6011a80872d08415764785456c41e58e2e13c4ed5947266d86842ed9620df5217e41bbf0037398e283bf14312a97e900652a7f781911cbda23157a03bf620b06b4c1778f0e10c1c9c8501b6a0c3071525037501189b86a694bf0e6feb74", 0x61, 0xf3}, {&(0x7f0000009dc0)="deccc5aaf9ac8bedf736f7e660280afa88741811fd666c89ac3403f7194924abee8d9b8f700dcfde3d4f72cbd64f632550f46ddf5259f8190bfb586e9899fb07a56bf4c2b1b9a6426bce14423073be07d5762be970aafa30ad918399921ecc32e23463d6f4494b436fd10dbf4aae13bc339a7744a3fe08e743af9fe3dbb02a4673b27474", 0x84, 0x1}, {&(0x7f0000009e80)="6e4bc517b992fb3194ae068a4573f0b3495a6caacf03913b145c9f1e1c6260ff299f17fe82b9d76ec129a5173a197bfce73b8ee466dca4e26ff9974c6536f0a8b22092c78f842ff1cb5c53e5581497fa68180b2ba58048f43b4a3c730eab7432881c219a8eb77f4d1a9d4c751350e59215cb0c63bb01a6f857a0429ce801", 0x7e, 0x1}, {&(0x7f0000009f00)="dd7a2f0b2341e9bf55f3205ab2d5ed3e00617ef99b20ce61ebc1bc4cdb42f0ca3a08c4df9f3fca3f0e20235653d35fc8105e2e05191d5858e118cc898c11c92233b42afb4b3f949c9d2068ec9cf6da384933f23d144d439ef0ce75fee91810f134aa7569f28ac37c76fdbb7b8da1a2bfd62c03a9c321ef9036279f0a4d32dadcdae18291e75eeda7b83b34bf9ee0f54c9a1cb5c5b3cc8c3c1744a8f84d3c3ad92f42a8e7ae94bb0c711e04b5fdb3405eb454a7a54ee46d4116172e1e34e3a2fbc3", 0xc1, 0xfffffffffffffbff}, {&(0x7f000000a000)="8fa5caeb79af77f43c65356d5179da54a199b8d54a8a479eb79d14fdcec5ad8eb2104929dbe61cf7a171616acdf53222e1eb607fca946ae8e5edc021eeffe62ca29fb1c4f7e9196b731dcdbf79c6a89a17db44f1aae031b8", 0x58, 0x8000}], 0x10, &(0x7f000000a140)={[{'^'}, {'hash:net,net\x00'}, {'hash:net,net\x00'}, {'{\xcf\'!&,[\\-\x94,'}], [{@subj_user={'subj_user', 0x3d, 'hash:net,net\x00'}}]}) r10 = syz_open_dev$amidi(&(0x7f000000a1c0), 0x9, 0x402000) r11 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r12 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r12, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r11, 0x2405, r12) sendmmsg$unix(0xffffffffffffffff, &(0x7f000000a280)=[{{&(0x7f0000000080)=@abs={0x1, 0x0, 0x4e20}, 0x6e, &(0x7f0000000200)=[{&(0x7f0000000100)="0160608d5d2cbd7c7b5ca0ca1667a0d3ff6acee58a1c70b57869fa165024d9c090b4ecd048f5f22a71b70910f3ada40120f7884ca4d77a3e1b91f014aefcf1eb9f3b2183b71e2f323c53fc62e3f8a6b753615014699b01eeaf47c62cca60cefd9fbe6c278a48205640413c81a9e32cf8c7e0c5bd789943da40b5141f505e918d4240f36319732fb9b7451340852c24aadcfb2bf848d1db14e733052e74f9759f4022693a13e2c8a1cba4352e4f812d7de8b217e578379283127d0c308922e9d5c60dec6a22a4ef7545f2dc6bdd5265dcf0e0e4", 0xd3}], 0x1, &(0x7f0000000300)=[@cred={{0x1c, 0x1, 0x2, {r0, 0xee00}}}, @rights={{0x14, 0x1, 0x1, [r1]}}, @rights={{0x18, 0x1, 0x1, [0xffffffffffffffff, 0xffffffffffffffff]}}, @rights={{0x24, 0x1, 0x1, [0xffffffffffffffff, 0xffffffffffffffff, r1, r3, r2]}}], 0x78, 0x4000}}, {{&(0x7f0000000440)=@abs={0x0, 0x0, 0x4e24}, 0x6e, &(0x7f0000002a80)=[{&(0x7f0000000780)="453c8734f5d6bf7a6207677c47bf88a7526f2bdb6eecc07692f098d9a85a65e8b6255f67cfdf2b7fd3e6d77d89e07c63d85d830c75c4d6b08d159e8570054f9f854a10f978e3a31efe2d9059d6bbfa27aeb83d1493053b41e27564034a3c48f475b2e51f8381005b584dc968f73f6787044ee874bc56852ca4a409eceff14233557415eb19f73910f0d9dd1c3b5ba325278cc4f27e9c5ed7a620e1140fdd5d0910fdbabfa72d494168b5aa3806224559c22ca203cca8e56f19a76240dff870effc52316c8db4776da31e1c4308138878bb1b49d2c9cf9cf2f516307c4f276642017cd4f9d086e9e5857ceaacf9673abe7193abb343a3d31713a44099e99d8fd924a51727a5c9aa74a351e8bd145eadd9b627cb92fdedc44061806362ff4c66bd5471fe5015239e5b0b720b4567d207a3db0c284d013c5bbdf77099899be7d22edfbf9bcc99155dcde5fe52089da6851f988e4d5e507413098224ef7e74d88deaa5acb75fe674102a0416ca766b6cf4cf69ab30316a7910ef4f9b9fb0f44ab67e42a7b623f02de8b0bd9c18229ef36ee3e857ced06fb03748c1213210405e1497b4db670c5f850f2d05a8295b1f19d15f2fea0b284fffa874736b6bb2c6a8dc5c6ae8dce05f73c7dd301a6c08173193e0a3423602f286561cc12c81b7902c774a19da458abae593bdd45ffad0b7f5a2d6b8d34b5a218ac37c187f496a59367b218be314ce492e6cbee3eea85b4205afa1871ed3c04baa4df289d8440611042616c1ad95a8d2612f710b41883e040cdc7470511df3ed35e4fb94f2120f55893dacaf7c4a8a8d63144143702c9b505d11fdec6aa3d314e3eb883ff3d6176a940cca5c1fc2433510ee7610eaa0363dfd80df5ad188264ba6eba21b9cef72d1d155aaf5c812001095f8e4d62618299071ae8edcc6b42ce7c6de75c65c218827ed93f32ef95046b312ce3675517b08cb3b86c350f2f0fa119ac6f2a26aac7497680d471114098faa4f5b01c13cd462f12d2fe0aa535c9937e59f6b813a065cfa5965e855b82e50f92b9747f69f48bd1333519ed6deccc42719bc3adeb67409ad14feb3d47292f2876bcc2b32c2b84f8d9e903d4e2ee6e1762f9d8665452e8753b3f4abf4b98b6175c217f010a61c4c1a997de2310a7f5e786f5424873bbed7666a4eddf1444aee7ad61a6a787f9e0c769048ae405b308d2e617a28e683091638e03635a30392499cbf578ed928b1ea75176ec3f228b2c030f9514ff6734da083a4bbd45158229d49ea02f61526e25644d87430b61e16133c6b52f05470afb411639f8d4e77924d414594c4741964bf2eac0c2c817b57a1bac71b515a64d0f0e159252c6f0851d76f21c4ca086ce118e18b3776f242457308bb3eaa9c61edc9aca8ab728760764cc71f955d08995ca450683d4e3f23889d003173586928af881c27ca057a3eea2b493646c2e2071193237f732e9ddf9be1f230df3f979d757ef869fafb252a0e45553d0ccea1d24e45b8e69498ee2bbb7de7ccdfd81c925dac7991e396bc779539430b2c2984820b75cc084107b13d9f6c793d5233e9c1e9f843f1b2d39155297abc9a205d168ede4c1be781be5476c4ddf3eab2e1671e2fc2ef9b2e2f7087d08422606a5c917fb251ac60192b256e4c0fd32ee696e9283637e0828423ad01a8a47750ac9560810b001222608bf7f24ba7312dcdd4b74a30ce543b77694b44bf8cb1a93d2c3bfb9b0eed613880fdf72e9d7e5ac4df67f8deb2e936362d3f0442560800a015d0b48b7d3a5a3687383c8c5e13a5955cb929228491e35c6b47906a3cafcf67e8aae4317bc3a2eb1bf76b39fbc50f29e82d8e7ca9fb30c68442a66e46304d31a17c6cff67ac2849a44e82c3452af5a98e09a72e499f1dcfe9501c7bb4a97f13d678645070dfca30ba75883bbd5300450adff88cb989cabc1579443027d7456984f6a2117696d42f00027836a0a9592185a3451532ff10937677dfd739a00bdac387836b495b6c7e603af0e649f37684f2974f5618bcfb3e0a70705dc7e5ee985e168835acc72831c57edd8ed605f1799219699744e04857048f8a3be86789bca7fd6934a6e6c2ff6991fe04ef8502f834a0889b1eb2a93589d9209577888051d906494f238a5d66ed4b56187ec15bf1f58580699ce0dae785ffcb89cea4a86909751de851319e0fdee79e312404cb21c14d7ad513d4e9ce5a234943a81c8ad931550fa75d3433a7b9c7881a76026ff8ce026935ab0f589ad105c5ce8a65c052b228654c7eb2dd6c0e0dd9b97ce51cd77cff27ed6c98aad0abf85fb484f399c32812f08caf38fcf859f514262257b68501216b2109e091cf542a10be8cdeb628c258f18ace1993a881a2325dbf057fe4f756e530e4db3f033ad7cf292955209f0975a3c42221fe02f0470fddd7053821821f0080789d79fcc21aa8584a71254f8f21f8b5b32c6207ac7a53672fd2196a23c62c2c234215f270f16283264ff05f8ab352da487fcbd45bf8252f69a56e173a013c812fa50f8113eef4fa8fcf6ef1527691817bbe4165df784a73bafc727c2153a5ec3d8ca8075b22a62be3cd42f75cbce888c3740c6acb5251e7c103e16a412934c290936b60e7bd09de2277a285c9838ee7700646e0d30d9224e22ffa1c0cdb4aeade620e48b39f7715684b4c05816131a2b10e83c5c816315a7a941c82f1b78e9987e0ff813b00635b57708958016d21d2ce3129361dd6ee56e8818844316a863a2aece87df99d1de7063e18565c5ba65610af0bf978c2128c7d2a9b2b7e02015d4eeddd147b347736b41c6fbc17243076164dcd79fe3b514801a493abf2d4362ab5c3bfd87e8c528c073aaddcf2a731768790c0752c60d7ab779cd4e3f7d90a6b9643bdd644cc56ed15573ecd2ec337e94857d6d500f17dcaff8148010abc0ed561c41645f569b433da43b81a7a8a884bd3ff8b1298592796b0e6c67697e558073b6caa9543ebe8c9704255ba718a79574ceef958ac3dd688a07d69970b49ec2ac74aedccdf9e9761c88a9903922ac49b1b7c71ed3051d19c19336c0e52fc3644769bdcdee91159da77046e4ed7005eebceba88b849c41ada5dc768575a6aa3cde226cbfb3be3a578bca9d43a6c97b605ed0758f68ad25799cc23159555834912eeba7fb6f1d877978016eec33e6f8eb1964be63709905b9a8e6ba170de83463a57a71c21a40ff9dd26b8cd5503e45f0443486c417bb1e91192871ea432d8d81651c694fa4cfb8a0100973cdd589b9e2c8d9546ad1d54a92df24d79c0ed2e43af87c25499efa849c83c25d0d8220272c102c3cbc3c048d1e405f4aedce0a7b6ac8ee8f1fb04fadc4de5a145502ae9bfa0860740068e691b516fdf5a90bcae0ca8fd5c6f0d47a03766580f6ebb0e9ccb68e909afcd442a11515d3b07ba5737160128c484cd10d67cb4695c2ac9cb3b85f9b98305a8303af91bde586faf780cc2ef7f391b6f7553a23d52ff4c31dae95113d328069f08ce0788a8b6c6e016b7819567fb500b9602e8bfe5192897f68625fa20728047cd2332f12b9d99df7bcd09159295cd22376debb20a18c3a3de0056146c80de3af89266e25faffcfec08a1f89f12bc666df9898ef50aadd7affd92ee8c55dbf0dbd5f88072b9bc3bbdf5af8ec1a6ba9c2e2958b5e49610a91e51ea559fd543c52d540f14b6dcfd0c3ad582d2785c19c4a4f12d5d91eb2d0a184121d3e3d4e5d1d5bdba653eab9843c29345556e443de85d2e45630a8adac8853f3975500d4316ffec46a37e7a11079781c722c2c004fa537f95dec9515558144e083e901b3d71c26376c2d9b30d2c2af2342c1656419489318036a5d3413e03af1630fdd7992c7ac4cdc43bbbb97587bc713195dc1f4e63d9f2fd01341ba580adb539c12d9e9805d679e02f352287b942dcb9c96fd50695926fdaaf699ec71e0d9b9d7d01a4d16e65247497a73701e0d81cd383a387c191d9e0b228b33e96995778f0c914922503936326512664033fe49eb1da24413b1e534f6081d1a5f022b6d0b8e3801a2b2533d2f1ac9ebd2e8142b58fc011976e062ce1d18033a25d4a70d5d7170f20317fb382467603d5603795c286f04d148a919e5dda7eb2697dcd8c861e2eb2af1fbda7c11497d226d99b696a31f17546e2118488da75cb77a327ceade74eff8c310ed08dd63e044f13529fb8d11d2f3afdb17028452cfe180fdab6ec4c9c9a66ba7b1af6a7249b8c4cf8f469a616c4c86d967e4b234522977a6f4462ffc230d8e39114ff18c0b1bfb129021dd7b6196a6f957da1c085e1e1cf3b61926841f9ba581a35242dc026549647da2c83811eb8ac369898f9948c7a44b075e95a06041d784e82527b3d95214ff21170cf708e154b85322f6187f3bfd36ba23440c90238be0d4182522a6b7f9dacf34839e230523da1f3ff039338d8eb1e86b40c47ddf546f73c8b07dc70039e55ec7974e9c3658e2af932874123eb856dca844edccc4de0608a1ed0942aee27736d0b57c4d94edd39166da5bab87b352b75cf0a07354a743610993fa772c7b278ba91263368b421223c3e1fc15b1e575474639ca602f100bb7be566e0c531eaa3201c5a80da72c3d8c08df1220f64018c3269b9a359ebc859ed21b99d662a3efc367735bfd72b2c6326e3c87a2609d40f3140bde2f38b3cc30c308b73831e0cb17f9db8ce939e4399aa7bd9f1015468356e1b2a6b1a3b2370f45cc4a55e01f20121b78f3615428142417f53af593aa1edb74b41ed0f162b220f124e96aa7b7926385c0da09e08ce407d1c21bbb9228d9b4880b53b9711c092c67886aada3ac9c32b5a37bfcf9f9720e7eeb3cb0b069ce5ceed32897bf879119e2f93bda5272b6a0c8c6e732df76c43affaa0b23a2b10de5425fed7def474011c080a4477d70c87e1058f2baea3409117f2196349c012235e91a825539a33d4b472b42396cb55fd270b53e9ca8d92af194654195a330f67393e3b0d3fea207ba9d515d348d90f7ae6645b3eea4bfd5cd2b7a775150951fd9a1db6254c082a0ce10d11ccc9496c63b8026ddd1de14cbcfb415d798b92e8c3adbc2a43354e096e8041a0657d4e5d5caf0421ef2387d1a1bc17a1e74cc86136742189b01f08d396416a40056f0a63b40b8ef15b476eab98c3cfa8307879b6eac8a0ae076af62303749adc58105f7a57c7dc11d3e43348592bc01d13252eeb4fbc85604bcd47ee2983531c48ec4b08be669e6dc0aec78dab30ffa7877d8892cdae4d5560abdc04adc602150c21c7c804168e083f2a1ca677f01fab431d62e5933bed5d5d20f59a7d1c2fce8976d8260e9cc38b7b9ae1c53d173bc3d81f1c39208165d81037baee2ccde9ea8f0781a66c628103045c0d2336d94f9fde4e8e047539f07b90795e720de6026f1a4cc7821c9ec0511ee96d3a564b00ce7ceb10ade0c754a860ce2e9cc892623222bb664608dff83d04b5f926c9ec7173afd98eda8fc658a78bcafbd1bec365b518117bb4a7bda9e150eb3b6c0a7a09d4661f331994f4b961e4e68431a7d95f333b5e852b2678716f4195ae8fdd8f4e9bddac7884d862e2373c0f17a43cb5f0656b1517201cf73bbb859e4e8a2fa8d70275739e38bff9a87b6cd6d9f98ccd8f965202e6aedb29abfdf3796a2c71c9f7cdde3eaf631094dbb99f40eaaf6cf086ca757de72610fd73ad1cfcb826726bcffad99013cdf4fbdf4d07740403635cbaf9790f3a7635acefe8f61793fe9e176e9c14aa18500a925158d208c01e3f4ee38407a55b05e58ab91c2a33b9ff9a0", 0x1000}, {&(0x7f00000004c0)="8ea5efad0ae46f5a4b91d41eed8ff245548311dc4ec2b4e62fe60cdb61ee67b9c55badd7f470af57ceee674c0af0244cc88d8f9b0f4218791c7c848a4766aeada1173795eb563df2d5905485d079bd69dbf8ba6d19752968fd63", 0x5a}, {&(0x7f0000001780)="936c8cece4748c8d2a2b4948faf0d101f2fb4192c09d523dc94c16ab3e0b9605467d7b223865da43e70fbca8e71e4db89e8ec617fd742443efb03c2db8262cd4c65c01ecbb9c1777bd7b358e99c7da10ca64fde2da9072aeca6afadd28943db2d0d99ef946926d2a66dcf7a64dae1a9d58808d724a8c23483599ffbcef1bf4453043266f1a2081482f25084d21c31c4903c7abdec622c7688aa9082eeaf381e4efa26a17a9afe41d2d8163d2fde370bc9de98ec81006d979439c280968e5a592aacc733717151af3ac44b761ddc8d9b9ff965831e0c273ff04a1f417a122d4e104ed0934a8d4e23b17fb1f0f039d63eb6d58527a1a380081f0682b88a836b835dc618b1be5d7c7e264fb354ae72fbc39f3b597435045018b11fa76a9db678f99192df8d97f6999b8c84109c5685af8cd6197fe93de82e0b4e1fd1d705fa7c5ee56e5f0ba4997c36fda0dfea471d3a3c1c8f911e93e6d049e8eb2959077969fcffa873fc56b2817a0d13d2bec586c609cb9278bef6c4762e1e51e35dc8fefa8a70d7fd8c655d68cbdd0ec666c5c88e7cc3f956455da07d31c070e5c9fefe9dfbbc5e0ab96d4f72b1424239d17d9e1c2895096fa49890bbfbc58ff502f54640a2dbb4a839005f055966e131369499e1a7041415d67df7a6fe9f13ba530a1c7aa50a2c0e1f9b6e06b991592c281198416c31a45685fe5072d8ecdda9f5baefc3d64e2c8e6f869c843e5f04bb4bd5cc724482822b50e2dc12589964b2b1b57c291aba1ac7bf3f0273a723b68c96510277280be66f685691b79dbd1415d864af3a15f7b0e3915ca746e36f2d3d2aec5e4783facc0c0e874b6b03998420b62d784a2372e54e6f65dcbfb2ec9d8fa8f81489892ca3b1a0063be65e0ede8e969f8ee71a61a344ac354468b49f0a2c61cfadca84636d497d63b7a197b6d0c191f93885dad2940821ff1f17f90973c9df666caf9a920c3c3862647a6f57f1f01c5ac17949362ef9040dbf73625984fa59ddd6e0162ae48bccd1c28388a306ed003843de44bb468b1778761c29f0ef989c7f4bd10ad174e9fa71c7d49f5421dc1ad749a690566845c120eca255a1030ac9c3f1fb9da4e7191f6ff4342868119541ca30259ce149c5acc2448b4d2ce4ead09e4307b9041f9dd5bb564273e142f806a87e508766dc89a9e5a4c5790d7f1516123aede0eb7ce89534ecbf55e9f1e5c7be57e1a54a137dca6c03c981535ce8df29293be95ecc697363b5f560c294082d6f710e2b2c0c3159a69fc762e21f7ae52c4f0bbd23d19c7284634fb6c460e1326c4c0cbfe2c268fe06dfeeaf4886cb18bf2374a25a73b29c08df5900e432dcd148d0599f33160892eae3de87833aa0b59320cb44dbaeddefc883dd81c43cd2b348d85160fe2870f12a3a8e6087797da2c8c6b0a23e018bd8c7e5a7dcaae6b9979b0d479d68ec3e4739f47926d19e0359b8f3723ba9c61cee51ece867d59606000014a4c7425d10196e754d9b19995829dbbbe739b10710339479431a50d747f4ed08e801e5122f3933c20fe3cd1d6b099ef9da922bbd62780a687da246a764dff5e6012c1d69dc7f21b91b1e6a953dcb84209c6427756460967e5c52f6060eae4b4233e5f4167b9885e75d19175f3a593fd6991a018b6497eb6e2d747707f7df945655036e1762f929cb46bed4019bcd80a3c0077bfed0f03961e38823693ce8810946e78798d31878c89245ae63dbc4e5d2598642f4c60eced131ed5601d140347a3b3ce8204b133431487c9be0aea251035cc4ce3795d4a8cbd23531590b66eb4e91933636238af7dfeeb15074b61ff43aa7e9a9951490bba463d128c1aa6e1b223ca85a92ca1a9dd54f31eccfefe3e6f02acfbbde19f1ebf1fdf0a1f699907da9f092804c1e98b9b0a33409f973b740ce03c986df0ca0f118516415a9384253458a310a717e8364acbe2ea5517128c1e173b60336794c6365d183200fe6f7fbb9cd8dbded2236b511cb7947e0d69ce1430b380591fc36fec86b4e5c1f55d2d7906dfff68b355a4ca0d73af39c1e0a0a7247307056aca7d5e92130b0c9c95a1572591a1af9b93cf3f2f346d51c486601cce2a5a3e11c46de6e2954d9b6913b35f40d7582844e7c9e864413fcd0f6fd8f40276f1e7492df7683f81ced7d130aee6dc34f9737259cb4976b1acbfc61ca8a5fe0ec06f8d23c6a40e0c2e42d460ee05dd9eb0fa2380f749a2be71bd9873d8ee6671857388292ae7b67036ecf8328bc385128f82ccf442c6a52856a1fa952573e4c2ea41c24d67e519d4e1ab3810ec4886b7ca5b52636a56a4f32f218f2e135c57133f7176fd0704d1493b4bb51714d66b8b613234fe7b1b0f0fb2c8839b2b3d2e37e84de20c6bff83c2c508fd5c395d954e04a34cb2ff90eac286bc728f4dca22299ad59033fb2ca531de2586c03f01bae54aa5cc5de50f0f79bd5ee855d7ab1d6709f7f6a5fbb5055f94ce3ca83a845b2d6cc2f89923e2b7740b4040fc111cf0e0f00e71c29dacc0abb1bf4b08b53e4439586716dcc9acd42dc1e893aa3beae653f4e78376f0ea81f9e8408e4f2c3d1377884ea014af4fc968f36cff23be149d41cdfc5a0f6e0b67781f8ed19cbb7ba135f38924bb6d3e6f7f2e40d61d43c190d2f608e0178000eaf93de757684a0e8c18264d7971cb66d12fdc2d0d385397c720511ca55d1eb094b6804ac771e13727ddbc6c131fda5bf7f0153a49f3861783664842d153be9bfb1a2e1b618a76ca46563caa366da77632c3615c4471681a992dbcf56e5cc485a62b1c194097c3a66e32d1b1bec77ec60e8f86f53813de563d1a18b239929343274179bbce67117484f846db1b61f7176d9adda2380bbd6a37dc868b856786a9979d36019e6e7518fcf049a363168daa206fe5739fecafd9b24c3ec232933a5cc0df395e7d3501607c87028f7b53b61f1eef4bacc6ef6bfa676eb69a130efb92e516035c80b382feecf66912e324f8d24da7462efeaa90bef2921c3db71c24acbf3e56007185031ff68a466862ab60f7b297b90404ff0d491d4d87b4704016d9720072b08efb3e3135771b749d9ca7c16f057318be9f5f48a8ad5145963d0790cb2edc0d6dd5b70c2912e81537131a64c351bb28b186fd5b8d3197fef89d53c04b146e9a6d31baeed263890e59d8b36978d64cac4854f41bb9aea347afc5cc4f104ada3c0d4cea4ae29e4d4db1b5aea352d90afc57f9a43fac6d4528e787607ad933a2dafe716852b93c7fd33e85f7706c1d59a890eb39984196c5dad75f4232dcfe956b33deee69bffdf10b2018a349d57d3d21b455e01fc8857ff8347608bc7fb3be87550173c728d431ae3336f0b307f057445992d073dfdc05dbd581d1b87eff669136b4e9d5f74afa331980c9f8da8126eaabad70ea73ea71c9df5296e2f19ad74853303c21c0a59c28c9208fdf41666d71d34d10dc72037476830ba70f3a8e9445b4791b007d9b377500037c7710fa6fb32bb09648de1f1bc82cb814045e01391291fc958a73b47e116fc30424f027427cd3c1c8810f23802e6c77894720f820141d2a8b1cf9761ab6678a21c43f2584243093636db02be11ea06f50a9bd81f56b87cdc3eb96e8177b958ffd923d3b90e74c668c02807531ed2f030a9d9c88369a3f5492a7ca134884a1562651c263f4cd7e12352c84d7af2b9db35bcb8b4e390b88c5c965170f609a592c8e75565c55f692126caba3ae5fb715b9e087503df2f5b2ceaacc63288068f2622bf1286372067ee58d9b21360d2cc754dd89d713dfa420ad0dec717579ec1c9672b4d23c479e37bf2aa48f763faf36c4b375f545c2ed25564bfdd2dc16589b7bddf4b681bc92f045380d939ad8ee9225b03cb567fbe0382fd08cd224887d748dafc69b17053d129f45b3d8fb68ef51859d762562d8d07811f2fef82b971dca1339f84c9311dfb37c7233c94abbb1f46f1bedf21c33f1f9e7a08c8098401932bad414fa78aaa7f28428511c2ee60f19e95048a7acd6fd1806555e660a848ac6e36c8374e9347fee34704b556e5bf74a6da5369b9d9f0119685c17cbd12561e04b57aea4964b90052d0575d25d374821b9a668a9f8375368fb6526e723829e3c0d2a4ca5aae582e1eb66ec63290257c8359508efbdcea5e46c4f4d9812412d446a9eb206153594f901ccd671f06eae632552f16890c39d9fab865278c02573e62777ba664c891b80f5ca2bd9d7b8ebd96c345cf41d13f346d91a2f588dcdf26f5b1d8abddc51a78da819437644ee67d00a70a061735f596e4ec006597423310fe164dfdc92d3ac1e88ed65016ca11b2972237386e1d9c558ce7df0ce00c0bcb470e62be862cf5fa290307fac9b616dd146bf3215348b3ba3880f9c059b3f55d31d0e406fe929a9bee0876582e638f0024f2a8d7b94fd51a9795069c17025c2816b32e55b1fc1cf957dd60c42acefc6d031f515309a01d25ec9199b5ee9d9cdd71e4ce4a439e083baf4fde69c1910b1a147abc7d4dc4425d7739231ffabaea4adee86576be48b4db81a98d324483ddfe1a0352a013f21be59c366e4e5d28ac7daf19aa84ebd8656b00c562a01d8773b2dc6afc8f858423bea2ac22e535a40aa4e055d5dbf662391d9d4753b6665ba94464ce5f59e9d8071549b948ab9f0310afd43bf42dda911971999f3507d99245af6c3565a249f80f9026985bf4117c53c960767d9f54373ca0b90dc108aa7ee53e164ac9c92e442078e721d03a43419d5fb800c5a4a1b729ddbe93be7976d8a91db709433a247baa1bbb1de8090190303043b4877218c73b1ce1cad19b47d211a329c5924028f11bbb7350a56a583c52180a545f08dda41f457871a36c944f9f3b72767f4917a37f88a105363f020a4d7950eca1fb0095b335947bfe89f5aa3f811532422f50ae5a5b5143163a54aa91e2b384fdac04cd026eb5e3938411d1aac81805a44a18511ee5216323e4d8376b44858125472deda23275017255756b108dfe30d4d1a8e0c08fd28210d4ea893fefee5feec0ad3317a722172067b279f942f503427d2a146b1429fec6b11a20c0a826e7ebca7adbb00eecd945f97fa039ea9cb635bf70836baa325c0359e57995eaffeef6a78e48bd0afa8b69447929be9e06b216dcea974e1ec9bef945cbb9f9973404f71c576f3d829a816e0ed32342d7627afcf58fa52cc804b0c7b1a7539d68b18c84187d1eeb34ce8b4b6f206f197683fd75b241916e57c66231fd10999cc10c567d7ddba24f6d91176d64a2810a627bf9b46b4ae5b05aca9b18159c51d256444398041b7da7b228b21741095107950204d7f74c11e2ef005fa97221aebf1cace65fe7d8108cce350fcce575e3517fbf31fe730b703b297ba8216d005fa5ff6663b7832a6dbc42296fc46558c87749f340fff2c2c918b3ed90558d805ee7986caf982e559f7f6be99caed4489dd3ad031367615e9e9a52ab0fbe8b9d7a551a3072822c11a990f8e1861279a59ebe0aa94f48d07f956e06c44336f85789d992d9fadff16e0418d7adfec6c2e8115955dc99a7311456ff642af6858f8b26fcb34dd01a412ccc45d5d5c5c962309c81a3a38b55b25cad97d2669eb58ea0cdcec18749a217797b6f2ceb84eba8d5b9b753ca5f8091e985bdfa7b79206ef4e2c15e26f37bcd3285f292159c366fe7bdf4fc2bd683b0f537292b12ce2c6f7d6b6911f9610db5ab6b676b50a3bc4db1b0da21932c2f679b47a92dd37b3eceffb35cb25c613d0f08cea5dfa56a3217174fe0cb31a883083184b90d954faa190feaa", 0x1000}, {&(0x7f0000000540)="0ecf4cfc527dea77114775f2b270fae00f9a08f7474a0cf0d71771ba3d2693e386a854ef0d11f641d6533f6bdf8435b15543b0cd239738b026b0cf2e57eac5a880fe603973c901de4aae96240ccde961c780a05d92842d664bfd0f3b8b9703db864121cc465ec3d70fff52fb5118979739f8ac498668831e91fbeebc6777182aa22e3fb19a8926dcfe32eb85f6bc5839e269cbec78a28dbe4daa752cf50eb58b17be8012718588bd987f38247ba23c923f8fb725f5df752ed5dedb37516a688afeef0dfe06bf7a66e2d5cde96d1ed1f6f135f4719b32dcd9290ccd75e71e6780099fb19eaa53a4530dfe1500a25d", 0xee}, {&(0x7f0000000380)="c87f4b929607acd8fce78f99", 0xc}, {&(0x7f0000002780)="9acae75d936e1cfac80b36a178fbd4fb6e83916a2b4283e40f336161e47d3e60df8c1c10c42b9a09bf2e76a7d23919b2cab75f58a2a4cb7858a75939cbd6eb702987e98b92452d34f67b3c57a2f71ed5a8ad2af2c4b2a2073722b4859d9398e2e4add99753501df8548f86ec755cc939519b2b0b72700fbfc0c9d7f74df51fbfb9fa1346581581e4452c54da9d110b0cb7aa27969107cd594b83aa881f235c0638f9490c79f2827a2b7b2b8bc152d84fff2804ef09b335f0169132a8f0af803d37515c7c83523cd2c5f8e8a3528ca21de523b9e77b2c2865bfcde1aad585936c1868ccaa636aea2a93b66868", 0xec}, {&(0x7f0000002880)="608a28380c7e520b375afd4c421585cdc17de0f0de75b3f0cb12d777c6df5b1fb928aa1d5af0459affc1c0e1ed329791e4d6c83a47e0e14dbea8eb4f6f04feaf0056594197a3a1624df6ae2aab72f8002d83bb434ab59cfb6e9aca1b57467ef173a1ac9f351c6b9a28d6877ae70a50e52da4f4aa7d70af29b44eac1566f59874a77deca421e26041f410c64ac412083f4fe2a68b381c69b2e512ff35b67c82a674026ac836dd91c6a894155aacc463ba8c0b18e39b5f93e61708e1a7b75609852386d956", 0xc4}, {&(0x7f0000000640)="59cd773ab6b723c42d5f9120f54a4dcd8b44f0688d83c08746b935e49ae3e40671ceceb3b5501a6bb6444c25d45470a1082798aa53d8662dbf76d5e354454df02837d509e35d77a0afdb1e0a3ba9920610a3b79222c7e451170c513405e5beebe2c6a9ee0ec93147e61da936a824196aab7dd48fa94f0c038e821acb39d67abdba77cb7661378e6c7fb8a008f8ecea48f5704c0cafcd09fdb90df50206d5e0bd49d46b8159b4b9", 0xa7}, {&(0x7f0000002980)="3d890a32a3386663330d28f2e2de4b54b0365fd5c0f39339e8b00efae333f853349afd694d7c690023866e1cfe2cbb0a0642ff2edde8e20b8c6b39008d67f3cffbecf55b7c0bc5bd23d16cfda3e338623a360aa84d029a1d3abc67454aeeeb69d06071aa2cad9fad5dfe272c13ecfe7ffabc2c67bb5c8d4b0ec760da78e04700b3482af3f966ebb6fb238d", 0x8b}, {&(0x7f0000002a40)="776def73bc665c3dfa54aa433372fbc234f86f1ef0ce38cf6b53b30195a4af4fefaf0322fa44", 0x26}], 0xa, &(0x7f0000002b40)=[@rights={{0x18, 0x1, 0x1, [r3, r2]}}, @cred={{0x1c, 0x1, 0x2, {0x0, 0xee00}}}, @cred={{0x1c, 0x1, 0x2, {r0, 0xffffffffffffffff, 0xee01}}}], 0x58, 0x4000}}, {{&(0x7f0000002bc0)=@abs={0x1, 0x0, 0x4e20}, 0x6e, &(0x7f0000003040)=[{&(0x7f0000002c40)="2f582b01c044bec9e44991458b44344ecf2b8552b4a8ea8434f3d6f6e7f1fdc53b2a5c3812fb0d751a437a4ab04426b21fb4365e96ecda2f175c14f236c15feb6fd7ab06ba1ce74da3307c510c9fde08243c47dfdbf06606ed53af0e508153400f02ee3b48bbb0be688eb6b2ab36cd17a310e8da8485ec03960dccc94eba2f28051effc29f2eed7fb93dd0ab662bb76906", 0x91}, {&(0x7f0000002d00)="4cd6432113647defb816b0322e23317bea1929a27c6aba66bea8af9f386fa0e81e17a0085db71c4e1856b5b0209d67b22b7cef5c46eb3feb7a30281f58aa9b156620a15c8bfdc589b5be29113ac2879d7fb8d3ca25bfa0ce80721051ca061c5e67d05f5c1a4da085266a0fe7a8aa97c0532c4b5a60be313fe07ba7ecf802ccb6000acb6b20e75c2e9c69bc56e1aa5f29e9dee3fa45442b8ca8081eddb0dca2510f539682b1b223b74fa4073e5bb3965628aa698ef71e2b914a64981426d79bb4df5b2b2fe90b5e1271eb5c817e4ef484b9f2f991cab928510d3fa002f4edd24bebede82a4cc41b4abeea05970cab34c96f", 0xf1}, {&(0x7f0000002e00)="c13453c5741c654a1088345e7f8f02435b48b79ab34e669ce067be127f06869ad8479054ecb9121774344d1df3934d46ecc2dca2c731bf5baf1be30ecd1ef7e7ec66e0b0b7b301d2e0acfc04c571f0f33cf0ffa190f57efd2107fd36ee80f184be23537231a1e213d169a673ba21d60c72ae1cbd98404878b67c6a02adb34c062f365882c6399388d60de398c97794b1826840da6f2eb0d107b7fdfd1e6a084448a340b08bd75c6964f9325bd9c26fee724dd965451e6d8c991172b0bf12d2e43a364b326c61db8855ee1d6d3772d07d42fe3532ca32f5c86c51d85bf89e250f797b50e956a5392cac03a1a82da3762e85a1b0", 0xf3}, {&(0x7f0000002f00)="05dc2d5126e547f86202", 0xa}, {&(0x7f0000002f40)="cc8fe49d254b420acbb64a0ac850d6", 0xf}, {&(0x7f0000002f80)="d407d421bb8fee7b66dca674d79ac43992578ad928479a02e50d74ed8756e1d540fa211a626f95d9a352b6d5a27488d99448636b97f66793ba228ef4b9302e6be6dc07f0e06f9b33b3f0aa310d9c65cc485f85631bf94a0c31a204e83c120b89e2d4103703e5918ce4c452772c15db6648e081e7576589194ebba9be4c8571d87ce9b3253dbf0f", 0x87}], 0x6, &(0x7f0000003800)=[@cred={{0x1c}}, @rights={{0x18, 0x1, 0x1, [0xffffffffffffffff, 0xffffffffffffffff]}}, @cred={{0x1c, 0x1, 0x2, {0x0, 0xee01}}}, @cred={{0x1c, 0x1, 0x2, {r0, 0xee01}}}, @rights={{0x20, 0x1, 0x1, [r2, 0xffffffffffffffff, r1, 0xffffffffffffffff]}}, @rights={{0x10}}, @cred={{0x1c, 0x1, 0x2, {r0}}}], 0xc8, 0x4000000}}, {{&(0x7f0000003900)=@file={0x0, './file0\x00'}, 0x6e, &(0x7f0000004a40)=[{&(0x7f0000003980)="b41233340e9beb047ae1e9341be8e1a8006436c9cd7e427aeaad19b94986c6f422d43ac8a303ba4174baf839967e94451cf79ca9ef4508b693be78300f1882444cd879c772f2c2307eebad66a1235da32cf5284d37153b1f41247e14c203c27be0cd4cba9ffd8f8b6192571baf2e3d59714d33bf53070d8087cd6aaa1cbdae71397d4117828c82dec2d80a524c6066828372a4254a06192791", 0x99}, {&(0x7f0000003a40)="692ccc897288a2fa115f7c4dfb9c1426e0bd3d506b98677f1163bb818dc32beceabaebbe8706f90244924f8fbf57e0278e9b681bd009aacfb917933c85f2d1bd0377419ef3e2a6ce03927c4f7de3434f6557a655aee5fcd9e530e1166751bcfbc62a6f1c509a389e14f2a86acb2656e51720b6e049ea9274e02dcf688f9de9c5f20ca045ec11c8c0a5c723e9bce02c0dd7d19c7331f246b7092911bb3cd0d1b93857e0db84b7684844c1a7bb61c2ace1f27cd630cc85445c24217ae05e541273d5b20059c1265fca676c11b170bf2ab9e6ca1a242b935b9af0cccde18702f08b9bd239804a5ff84f5d29bc986ff9b07eeb955bdbde56d8025e90e9ff630143b36b3c0582bea3714142cd73cf0bd42ef87875de70059ab8c194baa3309fab2f1d03d9b33c6de9f507b1de5f233eb54eb01285ad616a988fc9e18c7096a4fc9a1c32ee973cc2014df1ca6583a4485379aa42c65f6fb2e4404622b6104856d9d250a7203d4ac125403321467bab7fab083c300145265bc83bdf8f8cf94a597456e4faa6750b47324190de070aee0599424a4432c7c78fd846f82c91564a942d6d7aee3a436bda0d83e49681f39cdb908155384da20ca704f18430071c13c21d50b400c6168a43ffba53f81025f5c147882e5cb75a01bdf7f02d49aae7fc5f8a79733fadbe3df8665bff9dab0e429b7f3c860930175578e709e89566df5057e72abf976edaa8b3581d4af421c167ea1167e5d7c9e03177e6f1a9577dedb5f38ae9f1fb3bf1be3e525558bf234604c2f7c6df4b4132248aa0a9490fbf5ee7f0a95f6b6dc1f6e6deacb01256636b326fae4ee77d99701aaf672798f8e48c14b5d4d6e3d60e4fd1f855df52a69f030be46a00b20ee471a8e329a45296ddc8086eab97f2f71bbfcc2d55cb8072de1cb8a23a9ce47f63c14515f102fba772448fe1d75746c185d1bba935a7498aa9e0d42dd87cd2d1948ff150d7e7691477975bed988c4780a769f2a6dfa30677d972e73a190267d5b6a76074d5749a81c778b593aa0d7b3afcfc471286b795f46c94a3dd8c975045db21ef303f1e6529ae664a136d3874dee90b9b0de12f4da93c21411304c91c3c6d9ea62ef7b4426c6f011fbbfd853d97d823a158d7b05916682f5e741d43d0bb16601c529aec46258d04cd07b28261b185c17c8482f00672cb58cee1a0274b00c99cd53cb7ae0fa33f63ce34b261ba24821b2ebe20a969656cb398e9e4cc4f58b57f556cb116730c49cfa3b71488038cc121de92d8305630f60006bebd5caa77a47d2a65bd1fac0ce275c0b43d56ced2179f844763e3cc602b168ce35b81990c20f5839fea7ccaff9bf137ad002823f20fdf5116910a08b090231706f6d4bc48c5cdc5bae1be32927024cc5c90fdfd0d4ac2ee92b66653a18bb57e4fd6f551ad02c48b20597fe4264bb728d14a06858a8847fbfdb324b4e71d4b42da94c370c180f6b29ffe666054c550e45e63b8cae252f7e2a6e84bac529265c367442be1f5f2d9e0984804fa04fd658fe8ed90837d7a535883ad9a8af133cfa04c43398b92c8db3a648d6a856d521bb0b60b60beb9da714f2e5901a33065a74ddf9c97398304b39315b0ca00e75221a622d2d5c88a4974bea7c109d597524e929a7df3d344bee6ab7f3b213f168fdef0b01e28c96b6e8a5cd616cf75107715e46e0324d36843324eec6efbdbb1ed3fcc60b93e58a85bf2edd97e3c226903a7d5a2adb2360863b8c27abbe4a1e6789992c39ee8cbd80892fb1a85613110ae29c606f9757d60cf90d8df95b20ec5e61b9755a61db7d77fbd6ec1c7a2098d0720e5004d1cd81a1a7a98d3e41d392c7f7839da66db43172b739c924204dd39c7ad8bfd61ca8e808ab36cb71a82cc74ca47f86e74bf66def139ec6750ddf96798a1421b7f3ed55e9e6a8397a113c339577de20e85b717759d64e81b93da13c28f932eb480279c2c5881a047e39b6e123285624b64da2e12a6a50c6ac60ae06916b095c366a291deeb66c65994072f629c1f55451cdfa559063b6a2e6f42940b6e5ebf91d86a29930743c713852673b573454997d0bd48568372f06f95d86147648529b02d08970d28b05e9eeff2496c38a65eea2ab13ef829414a9baa111598e67f574f1f4860705532f7b839326e13866ede035dc848940054d73bc2621239dc72fef2d74029d8cd035c583d91a2a57e3ecde529700ee7f96b912adeedcdc950967f2faf232408e5f12e7e5074974d5d930a1bfa5ed8d8437845231e6e24582a4996cf63c66d68a27d5a45e63404451ec0728c2105c85ea69a6837bb56fae0849a5877d1f579986b5004e781f42fd91373f1926d4a0aef233a2788928fed0077f5eca67645cf20eb873d546ec00eddcea6998354e9200c3243e974f31ef862323d6c997ea8716e34409ff898f5afe6271e14cbf197230305567220142857d85cc025e62f09414c0a1687a13a96bfb4690ba8fb86f593e181e7581fa8c4899cbacb40dcdefef5fdded5c186bdea27a476d62f7678e9b4cefbb1090e88af42e5286bdde12831308bc64f4046379e130079a8d3b8312fe985cabadcdb955ffba54d54e17b986079729fbce54c0e7fd34662e25a1d177bfb2c9ae00bb4e0828546772499039078bfa7691b58dbd52c330a73c19e3dec1a9dec25113e21e8f0c20b6503c0c0a8f91fe3d83e6d4d55f5827959bd75be52150da50b08e246eb5f2df7879e70535cfbcb94a290f2420b5f04b84870636066dc24c15ad8ef8e316827a67f10c118c12a48be77b5db8b87b75750e0144bf150951e0fd21c5c33d3acb73e7956d394f38ec37b85a59d55bc823b895dbe0b89c05e1be7f216814eab1affd665ffcf0e9d18d37e484740ed27d72726bc10105dbb8357fc38480330c852f69603366807e0a17cbb12c2c58f34fc64b62b7202ad9e7087b3fdb7bfd61e98e67886a25900c1c93d11362859cbcedfcb344bab3f0b2cd758a2b4ea57905e2318bac5ba32796677eb515f929944e64e950cb55527f7cbd80dbffc40561b3de865107d72b4757d15f26bef82697bb38b96404a33e8ea31b7e1184e69684c3a23bed210d8ed24e1771df3963a8633bb83ad8b8a91b96bb135d40e0de8b310b02fb72e01de3fc726d345c73eb41dd6c336ad4666f19de31d8a88ee59dfed97e18198dceb388b1de7ca2d8a60d603de270386cbb16be840dffd7de6b6ad2d30e4aa83b37f4a6582cf907f076f306aef0fb9f8cd7cfe8224f7be2405c232bb330c2039596328a98e052df28b3cd7419c2578381eb51701599e04a5821284e3d9b88cd5c076505832b7dfbd91ca8559f96cdd4c4f842e9de0f654abbef88e480290587b86ff8c881d0a22d436787571157b86c88e91f531ab631b46e60369a121f32934be7792365028fb63d40f3c868eb950e8dfb9502ae5a5669bbd26cb5effdaae30e3952bae814aaa2a80d434b677cc0e6921b56af6049fdda4b8d4a1ee67b541c924b024954ae371dd3d2965c4883ce43a2af0a01c2be1c4c06ad87cd606c68542134927b146dc3c6e612dc72c428c64fbf19a60f6de32f4703992431def3d55fa0d6921bf453caa922077a8ef398fe962cb23e2aacc5ff351d9e05fbe9c58376078de3d17444e3f7d9cbb9dbd43ea64711a6eae1afa24243dc4a7990a1448ddb7b27488acf4e7617f2b27b0d99f5cf315327f82da1990d3c7b0a74bd304146cb4b14f533c3bf8c9d3f306387c70d9b87e37960fe943a1611e0c7f7ba63a67711ccbc5f9fc114cdfd658a9c8f8d51e58df60317a40d5c0b0af618cce13a526a0c96e811351ecafe278d1e67f972cdea6e27c8fd437db58a34dde6b2cc4149ae4c82edce8e45d7c8b2e034a6de6d5b64b4d7e79d81b6022f030d97e80810170a2f5b79da4159941d42fb0ed41f789915cc68c463212e2fdbd55bdcb951367654b370bca8785d8554fe806731976d972ebe1859f238c717a11b8a0092ab8a069461764aa62a9d19fa4ba908dfd3581d2067dc76a7b2134cfd72ed67ba8359fc483405c52facb01c452ae9d9bab773217cfa9681e5dc98cf2654836d855e0be49e0a6947de505aaaa0fdb37e0123be2be0d3a30afd27834f91dcf9625c26c88901311e1603f9eef7193ed5be4c018ccb2a090d1e3c6529b16f261e9dc8da1b161f31856b189acf7b47e417ae6e5c7808272f04d9d1ff347415aa171602e8128845a2ce20917f241fd2cdac553dc42409b63735a230d934778c272316dec8fdaffea0ac510b028445c86c53f16050e3a525981ae08c78abb00dc92557b4b41d238c2405bb8f5b35c8d273e2af1810ddf76ce6cec76c08c25b5f908bca862812c1b3c0f91a9356d70e2574fe206cdb3f585a3710704c68e8b95600f920c6404fb061519c7ee1bc1fd713d395b9ea8ebc104c075dabd48d8fdf6358b41e1b99bb58712dd138adda305368586bfdec78e6fa7acabca7727b1649dfbe8bb969faf93191f85186ec616c77476b98a34e30557ec012d808f7a39c213ae5894f4efd561a96953055a90bb3afd961d8999b52cfea4772698d98ba33dcb7c2fe9c5b9eadbec37243fa1da5bec11144da7aadc9f5be00392c2f1f25a93a31b395a41f916a9b2b72e3853201fe0274f1a1bf966c1ad32df4b3b3f5185e9f40ce7510e29aa35da1bc803c25ab43a9d79ae78d5137820781b3ecf30f0d00c00da06aa56b696a7c43ffd48d55a1d08b1e4fd53298f37377869ba8969c59690611330ce6387ce23977a5b0eac1a5fd060c510fdd404ed9558cda260fa00febfbbc7fa04f1b110500c3bcb3f6243212e4dde3bff5a58930da068977c36174e1d17ef268fea9768f7b6be10552d21f85109588c76b9cb21829a97e6ef948ffbe69ea24d35336983cada2c5e7f7a5b7cfe14c14cf4406c21ed3053d27262231caea046ccf5de797376de4b0ca37ddf364d4ca6b40ffc019ca8e82767d411190e550ae0ab736a17642f6ef2e4f3018fe2cc2690761e1b59c5c94a428912ffa6bb35d28838f6a89b1723a04b36fcc5ec483a673686cd36d5aa2da8cb696523b6a1f5943fea0fa7573bfd7ba5fd48e62232ce38da9f598699f6310a3799215568a196cb23156b3fb9693722832ecb39910af216265347d372c2217c192964d637d560adf21b8c4816d6265798285b56ad5d8be7faf1ec86fe91861f792842ffee68d728559ae461db85af4ab0f941b1a488317566d12c5d9d8ded9b27c6141bbcac8eb119eb98dabdc72897b35ed50b568d6d24d7fdebde1e2b878a4f071bc853597333a0022daedb21a8ff0d665d50052853332706abbd6de91a238a1583ca2f44d44935624aafab95b6c76e40d69a28e083ccc46bdf576f6e51319c72746e3b51f57a7f256a0df0ba6f339e47e3a3bae1b9cbef12d1abd59abc9bc6e30f88692914b6961f4c8720b19764cc0a0b3f7fa2b20ae2e695eb46b21b000d67ee3a41b5d5e97234e0539d42a9e93970ed417548c8e5e63f0fd101669b166dbe6e1cbe7afefffe7761707da79d3d441debbe8a7173d95b6af09fc1374f419668594b26b95d66eda448a21ca656c51cc1fd9c1df719bb26a8c4749913fd19053a63064735e944a63435b32cc12567f636732f7b8c0c54c216c09dc8521ff5391458d6091549351edcef9dee6f38c2558f695fea82a7516f9f5d8541e9c211968a9d759f2340425ab7f0422565a0d933df43a5c3804e2cd5ac1b16d02d2f4dae5dd466960e7f2619f99e48da39497e901ceccfea3966b7c77365d72eddebc20610aa06bf6982ff97e5", 0x1000}], 0x2, &(0x7f0000004b40)=[@rights={{0x20, 0x1, 0x1, [r1, r1, r1, 0xffffffffffffffff]}}, @rights={{0x18, 0x1, 0x1, [r1, r3]}}, @cred={{0x1c, 0x1, 0x2, {0x0, 0x0, 0xee01}}}], 0x58, 0x10}}, {{&(0x7f0000004bc0)=@abs={0x0, 0x0, 0x4e22}, 0x6e, &(0x7f0000005c40)=[{&(0x7f0000004c40)="804775971b549b2417ee8ef31c067f922ccfd8f646aed8cee24ec70a667128ff20eeaa5bdbdc658e3797566251217df60eeb457599ee33be9f8cac527283e9fa7590c667b2186c661fd702ae30722b3a4c93ab1020ffa91962c335bc028c59217a439427110a9582dd700ea235388c894100d12ef4bf30bbde7879c8524cfc318ff52d09d7b173681efb67d750a35c089463121e9a8bc4f39b187a01650c3d1d84cc6dc4f37f76a0f06d4919324857f26daf9567d7f8af9768ecc34cc23839ef60037f6d64aa5b73324249ad1b049886aa76d950d2c617ee5eb723b38f16d10c17db2c1ab33d194268ed151d620158fc71df98d4bedc954160d1722f8597f5da5bf88f624d60d43d8d56fe5fd16eadfb539e5d892c3112274822095cab40180258d6ca3e38fad0d7589568fa11dcdd396edc6165c1b4763421f0546415ac6196497154a4b4711afdf4de1e9cbb9e806c85d91ca37c2622e572c0fd7f0b734d6fd01887d033e15d2a76b19040543cfe2aa2ea0a5dc37b22387e3a1321c14bba5a96c9ec94eed0edf2063c5d6f552f643fdd77703245d75e7378fdcb6f85955dc179b2a6ae1e96e2bf6099902d0e8c6e6056f32fab03f9d74091404b4c69b0f753c71a5eb439d1a6022469167b409c084989c2dc3abe44dec8c72707c2bbc51d7527f2311eb73f4e729ef3b9c27b01976a7b7aca4ce77c5e293a4da04e528c7ea22daa0f895f2c3addb4633a9196cdf4d1ad365d71f37a3048e45cc13a4fb9c03f4cf2b4a48c3d25c3ae3d6934d5559be4626d31794b36c5f5a5e09a9058874008b2173399ee5952bb01c21744d3d0fd413a7985b1e73fc8d09f087a451981c700b3fb7038f7184b39d401b31a858a06793ea80ecd7f0cb040793dbcf6b17d3c1f184d45e639280959cfd49d64433e42c945dc3e8682228e8d7eb38fd0f33e2ad9d0a3de224bb13d7e4a7babfce1b0cfa95425c3c6aec7b04582965592ba67ade8a3ea1b40b5987bb5b09fe28084f63a3854994952746a8d857b9d3268c83ccd973fb6cbb3eb32adfcc32efe586618cdb2d83a11ccaa7b33e98b19f41eceb91e1c37e93ebecb5e1c4f968367d396a97eec52c212e6810fc3a2ca78affdcad0bd54d42ca3c21b4eee638b2d0adc3ee8406bb62643876aa32b837ad1f0f84ba661b3c08f87e4b764782de2bbfdfc92b183b2e84aebf175839bb28d73f19ddcc8aa593acadcd312bc7d55279e674bb4c67d1b9f10859d69093f935cde5d5e5a9d8d5e4f09e747c84fe308d5e138cdd38fb6aafb7ab3079ab05d2b4a2338b211a4d48c3a9a81f2f79c20836c9d4f4b6f73abb0b3ed465b486d97af3e48fab66f2e1fa0c2dbf6f7a70bf126f613d6a9cfb89150d2ae48debbd7d1f9efc4c1a3cc3e50d101402d3822625d94c2d90d87982c7cab0eb0e9108a4aa525f98f9e83edc4d947647ee82f638d3a93821b4703ab3c197510669442b7a39fad8fe2cfd0838efc4607b0774cb82811e70ce1f3f099d2194616b0676206fa17b58b92f0c6a15c5d675de845fac6b916ca7734936cfae211dd2d8adb6f60158db27b82094f881153b05cf7d44a1daf614f15c805886ad099578f983bcf4e430461b2e8d9b6057506ca0d53b511da8fcdedd0c51333b3f682efcb8182337d8d4488e86f729054149768c12f14a161ec6c5eee62680c820fe60f05c04b6932bf6dbf8ce6e369cd36745eac23253e7394a76cb1f262804176a85e49d0a97503584c6a64b20a88270cd7aa9e18948207c530a1ce8c2904e20f0796ad3fc6af5bb1f0dc4752a900c6c3064c4eedd235c2c7c9efa1a58b7f33bd6d2e6c284496f714d2bd2ad7ae016a5925bd602ba749db33584f4c726354c6bdc650e05103ecb645ad8d853e49bc2c676959fce2645294b4f6dbe489eb56de6f0f35a26eb4ef75f9a2a1e36b53622519fe48c66c49a6ce7d642436e256a0f907fda6736fde555ae1522bc7c5c5d05827256e84325a571e3ca68f8fbcc4189e45e0bdf050da20b5061248bfc1be5eda15a9427e53653997f5bb2743e66c0441d8c680b3ac208a25fc9ef9d2dfff44d42d6820d9e2935e25af15945ef33298304a52136f31c08f48b327034a0e50bc1eced5f867301872c5e760214c9c80dd17ddb6d32551202f3264f17bc5063f3ba9b79b42312f32be4c7b355c7a969d18747173ba3995491ba35a7708379b5bfbae535d2f0a6220eca2e83bc9d000817ebafca9f86ba80a6220ac2d47140e152f92178ec7910d89254f14d9706692c6e2e9a9127809e6f3ef9d3adaef6a820dd81bb8b674b48a9e177db08d25bd2a6efe9f3f8e0eaf5aaf004a6d2af40606b3d92ef54e0456eabb967e6cc95e0dbbb55ea2726d3c1eeb95615136f2322280826674fcad3da5354aa1d9cbd18a7d532db840ebf2d6cd5ac2c64f25a837aa4d36f4169588227887f73e39864cb4c1d86869146e85f8b815b1e2a12a11c87c37aa370d37145f6624429b1e16a1f7c95d4204b3a1bea079ea6495ff0a704991bf2dd5f1af46780239f2811b9fc3dfdd2d12c24a90c6a1027c99647eb93bc1435dff6b4fe8d01fdd5fd4bdaf4ac628fa9a1c9c7256b1a600b4d82445ee539f7cdb89a88a92a64810002a1128514dfbd43d13f83f9aae3c0758bde5d73ff020c20f938ca5eff66166dc1cb5b7662a7b95f602419588e6229cf921952c506db7fc6b2cd958c4fcef3a56a48a34a2bd7766695a7a97f4462e5559d771dc2cf94e9c5677e2c50ccb6a1e833e2a154711d7bb0dd661d583314fac5a25bf9b7c6db4f6d0b553d13f34b84316009144b44ade1a00ee2ffc133cfb9257dd511f8cb2147987a8c0913adc092a126ccf1e48baa184414f497cedf404b04145f7a2305e60b987bb1c195ce33cf4df24fc8bbb31b430fdc46fadb730fa2423c4187dba9996bfdc72e7efb3b0a08396dbbe14934e99b575f62fb5a1fc3f509eee1c70d64e11374a563a6b474e19d719269e0ba610a03cfcb8a1864065cc99302f5d7619cd13021478bdafdbdddf6c39160a600c9c6ab7602808fd19a930f7b0f7bf102e6e6217f0f2b194f2b8f085bde6c47e671a3eb87eeae6d501bc689844b9c53761ead1857c99ed9126bcd73cdf7f2685b69c5fe16239608cd885d5511172db64ef377c5ac9e6f1198bf8e6da4a71a37028a12bdf65cf5492604ee313f2174bfe6ea851e4cdda1c254a1792e64dee5bbee8eabfcf2fe54b32fe76fbf5c074bd05117add2107a7c445292b9a3afae31fc373bbdbb3e73ffc080c33b196b7a5732133f2db0166f2da0535daa8821c62fe9fca6e5b6e2746875674ab69b635797ce9255bcad160ac0366ca006364933a0c3211ce186f794f09db29e7c8033bae26a87befa25f6ad1aa50cdb868068cb14bfc39f9aa4015d6c34d767ce05c059e94c49bcedfc8b6cb77f1cd38878fcb6da70ad75768fc338d64084699b9a55ee12bb2d1079619412774787c4acd68c255e117855cbf0e9974d9883f62c330fac4576676d65e6f74efde508239ecb16dc729428e6bcc735c0a7b7affae94e0fce09df3dde09e970b3e27198f4f883ab77d4bedbbe50ebb3f4771116b796decbdbeca87b73787164712ab57fe69957e34ea8a0517e836ebf8697c487779d7f45fba7e9b3128b1ac683a113c3cc576c89748e9286c110cdcef96eeed41316cff606e818a51dee8e217e7d7c1327ed67c220597c5a3c6e00b21aa29f05bcfb0a4a98bdc3d9172889f2b966966bf66dca7283739e1da2f209f23da7e6280c7dd8ccaa42f0595d0b887b2fcc676fe17007637c4b22812358355bee68119ed0d89267de7de7e59e98eb3526ef9ab576070d2cbfcecd1c3724492d2e2adb4de49e3fd9820ccfbe4985ed3865623b4651fcffd4605246302e08ebf987dedf7fab2319ca92cd858b0f082bd650e9f6e33f03451c6c05e050d1b981d81f21429d6f7e7cdf37db4acd88c6b8b542cd997cd43b64c6ce44480241718ea50a89f83ddd3baa6f10f4e7a3d934200d1ea8208405e532266022aa73d5c07167bbdcd718b20d968dfe34758d0bdf6dab60cbb3905d417baedbb2c6a7511ae18c7621ad6372e7396f0e00aa94080e8e8b3e6f0531cf509ab88c84e50f86d256fdf279e759971fd934d9c596dd4b5318792fedfb43d294afaeec843f974f03fdfcd3a523a2267cd35efb4add883dd07e302c14d4b1a50711d61891af04d715808025c4a22931f64ac81f2a468c165d1ae647c337b6d464f6fafe41c06f48ed973a949a49a31457bd49bdbc9c032e2a9458a106ebb308242fc0a5136b0af19ecb64bc917e607ed969233f173300ca335da44f56a9073a360aa23d5943909979b05ff2db419fa9173b111c34abb5783878dd92ff821bdc985276e1a52dde50a069f0b4d6582b7d53e4f0203f60888dbf41354a2d75cc0145a91e52bd0023edf793521271d26b373c1d578b843e4a1fc28f52a73ba193fccada7817ae62292776be0512f2e68ccf3e9696606648078a9198eaaf064da3b0f3995dc36c4c67ee091211d81eb21e5aa29aa68705295d85cd256c7a4fb85b9f8e3f03a877a509f64e8288e2bb2a81bcbf51ba83ec6ab62d511839e6cc209886fc68ce4bbd37f98e105f589e2dfb4434bd21a13dee9b2d6ad168b706fc0a2b131bbb3984e04dcf5b537672b0b295bc8baa9bfe4e8cf90993ecc3f2444756e4678bf618f20c236a2503607bdf2aa48da56a1f8caefd078d1686a215c23e21938c98ebab636274d9be5421f0ac727f3d4ee662e54477202ce68c86caeaabb9872eb2704106109042420f8750568cbad53a8e14d0e9ad8a88faa6acd62fabfea6a69c02dbabd3968fbbae7789dcaf797edf9739eb7cff424b5d5773ccad3386fc620164f6c90aea1dc7fbf944c7862effa14781978238f948475bb482dd8baf1f5fd64176695dac7a686749ab9e27a33b42c8fd4d14531bad1874d9b0e7e7fce9e25767de4f78ebf188745f1ab3de25c7b850313283d28a834ca6897f369971cdd8d45c0e256d85ea3158ce3c6c3aae20a7f67ab68462687b9fc993a29795743ab3ad80a49fed81d01f147cf9c6e67088eab2541543488839c74ff9a84f16d188f29c550dde7f5c507aadc146b00be135eb49e2a9680f65930452acd307882577617eb70808bf7221cbb1e1436c591c385097e5af6839115a859fb3d6b6ff93e51b4520423a2d3e1402aaf6afb1613ba7cdd1ad1f1047890eb8347c1a896ebb5617221e2b90aadda2fbc75828a2f55ef44057019536299367dd193143623d4230354a55e444825cd74fdabdc6f4aff6d64b7d2ddcfaa797cc4cf7b9f0e73fbba0061d4104fb868c3313d689ecb3de64cc2888edd84487707683116f0e10f171d6bb41adf4aec03a789c6eb8618df8a7cc70637ad3135ebb0ba766c5488c14963dbee70a233e297c5eca2252766db21720ea056804910aa3bf31274e63c5f78f078543709fc28b32165a269887d64a5b1636243d92fc699cb721d364c842ca36f451a6837789a5dec0f68ac56d859d34a121fd6cf584f1b9060e9fb4359ab33d83c456b0d7ab8ba3466de61b92f16b8d395f3ad1df3f41ba54aaa4c0b8ede304c840b98d107185214762ea35188cf8ac0a4c7a175292c0c7c42f728232d45c8c8da6c0a807a5d67bd577646987d02d128cbe5a2b3f81df1b577dfcb0dd72f356ad724e48c9b08127536ab481969050be9b373008ce043dc1e98a87a327204adad6cd8d7fb6e32ea548728c6626844fe1231e4ce9202d981871c440e185fd3d080792b1e", 0x1000}], 0x1, &(0x7f00000062c0)=[@cred={{0x1c, 0x1, 0x2, {r0}}}, @rights={{0x14, 0x1, 0x1, [r1]}}, @cred={{0x1c, 0x1, 0x2, {r0, 0xee00, 0xffffffffffffffff}}}, @cred={{0x1c, 0x1, 0x2, {r0}}}, @cred={{0x1c, 0x1, 0x2, {r0, 0x0, 0xffffffffffffffff}}}, @cred={{0x1c, 0x1, 0x2, {0xffffffffffffffff, 0xee00}}}, @cred={{0x1c, 0x1, 0x2, {r0, 0xee00}}}, @cred={{0x1c, 0x1, 0x2, {r0, 0x0, r4}}}, @cred={{0x1c, 0x1, 0x2, {r5, 0xee00, r6}}}], 0x118, 0x20000000}}, {{&(0x7f0000006400)=@file={0x1, './file0\x00'}, 0x6e, &(0x7f0000007640)=[{&(0x7f0000006480)="d21a5f89a012a8df23dcdae426097a8f887c18cec72e37ba2332213ec7e5e25288b91c7add38cce0dc1a2c1f81006514556219e211d1daff8836dc37960dbbeaa78c46f60c56ba553824f414a959969749fc98a69b0a8f51ff1809c47932740c535ec8ce63c065623a6cbec130dc8a2c03166b1df0c39dd44827553335f53e0c0b65dc6722fc85fc33eabbc739b12d8549c0abec6514cd25027c03dcdb204ed37514cda1ae", 0xa5}, {&(0x7f0000006540)="94a7288795628fa33c421cac01ba90ffe9d1a4a44ff4ef7a85194f3d64d8fc9db91ae74c503132d27c188ade5cf2355728945dfab36782d6a1b9cf2634efe11b453ba13fb6fdad9dce7a5c9eb63fb68674acb0543710332d75bdd76fb8d4115f548a997711bf2f637ab85b1488d245db6065e3880c2cde0f456bcb178f56cef4d51c69c9f38eafe9f229e714969a0a37aa4b5b904792bd17f833d891bde872286cc0de8b7791d41786c6382bba3f6ec8a761499a164a18546885f995d7b3f6a40b3be619929097bcc4ac68fc25bae2c1bbe7081dca5f98a147ad35ff6d4427628551285cb6074f1717e862dcce1707b4a79e2e21daa420722ace6cddf9f0f72319ab5b8cdd56c10560ffaab1aaa3de0cbc1959b53b8ceadf2e01b8e026416239d54682e702cbb644242492a79466d83dea4b317d7bb976abdc3a033f64ac9899212b5c78cda0407f9c92b8034eacfa0078bfc10639198262b73e1665afc70094b4421b4361889d9451cda2224624ebacfb29ba95f9e81d5c16b8ed6e3ed059a99a497bf212d6be02a0a7822c32598c2151e6173b51240f9ccb2a3c36a7acee05a9e342009b011dd350badb64bf0755db0dfa50315d9d37a632e64fd93d621e91a482456fa390d9a1d08053c0c30f6d19d72c7aadfe74e21f75e0264534f19abedce8068a1e3073ed03608f47d14744af996288be6972f1f6a35edf6f32886c3fd99cb2d87b713c696fc37508e78842f73c226fd5bf5163156328ce0d72100619797bdb8991c5b9eef59a1fa8a4c316ab602a7ab7dd40d8c1a9008bb5a31a620b27a5136a2ea83ebf6b8827685332d19b15240838991b74b593693367a2d5ff8ea8a0475668c8bcbfa5d4eb171f3fc7e96558e66b38510223aea00b07fb43c2a5c7e3760ac72cbb9974a0974a607327823df7442f5a94ad60bb6fcdb71b1375d15cf225cd39ffc1dd1727c9f3755e3362b25a377a10cf2f939128299339d166aa66a77161f08d01b25f8dfad7ab833e7ff6880a529c82a01f0c9c98e2169203433540f56e3bae5ed4495df5bddf3f28450a38784d1cdb476b20dbf24d2f446fb16f78ee00503d8978bddc8a99aea05114a02236c82293c5a4ee68584cbbde2d4d32223b0266560e28c1cb24f3c754d2c1008198a5e92a66009b2b998cedcb269bfc898730bf2c57f0aa0cdd59ccaace09a955c7ed0f4f1b698dd86620594a56ea4671b0e58f5b20d4b53e1bde0b81e1bba7015582e253a8ebc05db4115982789d30e73fe837ee96274740479f6dd380acf1f861f1c33dd798d378dffcf6f90d48ad9a7011d09b144af374721b631514ed911ef95fe6bc62791c2d8c78ba75f3e7a4ce9d9902ae648060334a70b8257e61d4203c6b4a0de9186b4cfc39a7052cd8c9727b1d295b8440c68ec8cb3ca3b454294d7c47924b4a29ff85939d6acd45d2294c38144f39af9725fb40b255851f7dabbfa94c9e88e4bc5e0cb5c8fccd32f696e692da58fb35962542291c5c28f7047aadcf3a7649768309e81059e46213aea9070cb7d65c176a602b726bd3317bbffe8548f0a2b123fb4f897b10e238eaa8a65c2d435f4bb88a2c02e04da99b42920cb6477037f27084fd834c8eef119b5a36828be7489b429e85df0659d56f2dd9c8ab9f1d290fb03f28d3f5ebb9d0dfa7520463909a02fc4321fbe1332ec894226db6d2092d4450a7b427dc15f063a4bc8ed9746227a37b074d0745acb8825f583f8b39d6eb05d112216b3a46b37aca45444a2b039805a65eb903975cadcf8769d00da2d6b1d7bb40af9345e3dfb17510474f1ab54654296151c87809fc9d30f72c60c648e37ecc40c04f8f7983bc3085241d219ad99f3a434a59e4604b3a4c287fa1392e5cf91b4132be2540af606b2d456f1b0be8d51ebfe0fea6f0990da81ee6225528931dc738465379a2af43e3ea38ec85992e2c29e0d7da222ab0334d8bcbdc2450d624efa7f2854f9b2bd6e974b448b8adc6451a324f227714e3c1d29bdccf287411af9bddc91f6bf324fb0b2a624fdb5e4a81005a4b052dc29688da89fd1af172dfb56c8a1c871b3a7e84b2da931e9c61654d1906e6d005e797d21e4cbee35c57b6cf8e3b6502199e2f301f90407f7370c5822c1953690ba8193326bb3ea53cef40709e7ad698ff8e56ba183504401f7271c521afb522afa9f9f39f072e41ae0171a8cd458ede41337fef84d4c5cafac8f748ff2d730ac0479e021d04a661896ba8c2b8a59046928b657813159afabe6389e139e1d0fa8961e463b5947ac1b7ae5632fe1d45749c10bedee0d16a1f36a56242b5ed348605ce27cfc08eaae139232112e887ed8da21ff7e32ae4725db77d4b0cbb15e91ca1acc423db632284822ef63dc9241b607b5b76f7707ca3e987ffd0291afc093c8b3e259fbb09afaa407e0f6d7c4fe4c7150ffb803080e52b5d51bd973f988dfcd4c5d6c017bf90da8ed454d6d21689325ef5f8322d55cf49cba4f3f86e141b6b5bee0e5c0ae73bdf9c9d8076c155ec4954c478f9db79bfa135d6f23db4bf75b7cc2e56eadc85ebd74a4cb7c26dd5d69138a00c9db02de0a3a3d5a4ecb01a4dd38af9b5de48c460ffa1e6cdc85a2099ae5173c26947624fd26422704f2171a828a33f5bece2e3233dd0703a4521e97516de68135974fce39577fd02809350e6be7d98aeeed50c3230681a232f82753cc300898a5855e5accc7c12c35c5632e0d1edee59430ba985ab8c1377674eedd30e5c510c305021d33e906a0415fdaa23c25115691e15569ff9111a1c9861604f82de3a82088af3f635446eab394e542907f1c643480cfc5c0a7b3476ad3f311edd98009cbf35cc074988551a6f092238004742b6cbce0a25f8bedd548fd63734865f80e91a876d36173ee71e80d10d5a190bea4d5282d993b114148b5ec7d04691f24ab308c570a38839af9ad0c854a5dc79cf722bea6e113cfb59a53328151c6672b92ad46f8844d36f6668fae2ad89a4566ba7e82486088bc1a5920ecaf70aa8b6f9f97321e62342af42365cf4d70c25bfd75cb260a33d9297e9a6d0c5222e27f1fd8833c39bd72cf95f62235cf580fc0b9f8ba85cfb46363724d57b02e678735d53676c59a6a3440f16f5b1491ee85d7040b5c1c5cbe38aece79c0332421fbfd310f349f08076d69e735cd28596e75551060a429735d42f58658193c03be2cc26e8a96d2c7e591488c74031c2294dc0895d237723575189777f92e3932483b45cbe3a274871f3acf78e066e8ce073bfc58520a423371877964e559bcfb5d57029066b7ed26804f003d2accaf754cd1b56c80acac7564b325c8d866ce6528704d17201a080b9b8dce1ee52134843817854811634bcaa67e170efdd2a4fcef7dd69ce648362e4283e62b3e346ce3fafd6d70de4d6f90dbd6e8e6604a431ca6944c5cc750ce04047e1683cd656ea13f6b920a7dbd0f7239a7813c727bd43f5a3d170cd08d30baccdab58a874f6ecab0e1bb2b83f49507ce374b4495b169abe34c7c6849929bea9615a88ef67305319009c5781fec95622b0def1c2a2de47c259e8dedc5e5f27440151421cc1d7c6a10ccfbb802cb516b22ae527ff2e8e1f9638aa11958d7499f696e1f47b948f8eb6e7d4c9c5dd507de76a04c6132768cfdb6252fa478eab971a6c5ce54187a3f0f9bcc6376d4f787a2f737f24797fecfc1532651cf2884096cf9fd48776fc8f8e1f53ce47883ecfaaa6b176b9357e284b7dcae0f83e9b9ea1f3c1a6c88f6fae38aae802c8b620e75cf5963c53ed12aa1715d1a1208a16a9479c95f61e2836ccf8d7a6e21438f7607af17d423b0d70fe6c077968734b7b4b583cf70adf7cc2096bcd9afa3c18b62c5914388f51eab73eeef753c515ac2c612f74bf93b6eaa550eea7e3f49e2237faccfc3bf8442fbf2d538140f299e0b5c2642d4faa3d53e5ffd4c8bf65876985bb5b6e7a39761898c3bd3e14692222ed855bbaf63afc1cb177ac07f3a9eac65752407c8182c8917ec7d2ad75bae4bd0fcdd0f4be097823e6adfeb730b458048a26e06c4ac5c167d448dfd2c5e2afe1db7cf6d443fb4664aa42154ad5bbc2406aab97e75917531a5990b311d4af8c81af86419d52a905c0a40a08bf3c906619e3bfd5b96a57f41d2a3f630d1b12093435f24f61e5990e00b809ffe431286a2b54de0093cff184a4951d1e7fdb785515d8781933ce5e318d21b842ed80cee9897f38f5c01d68f9bca611d862ab04c8a09b181182539a433431857e9ecd2ad2f983256eede24df9bb8fd71a57eba9c0142e173b13dda3341a86a940493b619975b0ade5ffa66272651129f5789930338f3c91672919d2e1ea0f856fcc5ac722626b3d023f2fab8357334b36e1ceba2d84f015fca1d70a7130c2d2e0d24acd3ce38665ef81d2afcb1a012e6f589f0f91b764b26ae2bd8de1833e9ae9eca18162db97f22e21b96bfb75f2c9d94df4e75150b404a22ec94d93e7aae8469be69e7569d12d6eaca219bd2c2873e66b1137d8f4c47ad9411550997bc11a3920d3527f58acaf21c2e00a128eecb41f314a4d1af26bebad9f6756678033233d724d220093e5831fcba98894afb66c350dce780c8428212bb766e6f7696bdebcc16473bae888f80ea7bea68855de499b4f40eeb5e8a3cac204e40076308887aec13a00e1b875a909b85618b1a419f2b1bab1aeac14c008e9dd0986de346f7cf68f72d648eabc95a69fb86abd9828fe7cc2916f734ec39bb1c2d2e69629a722f31ad56ddc657fbd11379a1b39315d155421c5e4adf1a5eb923e2b0f03b119d5f62fbd26781772bf20e41b34a57947fcd9fe56c4a35061f2ac255bb588acec9fd1ccf6dfaea8a3f58024b092de12af7c95bc55cb5b8436a1212cb51a3ca3da272a17206a3b631aa5e72406d7b76dc4a0ecff0382345bd5a28365be276ebdd001fff5ed0d8d859e03d306b7ba71c110e7351221daa4b01a26217275af4838babf2c729e3591ef44fddb950f5a0322a9cfecd7d36ea7f0dbd759f441cda6415fde2dcc77aa1a0ac6a35d91f568a40b4ea7068a3a8f15ba318fddd81687a6d25d5be031889b382c4cb6c907450342854548dea1933a77e303cd17f93afb9eee1da79c49ed6369f6733289930fcca12501c279dfc396820b7dbad0efdbce36c0db9e5e8f835e5a5e9e8bea39a19d7514da0e4e905ff1b6b4a8d9e83ab6fc1eb5feb6c834c678260f8d6432dcd0df0dbbf822809f8724649ebe9f97582e22c2a0e4904fdf8992aee1e92622f3db81353ed1497fc926b121a0158587a5b1e85af608ae8d8e80665ecb4d04c43dd0ba9d6186aa4ff3dc3f5d428941319c534aa21ba957821cb0974375dd89d2c38b32dc71aba02b3ea97629566a1d3ff1e5a8d6c53ce2efbf2953c7539ffd9a3afe535c93f67e107819929d86f57343c4e85de9d82f8c1954ad3a23fa3d505b8660ab375c3f9369afaa9520604d776e2fed3d6dae64010943154e23ffdc1175d69fc3517d37b8f7dc38a24c0cc136366d9486fc29acb084b3dfa54ff7b4867327088c734fb38c58103e2f721b668768f4bf7fd1e490d19ec066a7db724a4e79a1a4739547b37a795aa439c7eaaa3e2604c26709b5ddeb3c560d6389e35bd0d73174685320b539b114c4378353cd7c644e03df334e14c7783df09ec9935f3669a3d95761a2f2e2ace35223b6bfbefa2920f358678901587746d28ae801380a65e22f325c51983f13d8e70b1c7a17feb588dec8d5b698d6b74ba8e5da44fb524146c89d169b6629e1f2425eae9cf6236259", 0x1000}, {&(0x7f0000007540)="2d95f573fd85a7183b89c97afa7f591ffa", 0x11}, {&(0x7f0000007580)="3a2e52eb3e215ec3d036a9e3f11b6c0507e43c85645e280d7d8af15f167d50d9dcb1bc3efed63505b6a44604b05c65856e8652ac12af1fc72cd639924bd0b33abe43f45f8186915f8aafae5ed0ab94bee0ab765cbfd12f8faef80205172d6f7231fadd8ade406247b49d4362b2ee4fc466bd0d303a1c33d236d0648c0a7757ca00ed906e069e2cc0b200aa292ebe14c834721e9522deb7b505eb79f30d5d", 0x9e}], 0x4, 0x0, 0x0, 0x4810}}, {{&(0x7f0000007680)=@file={0x0, './file0\x00'}, 0x6e, &(0x7f0000008b80)=[{&(0x7f0000007700)="00011460ac82f8fe6a3728a6a0cf629405f1d241e2e81f9d6a95ed06a03af2910a1307a60018a0defdc985f0c982f7f32e23941f49f3b76259a029fba0bb603214ffcf97d7e4e84f3de3eaa17cbb66ce452274c95142814ed272c8c8c7f4214f02121a8f9247aaaf7e0e92f0829d19f32661b69bf96d1003307810defb7170040a01dafa2e6cdd9f0123d8a286f2e4af89bf11c2d7e908e8f966ef9cd2e118bf35e60a9e6414436975ccd7a9373f5f7ceb65b0691936b387801ddc66f0b639e777eec09a6be52bfc090919f27053a166bccd8d38bbfc0aa9a53c87238d1153c83e74f9dcbb16240764e539fcaa47ac7585bd5e84defb22be7e0a", 0xfa}, {&(0x7f0000007800)="e6ea1594353fbfdad115baac2364dd824af5996109b6f24be9d90561f31a84777700d6fc5812887a93fde3d4eee9ba820588f6703d611b6e7855917cc65de5263325d14a8fc58601f6d70a860f60e7f5cadb538a7b89d0f04e2bbbda25e422ace29e9500a1740d08651a685aeeeddfc77c7c0017d7c9b3654992529458528d42c4e4e2913dfc1cc5db605261de1507015dcad2711b2e6fefa26a6346195f626b00ed6309a8bad1277524373ae4a411fb95b14f6918d8260a691c27a5fb3136d2", 0xc0}, {&(0x7f00000078c0)="6d4a7c2ebaf2136544bf1cb39cf66ddd2e7b9e1d00f054b24fb61cc911387f77a04f185eecf6ba4e9e04be0eb5ec9b02769d45a4707af7d07dc0a50b2c39f5a4778ad58bf4512d1d9b09e95a00089b8758f6e72e0e9e38d3c8dd5e81115480c6fdee142e4916e9c695d0fab8b0372901802687d19c43c870026910c872380a746f644bbf7ec6508438d038ca2e9753c5c956ef1e4218693384b95284d8ccc5db559edb3653e84c95f203cb85f20e76a387d3e356f5280285fd47f48d19b90e86131f7ec9cb0627901c1a481c103ab71206255c45107c3db9f38bd9b5c36290ded240b30554d8f2a747", 0xe9}, {&(0x7f00000079c0)="1ed2ce32857d710c13a9c3f6a902ad6b051de4b46184a76a6db4189a3637ebb3d3ec38e44b24e6759bcaf643dd559d17250cfa77de0876cd89de9056d62859a2bcf5e80937b111ef47f4deb4b48ea190f0ceabd0e9813ba9b9b3e36d9c556add4b8bb5e10927f4efc2a7d9ad3b7870d91039ef1276199153143a9b42dde2cfced4b3bb3d938a27cf2a54c08f031df387c9030068757a0243e7c14a2d553b66ba0f1ead8f32cde92abaa184cf8f516ef9b119ace7fa0815caf057d31656e897d5cece6527e50b90271f2ceeae890d8743fdf3e573fc995c5ee9f20cd6", 0xdc}, {&(0x7f0000007ac0)="7792a2af7fc3753bed412197a4577a006f4f360b02a2cbab5e3be787c3c85473cf809eb51a5a5b11a3547f94cccc2b5467bfbc67cfd4f98b7a712e111ee497e274e8811dfc8c2b370db40007adf389c52d77b7cfc9214740ab50fb1d5722f35d9e75efdf6b930d77656ff441d670368bc5a3a958f1b2f28339646c2c199859a09c25a21d15e9c2a84612d5db8868cd8b3d220875232c8555afe2d50c1e6c572c0dd07d171e8e1436914469edeaf8f9ace007542b5b8cace913c5e5a25f93c12ca97365067605ba1e72bddf91c8eefb4692f405c2251a0758dd7be8bf20d978ab6e014ca105dee2372468282b9bf3b469a9294f946215f939d93e09f2847e84c5377a26f46699846af9a1b2620e4084ae74af9d161fe30e34b9b492a6cf7590452f06a3fcd45892eaee77a41a0b7d1bd84b9b457a0bb93691648ca01587cf98b14676355feea2b84f80a374b40f65d924fc2df708301b0af40314dc9124c83ca5d5672fcad5ef7e8c50288eb511e2fba8200005ceb1ac4613cc3e619c88082b13a99772dcde6f23ff96e22863d61b45c5a5ba0a567f99902c16fa2b7012c054815f295becc04712faf17ad819ea730a6f511acaf5f62604e2c06fd4bfc313519c68d6ef5d630d9e9c3008a49956ed35511c771f35f0f84163d826a04c2e1d58d8911daae6cb4c0ff71a845495fa994a52bca7f15f171e6f364b5e046a087ec3833e5ce58d28ed3cc9642dfe98f5a2720b8f3b7a8f69e09cc752baebdfb84aa63fbe925d2d49eccd38ef5b38613521e389f749b38af7dd6e5cda454aba71f414f0a71a016c6016495eb1907a4e9f9456dbae395ca95b88fe163973af4b28f66850b79edd76cca557f83625ab81e89ec9abf50c73326ca19bdcc838b0527d6555cb29bfb620290dbdea674bd22e69b45c93d266fe41b0d8fa9e71c5f346486dfebaae27d706e2aad09ee11702d9649b8681f917f8250e0788be4bed98303bddd1a9e541f93688039e6a51b5b1ab2ffa9e163f122ee0105590d7009d34bd32b08dd277be95351eb2a18776ad0229b5fca995fb9a93cd1251a2bfd9f090720252c5572239bf0fed2c55017bb44bee63012aa48b9388411ad5d64f8f49d05d2cb7ce1b7ff441f19424ff0e84314cb4cdb4903934c35582485145aab4d71a593aaecd518a44eab869d91492c50371e6ae255ebe1af6ae64825a50239cba83ffcd235a8e56d42dc343dff3f7b7ecd6bd8bada5dd0054b5fd5adbd911acc8cb7bf678e3f9b29808478aff8b89546d52bccf993ea1676e3ac2d95f9f2277086159fe0165a20a08c5ede368287b41e57903ac2192fae8a52f0722ed9ed4b2bda826a2a0405be929e1ce148c94d9e7daa2a9123786f1aaeb10abe3cf176aa8b35139b35b0d47adb1ee0d50335427b929000ad97875338c811514ceafdeb882a21e14e9097e08bf57875315254c9439b2097be60dc21771ed2eb536f20e16704f730f02b49e937a7af1eb4eb871075833e3264b6108ea939f2a31ead588d735257e7bd1268c2257deaa21cf5848602e096d15f285008af97ba301d7d91060f1c96e796572a99d1bff84d751be24b4519b5378a13f2fe9c9d16497a3dfa745b2a3cb8e0832ec636f5d82feea2714c86ce52a009dd901da426523ff25f95b66cf9e28c4b0e489e5bb68db9ad823be50b2f25700ee55dd13db67b12175e27e61eef130a1f915714998c61cfbad79e5d5f95e3f91c46c4c36685c5b4e6faf685d11972c200f6802afb0610c39b9a1b97eb67be2bbee10eedfadacf29fe54ad2c5ecad704877d732245a6388f7be9f4ec0cf847b83af6f8b771fb77c955a9de49881d1e24558b7b6a7596b23b7b9d45c60cc21fba309a0cbdda5a95b0141df9072a48cf115d7d93480a928d449e38c5cfe85374e33777abb88bdeaacbc7272172251bf7c7067b8dc23c3b88b912e2dda8b153db8d17b8f163430a3409eac280eb3fd21f97f306f5bafde0bc2f8bba3ee2c77fe589942996c2027c5e0ca4f2fd1c89f873e65ae6b2b8c1e2d1e8cd93a8c206a4085d7e90fa2a3dc6acc5ef428475a0b36f1242348e334e8092af40168d9364dc5aebc4e9ef2719e4ec376d7878b919dc4da350aa865fece70a4e64dfb38bcca6453fcb94d0a691eeb23e59958c3318717d5e0bd53b2f9e77399d6080ec614ab66b01d6909d11ac98a6babe55d73007d78ab1e24f0cb74a001869121ef76cb72247bf47cdfa9619369170686d03f05141d5baffe16e8798f94b6ab3596064a9ba597cb8e4d0cc001be3ca3f9c244dfa0a44b383df5837adf443dc1e2be0651d45a3a637d29d04e10f26ec2833c444adb894dba86192291af218f8f561d2f66e7e14845e1385aee4f083dadce437a2351f57929bfcfbbc3ffd1e6af22989000d20c9c31eaaff52408c22ef665e99a7ee9d8b9eb4993acbea260421e1c19dc99f65eaf93645331ad054ca0cdd4a8ad8cda1953b7ef3b0262cf204cad9eeb4ff776c8c5770e0c82a864f26fc9dfa961085bf22804e04232c5d1fa85fb0958a97623df17c3369a678e6099950eb88770b505db08aa33db536ae0e5861925ca326d5fbc09708a702633d1fc4ff540894c87639e448a5d7e8e59c29fa3d0a73f4ff580f6d94abfedf6962582349cf6075cf3f70ced0fa2c07167248ab6fb42478213641c27fba7c86da2325cd9985fc6578822b6a0931a34d129ba34a92797e09c106cd72c565a52f7c83a0a22d16ee690d4f3d9f6201e15b90316245221392a42005ba029f1a47b5878adab8e592139bae1c04e7d04eac7d3b9dd94535c233f75b0bba1aa347a60c7dc61e3feef462bccdabaefdddf02bf020fb8c8455c71c2d5258a32b396505b5c2a27afea9cdd70b4ef7eb52d73e23998a1d5837e48036cc9cb48e1c9121383e60e309e587a2450b2b4ac14033b0b19cf50978a8e967692bebe7ab4985749254df1b8a35c5da0b05cd03139f21318f06ff5a375e29df0794616ebb79afdd767e8ad44e5853d296b71d70c56d7969e71e6dd09be583cabbc1b075aa82a571974db3af190359b59b648008b0f3a4beb733d0ea4b9edfa87d692c9ac9eab1c72c3956492d13b2ff8d6e5b02ec8862b6d42cb865cf1b6576775312b798ba4856d2bd5bbc253c74be37d0ae2a4a7d867e728f637bcea6d7018288a8e3cfab1fa2dba15e3ab4c56d799678a5139085c314e9df176fef173550d7691b4bc0334bf185cad5218f57513a0ebe6261b045c72660b1e5cfb0e5f0d346d7186fc1be71823d85ea1630479e4329eeab3a402cc13a5bf41896e72bc759301eaa9135ba7688e3cc7d49c3758623f241e98d7ce6b87934b871c120551fb48efa8d399f7b1011f9b99d3e7133fc2465281a20914bb7b400a2dbaa7cae18e95d2e194b624190d3105ff46769ecc11c31b7120e362525d336cdfbb2077a95b668c23a7bd957fc5bc12a70e0af4ae2d84d45ef667f128089b011d580436a2e36f47cc66a70713451863d8f009908ead5fc4692838679a4645de92fa45784e0a9266916efecca2802f54ca29939683cc376fb1ad45dc8ecc2effe4cf185574edb73677f729655fb68345652c8121c2e23c9d4a858db32353d4d160c4766a16ae3ee2ec41c645f601eebe84cb078a678146ef4f31d4791fd1dff6913c35b7619d24a84ea6554e3647736d9ca36c6d6102a060dca498f13aaa27914c7f9ce194c925144aa9cb8b64bbe2ef76afccfda22e6bfcdf2688c66a943ab83d6e57665b422e101eca83d326cffe26185d58004506df48878ea9ba5f2427005696d1043543a481d9ecd57bba9c83805e985f7cd5490bc25d55e0b0a898b52b084b83ed919fa7caeb4aad02ef007083ae623e8973cb4ee01ed9bc7e9db1b7fe40e2ae62cd396a7bcbc3d163bfb3bb2119848a7b14a8c0da671d7d39188ef36c626ee280900aa2c9385d4bf0f8008fc46477a153856cc49ce7a6c0af90ccf94ecbc21d38782a576dc9c4103138907eaa8c22173eb6fa2c48c591e89facdd29e5f641b675fa7faad17d8b2b86744d8cf4da3d888b8efb05aff988afb17f84e465e49b94dfc26e78321498a8ccb05207d5e4657512f534b50b3b65ae28fecbc7004b71bd2b0ad79cdc83db426fde8e6c9959a173d04b8ee119c4c2cc50e6cb8f40af87d01475d807c9f19ae95122ee61eed4f2ce29677568c31ab1ba40034de80a9d709db1781e38b396f64c91b1c8344efff05ec2afd8f1296df45e697d2f0a9d3d562d1f18089e3075d5fdd58bcfb7b745b7817b739055db9caf2624c0f2209add39fc33d77b34e48125b2fdfed4a09b7b6d6291ae14de00bfa04f74f99402ad1c68ad4337f5b490038eadd3f5a930d13fd453ace5d8eec195012cab787d6f11a5d29b66484861bdb6c45d8b1fdb31f40e89d7394131ef5b7fc368ba52a24c70c4f292fc7845317da622ee0e6703c94a9165bc56c1fe0cc3b7a14bcc20852467995ad08cc03316a14d02aaa429ec894bcc53fb25ad51c6eb0d58556141be84fdd58e58d56e703630bf191003975a382be31cf432171539e36e898b24fb4a80ad6e71d462f28c8ab26de53c1ffbe53d5eba6a6d40e0e31b18da1ebcb726ec8071bd5657ba05dee90ff3f0c884387c5523fa96577225f85026be1e8f5cfab3cf0d4d16bcb6be18122fc8712be0c043737e323cb6d17ce23d913962d55a96b3ffa9e6fe5af43056dfca4a6da23e746917b1105af1210f86d6d369bf0d4b84aca771b3ed3620e64f53ba856764eb5e339f88962f4db00e0823c8da34fd761913489463f00a6744e4fb27b9cab361bae266b0e8664617683ce2182367d27edb6152950daf9e3580196bd587c8d2835d9e2fb08ab0988686ed7bdb3235a1568152d17f8c82c8f6a55722437739dec9aecdb25e3a5d1ae6d0731f30b86fca90887cbf1cc777fbb7a190474d7b17563c77031f6413e383c996a797c5171b0e3beac2e689d0789577177cc09ef41d8e9b459285da123126a248e7f8add1c041af50c7bc05aacbaacc4b2dc142c0a770b14b5ba1a4001c3f232c27db2de182b12e2da84e11eed0ee2eefb596d48886f48622ca02fe9945c109cd227f4cbea8d6206d7f0655083d790a29aeb64ba86695981a3c64ed283568aab13b2bef69ab8b25de7fce7cc29263242b43eca5ed8d32fb4abaaec301c682b87c23e5bac7083fadf5bd90831995a97d0c1dcde6a6d03ac7280c32916a605b830d6fdb01d6b4734b01ccb0d4822616e0cfe8ab32a090c0c132b347e00964bc0a2794b2a206e0f3316cfb3e7751cd59922c01f1c652a67e329452c7518283cebdb5ad53ffeec6e376c19b6ab8bfe36f44fdad48e5c8c2bf3727740eb3dccb9d42c9dd68cef6497ed059ca8f5b686a0695127e17b8c6e2c3d90a88f39f219ffdc2e1841030cb4ccc6bfbcb090f16d57e31afb6d948131da1ad146a06087b5c10ce120ace71f3453e1a72a33bc054f0ffc7e8b631733d872d0f9cc3a201eb5faf9f027ad4746a37c38f4bea49b103e4eb27c2c36bf360958c4b6952fd00b97964e00769d52607c3e7c8af4a6395c25bbab20f5bed2f286a46b4160d6ea0dd0ab6b903e2f136a5b31cbf74cf7de67ea18042d3602960683ba0d27ea0554604d0d625e9f2b086669d06dad47b48aad013cb00ee23bc6b6dba41ae13d3ab26dd97e4c2cf0f19142d25255993e6e7d40020b84fd72182dbc7c14a4015f14cf5695769f63178897b1a6918418af9f49b36a5c2439aec20e007d4132d9d0c28cab88251d60831aed02791734b56c9a5ba171d", 0x1000}, {&(0x7f0000008ac0)="29d18c482289436f1b2f1cf2999f15d9477cf16421588c70fbf4d68111d4274bd2a9c28e81e084acf87d4df17b9348aee06303337e377dd758c94dcc962bfbcdc4bd951cdae90eebed8f4ace4307184e9ef0", 0x52}, {&(0x7f0000008b40)="c4baf3b863ecd0a7a854969e3d5dadfc49", 0x11}], 0x7, &(0x7f000000a200)=[@rights={{0x14, 0x1, 0x1, [r7]}}, @rights={{0x1c, 0x1, 0x1, [0xffffffffffffffff, r8, 0xffffffffffffffff]}}, @rights={{0x28, 0x1, 0x1, [r9, r10, r3, r2, r3, r12]}}], 0x60, 0x4000000}}], 0x7, 0x4000) 05:37:35 executing program 0: r0 = socket(0x1e, 0x4, 0x0) r1 = dup(r0) accept4(r1, 0x0, &(0x7f0000000040), 0x80800) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) r2 = socket(0x1e, 0x4, 0x0) r3 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r3, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r3, 0x0, 0x0) dup2(r2, r3) getsockname$packet(r3, &(0x7f0000000080)={0x11, 0x0, 0x0, 0x1, 0x0, 0x6, @random}, &(0x7f0000000100)=0x14) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@nameseq={0x1e, 0x1, 0x0, {0x42, 0x4}}, 0x10, 0x0}, 0x0) 05:37:35 executing program 0: r0 = open(&(0x7f0000000100)='./file0\x00', 0x2002, 0x101) r1 = socket(0x1e, 0x4, 0x0) setsockopt$inet_sctp6_SCTP_AUTOCLOSE(r1, 0x84, 0x4, &(0x7f0000000040)=0x1, 0x4) getsockopt$sock_cred(r0, 0x1, 0x11, &(0x7f0000000140), &(0x7f0000000080)=0xc) setsockopt$packet_tx_ring(r1, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r1, 0x0, 0x0) sendmsg$tipc(r1, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:35 executing program 4: r0 = socket$nl_route(0x10, 0x3, 0x0) r1 = bpf$PROG_LOAD(0x5, &(0x7f0000000080)={0x11, 0x8, &(0x7f00000044c0)=ANY=[@ANYBLOB="620af8ffa1dc0021bfa100000000000007010000f8ffffffb702000007000000bd120000000000008500000010000000b70000000000000095000000000000003faf4f2aa3d9b18ed812a2e2c49e8020a6f4e0e4a9446c6670568982b4e020f698393aa0f3881f9c24561f1b2607995daa56f151905ea23c22624c9f87f9793f50bb546040677b0c5077da80fb982c1e9400e693146cea484a415b76966118b64f751a0f241b072e90080008002d75593a286cecc93e64c227c95aa0b784625704f07372c29184ff7f4a7c0000cef809606056feb4ffff0000000000007a5e6b607130c89f18c0c1089d8b8588d72ec29c48b45e0000000000000401d01aa27ae8b09e00e79ab20b0b8ed8fb7a68af2ad0810000000000006fa03c6468ff6023cdcedb5e0125ebbcebdde510cb2364149215108333719acd97cfa107d40224edc5465a932b776f94445d8861e41fa5c90860b3a74e802a0d42bc6099ad2300000480006ef6c1ff0900000000000010c63a949e8b7955394ffaff03000000000000ab87b1bfedb6be586602d985430cea080000000000000026abfb0767192361448279b05d96a703a660581eecdbf5bcd3de3a832000000000af60fd6ad9b97aa5fa68480366c9c6fd6fa5043aa3926b81e3b59c9b081d6a08000000ea2b1a522200fcaf99431412fd134a996382a1a04d5bb924cfe5f3185418d605ffff9c4d2ec7c32f2095e63c02aff994a88e90916a721c86fa740b5b7632f3203091398b1e592176ff0100000000000089c6dad7603f2ba2a790d62d6faec2fe0c7ea4928b30142ba11de6c5d50b83bae616b5054d1e7c13b1355d6f4a8245ffa4997da9d50b00000000000085ec6bf58351d578be00d952aab9c71764b0a8a7583c90b3473b809cdbb4bd48bc877505ebf6c9d13330ca006bce1a84521f14518c9b476fccbd6c712016219848624b87cec2dbe982230000005ea06d108d8f80a0eb4fa39f6b5c02e6d6d90756ff57902a8f57000000009700cf0b4b8bc22941330000001008000000000300006c000000000000000000001000000000559711e6e8861c46495ba585a4b2d02edc3e28dd271c896249ed85b980680b09000000000f00005ac15fc2288d9b2a169cdcacc413b48dafb7a2c8cb482bac0ac502d9ba9effffffd897ef3b7cda42013d53046da21b46216e14ba2d6af8656bfff17addaedab25b30002abbba7fa725f38400be7c1f001b2cd317903f19e385be9e48dccff7433282830689da6b53b263339863297771d74732d400003341bf4a00fc9fec2271ff01589646efd1cf870cd7bb2366a508000000000000f870ce5dfd3467decb05cfd9fcb32c8eb0dbd9d10a64c108285e71b5565b1760ee58969c41595229df17bcad70fb4021428ce970275d13b7ec070cad11f769038b75d4fe32b561d46ea3abe0fa4d30dc60e717a04becff0f719197724f4fce1093b62d7e8c7123d8ecbbc55bf404e4e1f74b7eed82571be54c72d978cf906df0042e36acd37d7f9e109f2c06f815312e0cfe222b06f56dd022c074eb8a322fb0bf47c0a8d154b405c37feaf3dd95f6ef2acd1ff582786105c706000000000000bb997316dbf17866fb84d4173731efe895ff2e1c5560926e90109b598502d3e959efc71f665c542c9062ece84c99a061887a20639b41c8c12ee86c50804042b3eac1f871b136345cf67ca3fb5aac518a75f9e7d7101d5e186c489b3a06fb99ccaa7f23a054de2f4d92d6bd72ee2c9fdc75aaaf1e3e483b4ad05573aff3583784acbda216550d7aec6b79e30cbd128f91e358c3b377327ac9ecc34f02c9ae153ec60ac0694dac5bff9f5f4df904000000000000009924fd3b2f10595c4285bf16b99c9cc0ad1857216f1a985f369191ae954febb3df464bfe0f7f3ee9afe7befb89d2777399f5874c553aeb3729cffe86e669261192899d4562db0e22d564ae09bb6d163118e401e024fd452277c3887d6116c6cc9d8046c216c1f895778cb26e22a2a998de44aeadea2a40da8daccf080842a486721737390cbf3a74cb2003016f1514216bdf57d2a40d40b51ab63e96ec8485b3b8a8c9ae3d14f93100c2e0893862eef552fcde2981f48c482bfea6f26e4a4304e50c349f4f9ecee27defc98e4aa37094191e104d417e60fc3541a2c905a1a95e9571bf38ae1981c4238ecaee6f75cd0a6881bd1517a8250df98674152f00002409e2a3bce109b6000000000000a1fec9000000d694210d7560eb92d6a97a27602b81f76386f1535bef1497d71c03006e29c6bc5a1fad6ec9a30137ab79a404abde7750898b59270bb29b81367ac91b9627e87306703be8672d70ffb957075228a9f46ed9bd1f08fb8191bbab2dc591dda61f3a0c4f8ce715570859b67000c669e3690868afc4294859323e7a45319f18101288a0268893373750d1a8fe64680b0a3fc22dd704e4214de5946912d6c98cd1a9fbe1e7d58c08acaf30065b928a31d2eca55f74a23641f61f2d5b308cf0d031b0c7f0ce21d69993e9960ff5f76015e6009756237badf4e7c5c39609ff854356cb490000000000c1fee30a3f7a85d1b29e58c77685efc0ceb1c8e5729c66018d169fc03aa188546b3ad2a182068e1e3a0e2505bc7f41019645466a797744727463033d481b05c96e0d4b3bc19faa5449209b085f3c334b47f067bbab60743b2a428f1da1f68df75cf4498ecc8d3726602111b40e761fd21081920382f1cd12ca3c471c7868e7da7eaa69eb7f7f80572fdd11bb1d070080fbc22bf73468788df58e894f745a868404a0bf35f0121008b722b1eaa6aedfa1bf2e7ccb2d61d5d76331ff5e20fa26b8471d42645288d7226bbd9c9e9e1cc9eb3d541e407cc2dae5e690cc628ab84875f2c50ba830d3f474b079b4b4ba686fcdf240430a537a165dc73bda360000000000000000fe8c47be395656a297e9df0e71b967ce7daac4be290159f6bcd75f0dda9de5532e66ae9e48b0ed1254a81faae79b6af6fbb869604d51de44c4e0973171ad47d6b70ebc7603093f000000fdec743af930cd6db49a47613808bad959719c000000000000020e90d0def838cf000000000000000000000000000000000000000000000000000000000000000000000000f15d6533f78a1f4e2df4ca23d867693fd42de9b49a1b36d48a44ba6a4530e59bec53e876dc660dd6d89f80a4377b1b1292a893a516dab183ee65744fb8fc4f9ce2242e0f00000000000000000000000000000057d77480e0345e67a96413258d1f6eb190aa28cbb4bafe3436b176c7ed4b132fb805d5edd9daf28d89c014c3ecca10ae55704544673e1fa03b84f63e022fe755f4007a4a899eaf52c41069c63e91c691faee1e0c8fe056a07474e6e5490a7d3c34a1658228b60600d837c6befc63ddf2f594ad7cbc56a1e46e218c956a5392a995f1fae8e9f2066fbb33854dc70104d74dc07748f9745cb796da2dfb714e81e1dd5ff41ce7e6faed94fc39acfb3fd25dfa8116a154cd1226e1bb72b59fed817072a0da60160761fd3dffda0f7c592eabd8ab68334d2a1693a684d5a08ecb187539049e331272bf5135044df8041400211b8012b6eb1e26566fa0ac0a22d5656e83f65509bb4b323c5bd61bff949d3bade2f6ffda1360c2786e16937ab61d6dcafed319c716357d0885f9c6d1f442954c167dd9b4acd9468ce3674c82bbb2e313891794025dbe063b7f906217b2cf8410c70238a3e5cc3ba1000000000000008001000000000000006ae6301a2da44394275c582a6516bb92ea1980a0a659f2f1811c8b281c209647c4241f292b20508b215dde27bb2487a6e2b5e4a8ccfab90c23827ef06cbe364073005f8a6d1456aaeb852cd4feadffb7858f24eced67a67ab825e863928ed64c83f62ffdaa997657335b63c6b41659ff094059e626766845fd779c9e6cdbbd64c24936615ee68538e8fddd0d90f3a7579579a142c0f7b318264d5c13c31cf475829528267ead38523cab7e1664e8426cfce471fef821c8a02a7e7d954d05b68a9c28f79429b09e2bb3681ae20b717f3b735123361c193d66ed4d71f19b199d371ec6bfada7cd370e3f45a45e04354e41286fd198532e8cdd3cd980fa1e145fd3f3e96b1feb53c865e1ada08f5d16ed652e190c000052222692fbd679212c225d1d7aa90f7e1fb1f983415f43e75a19ecf7fd21bfa150ef563aa72ba1c43c5f3d9be128ec26b691f31f9cab931631606a81622f120675c962be2d3b5e95f74f0b209e42e6bdd76e6e7252b0b1d78d6f63c41cbde2ba66ad81168070c8c6e18a6e452abed33379d3e16304d06a234f5f9311ef0f78924b68dbb4712c974667bdb54f16fd2061b9ba93638dd177227e94e4ebd0ec1d437db948062bf41742000000000000000000305f70dd35fa0c61d5fe6d8ff35389246037e18d34c1375ae04f44f0c2543c772c5ccb137be7dc1874c514b37c668554d77d4ea5ed144a5e8257f4a03010cd9b91072659d872f26b796e2b81025edb5f45f785e2c2602b248ecdd80f019ca659be7e8ae953325a27564f33c9f058a60be35ab38baab7eb1a66ab1ffd6308f7fd51beb356fe75eb985b7581bb5584c53984ba9c7340f97e8d3825681c53de5f5536c9cc507d14b520a1c348d90ec3752b64391bbe357597059cd81c0c5e2383eb67b55b7f668510b03052c2feb750c2cb1e9296dc9773f37db517c346dbca7fec6700784866e0da35e3aa9be864520bb1ff7632724dd23bba02000000000000008306e69e4e8f5dc67d475db47054814312dd0ba84a6ab070c7eaa36c37795b9bbd8b8b819a2f309aed590ad92c99178ab038215b56ff607cf98f47fcaa2688882776e3fc3d46aa9f5945958ff9fe6fd8f64465c6b5d9f4e0e046cbdb9abbc07e4889033ed45087f29243b162cb54b3ec78bc7942d00b96fc52ed081e8c7706d1dda15104c059a5b01da52da873595b2c3f5a118703f53f3c916c8226fcf99b34a691d9902fc64849f700000000000000001becf598de0fa87df980da2ecb78c68113da4f1d7eb2d6ff75ef8008cceae49629d3ed87a02a6c5a69172249b74bfae8164243ff8c71e8cc2c2453b032ee889f1136577390b6d8ecdbc09c1395010bbbeff600fd7ab2547ca62c72d922c113761a44e7e5d9e107245ce643e526f301a0ee7a1842014544a9fb8ca96054617f13046f40a81f9ceee7a6044c81eb11039855f33922f64e0598cd1d09641a7a9c7045730cf53363755e766b594bfba9e833cb1010b64b8ebdf62e1a89de1f17164b3820c17d9f759941ef3ffc839f9a0fc2acbaaccc67065ee1f008d4eb92464424ce2982bd3cbb726d550f9f0034753361f0b412361311ea3b7d4996360d1ac5f19046e63d62d3ff01313521e84aab000069f10932bb4eeb5a2b1ccdaa73be7668c3c6025137dd692ecb17e365f754fc0b470f51425ce50ee7913acf931525424c73fe4d6400d1c6018b67a1da8bc4a9fcbd719f9ff8717e4f2b8f4fe13376e361e03e4b8f37a199694815412ad42832bf08899cecb697cd4da6afc65fdb5a147a6c526e65ed73fb52f86ca67eed2b0d015b4ff310772fdbb701381a239185e4836bc77647484c5eff51ad7b3e83e59de1488926ebea61a72f0194d4b546240f8b423f0c02828c12f6516ff14d31f852a5d4bb1f7e975a983248339df71ca6c41e9cdde4ed5054dce95321efd65f00"/4065], &(0x7f0000000100)='GPL\x00'}, 0x41) bpf$BPF_RAW_TRACEPOINT_OPEN(0x11, &(0x7f00000001c0)={&(0x7f0000000040)='lock_acquire\x00', r1}, 0x10) sendmsg$nl_route(r0, &(0x7f0000000000)={0x0, 0x0, &(0x7f0000000140)={&(0x7f0000000580)=ANY=[@ANYBLOB="3c000000100400"/20, @ANYRES32=0x0, @ANYBLOB="00000000000000001c00128009000100626f6e64000000000c0002800500010000000000"], 0x3c}}, 0x0) 05:37:35 executing program 1: syz_mount_image$ext4(&(0x7f0000000000)='ext4\x00', &(0x7f0000000100)='./file0\x00', 0x0, 0x4, &(0x7f0000000200)=[{&(0x7f0000010000)="200000008000000006000000660000000f000000000000000100000001000000004000000040000020000000e0f4655fe0f4655f0100ffff53ef010001000000dff4655f000000000000000001000000000000000b0000000002", 0x5a, 0x400}, {&(0x7f0000010300)="020000000300000004", 0x9, 0x800}, {&(0x7f0000011500)="ed41000000080000dff4655fe0f4655fe0f4655f000000000000040004", 0x1d, 0x2200}, {0x0, 0x0, 0x80000000003800}], 0x0, &(0x7f00000000c0)={[{@i_version}]}) mount(&(0x7f0000000040)=@nullb, &(0x7f0000000080)='./file0\x00', &(0x7f0000000140)='ocfs2_dlmfs\x00', 0x40, &(0x7f0000000180)='i_version') 05:37:36 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) getpeername(r0, &(0x7f0000000040)=@tipc=@name, &(0x7f0000000100)=0x80) r1 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r2 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r2, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r1, 0x2405, r2) dup3(r1, r0, 0x80000) bind$tipc(r0, 0x0, 0x0) ioctl$AUTOFS_DEV_IOCTL_OPENMOUNT(0xffffffffffffffff, 0xc0189374, &(0x7f0000000140)={{0x1, 0x1, 0x18, r0, {0x2}}, './file0\x00'}) setsockopt$TIPC_GROUP_JOIN(r0, 0x10f, 0x87, &(0x7f0000000180)={0x41, 0x0, 0x3}, 0x10) sendmsg$tipc(r3, &(0x7f0000000480)={&(0x7f0000000000)=@id={0x1e, 0x3, 0x0, {0x4e23, 0x800}}, 0x10, 0x0, 0x0, 0x0, 0x0, 0x80}, 0x4010) 05:37:36 executing program 4: r0 = socket$nl_route(0x10, 0x3, 0x0) r1 = socket$inet6(0xa, 0x3, 0x5) signalfd4(r1, &(0x7f0000000180)={[0x1]}, 0x8, 0x80800) ioctl$ifreq_SIOCGIFINDEX_team(r0, 0x8933, &(0x7f00000001c0)={'team0\x00', 0x0}) r3 = socket(0x1e, 0x4, 0x0) r4 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r4, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r4, 0x0, 0x0) dup2(r3, r4) bind$packet(r4, &(0x7f0000000100)={0x11, 0x18, r2, 0x1, 0x0, 0x6, @random="d02a30c76de5"}, 0x14) r5 = socket(0x1, 0x803, 0x0) getsockname$packet(r5, &(0x7f0000000100)={0x11, 0x0, 0x0, 0x1, 0x0, 0x6, @broadcast}, &(0x7f00000002c0)=0x14) getsockopt$sock_cred(r5, 0x1, 0x11, &(0x7f0000000080), &(0x7f00000000c0)=0xc) sendmsg$nl_route(r0, &(0x7f0000000280)={0x0, 0x0, &(0x7f0000000140)={&(0x7f0000000000)=ANY=[@ANYBLOB="600000001000030400"/20, @ANYRES32=0x0, @ANYBLOB="adffa888000000003000128009000100766c616e000000002000028006000100000000000c0002000e0000000a00000006ffea0088a8000008000500", @ANYRES32=r6, @ANYBLOB='\b\x00\n\x00', @ANYRES32=r6, @ANYBLOB], 0x60}, 0x1, 0x0, 0x0, 0x40}, 0x40408c4) [ 616.644712] EXT4-fs (loop1): mounted filesystem without journal. Opts: i_version,,errors=continue 05:37:36 executing program 0: r0 = socket(0x1e, 0x4, 0x0) sendmmsg(r0, &(0x7f00000079c0)=[{{&(0x7f0000000040)=@phonet={0x23, 0x40, 0x3, 0x3}, 0x80, &(0x7f00000014c0)=[{&(0x7f0000000100)="d9f6bddd21d41d71d4c3fee3564f1b2d4f486fb1ea5bb753ae7f1d45f7a5460312f48b4db3fb10a37e7f902c1df6801a17e5bdcae40251f51bec3ab83492401ceb000628f6fb20c6b64fc5f063a5742f0a24a12812ac1f53e678527352af3c1f21a8224ebc1eb41fa4efbc9d9aa267cb68b27eaedaa0a86daf1f1fbe12441828aa5e20797a508b8ac3a1f828de2ed18bd97a8d2e6919e765c0af05306f657ebbbd96ceaaa92e5f970ba361e7b71706acbf30771e656061616da3", 0xba}, {&(0x7f00000001c0)="c564aa0db70deca8ab7f78f28d578c22b946d67ded25d675697b37c83882f9f37cc57bd53869ba7f55d0091ce61c075c22", 0x31}, {&(0x7f0000000200)="733e5ea652c7ac48354f6a54a43e064b49eb243b126a2aff91b5a0b66e3b7d95c1421ecc5f6320040a434f87c7d6a13936223c296a21267a42494baa612327fd16cf3cb403bafdc9d6b0fbc965b421760b73de4c803edefe019475035dfba3e4e50262a29c31a2ab655ed85a2cef4b3b2796cbbdd47f1662ba79198c4e87de589312aa2656ac91425d5d40b95ffa8197f62d81d84f1fc2f1aeaa7f8cd9e40ece2407411d0c563619712e811490602d13056341ce13766d0004642e1d5b69cb7f5f6e7cbf8d117ad6045f5e32094e7e0565510a6449c59865e760e2e0056e4cbb1a272c7d9c", 0xe5}, {&(0x7f0000000300)="5d8e8a21f18524449a9869de31129b001f22bc5dc254eb3b82d6408774e092e389fbad449cf876df5eabd3f4492bccb8eca1a9b3ae5677175ae1d78dedb7272e89651c8575ae515e004cc8ed2580e2037a53a4045afadfc24b40d079e23cbb393276f26a8ba34a82e44226d75f3e59a25b8c91627409662da70e37d246c540ec080295979b18d59aa2c22337c00d0566aa49b428755a3f93abd8812774272d957f0071bed2519ad3e3e1c5a536f92b11d3897b36397a116754c1118429443aaf", 0xc0}, {&(0x7f00000004c0)="12cdf6d00fd54dfd3d3dd30d85df62922788c06b52b52d76edee675ce55278b7dd5a7a8a74a2ae2a9a74adb56992a2f90099d5b63083132cab0db774b884a67226f82e18abdb93a17c092644a3b9856db8f37c5f9fd2c80282c596d34a064f9222dc7e1282092c806ee70cec354471b2c54b49b8a7567c113456ab9870e353d26e1859642e25478a820d66aab4851587d5cc4b2b3e83d7c231685c491b85744621c9d5d0182b05c0264aec58a15639d314acc689bec143e8789e0b868ef1c5e135a07a54af18cb494a3d71c5d2a1a9b803d319ae96ddc18e839ae01210a9fad07cfe179475b6e802eb489ba270decbaad3e2f94fb1a22096c96034c301c1ce52e0ea5bf11dda320d92c207433c44a16a3d0d71dab51138ef9a6fe07f72e3b8bcbf16d3fb92e981ea4a6d04c9175f6b04056538d21d864dd5804706f012c7d25b59fb1b6cad5d05ec7bcbcfa8226204324c0b07fc3db21db0aed34040b6d23b9afd1920906402149616f83296d8af356ded8ba8fe71f086ec0d7f61e2f095a3a4bb13c94e1df861e15bf9ee1080d1c634d7dd65147e5651c52603102608431037785af090c6d7ecb5f344035d683e42d20975b51152ef6c8d3406dccfe29c047d700d22a5e86a953732a36bc4732f9b798f8c1892ae91ef593601649f4e37be2e2db12477afe3a5aeb3037de38d634efe2a76dedadfb68761e52803d5d4e7d13535772c7c33f3c9f7f508b9d61f8d5231c6e95188992b1105545702f44c3ed9390655e20b7c78356fb0a8754629bc98e032195667a76b6aa85f729b994817d12ad657000bb6fe4cf30c7a7217c39c420995d40d82c06e6f8915c0067fd38a42160042dc17d18ab05aee81e0c51f18646222be847345927801847d5518e9506612c768151ca0201a2161bb35ca74938ea43d90caf9d231240def126da6942643ed2d06f510f012f7cdce4d48b4df8db0c92af5ba8f628fd96e7b8a174d63b7d165ae8788371b7f6fda7440f31214534fc9c9b9c6c9fc657bc98ddd3cdca8c7010a91e8f047b7f61c72679cac192564be93fa79dd63fa86a6d716104d996902aa6fc80047f706e576adabd180a52b0dbae6e1fc00ea3e76dc4196018e47c8e56e88d1413e00a165755c42c61dd496f5f7dc0c1f0479e83e07b80990bb85f0248c14df49aecb1e8f6d56f1fa140b7813c1a40cd0a6b1aed7951653403d73d992ef22f4f1c52a5df37c014c1d0343c375f57f24711d92280a7a4ac9ce0153a9d7d42379f6b9165cc67dc36f89466c7854546c78003b33a3eef59a6867ab489247eee89f59fd7757d71da0d8bfba900999598ff8350233c20ec3a6a00e8dfe861b28aee24a851f927625f066ae21effc9825bff05786fa28a16c7d5ad622e3a7b7f70adc9208e3c25e46d6c37cedbdad6efbd9e7f7fd6f9d08bb437678c3b45d359b36eeeb0aa33ae63c9a1c196eb5d7acd4b4e57d129ae67272aab388a162422f8b2bf304a2e954d3ae0ee502c50177635ffe14ead3ed9291beac5ea7656b0b5424258e3097b35d8eecbbbc867448e93e22b78bbd248e81a5f1537ef5d0e8f24949f71b394ddaa578cf8a1e0c175d012cc4b60c45795f566ef8d1594e114f829caefcd5067d990a5e792af33e152b0f42b7063dcf5e6082c76fdd350a228f83497e2bc4780cf232efe10114da7f6fe4d45184bcacdcbde6c6613260df3e8e1b4baf59d1d54cd4bd7368b12881d4ac16ea7d4a6c66becbb10b78aa6dbbc70a3f63abed270673261a42c2cd388fa19777365b359ba78cda14e76c35e9302282e3f15b29e0dd07ee8195d58a90be2ca3420effc52ba87b6d331455b8243467d16da811833c6db52d19564de7eaa79bb6b691f854e4b9ce9e4ed09d3cec22de6dc9796df1e705318ae3af0326490ac08bd0cae71f9f6c93913a036502cb0920de4a94aeebb8d2b42a73f8529d24ff9afbf6ad2f2bf31c238b5181b9658bac54df4270b496f74a461ac4cccb3b977623a8447979ba1bd98065d8111782bbaec4054f9c579650ec9b7cf0ef1e60d74a169ba345ed8bfb6b2abbc9c7053442524e5901d4f6457582d739b163c7ad506322010410cbd3cbee6775de38be328029d47e84eb0ef741267d1b912ecee834b4273f5e94cf24ed6339171410dd2b35e3d733de651ffb8f981ee3b2318744f5a4c12c1b3d81545ee210cafc453b76991ebdb2be6abce110b1c70ee45804bb664524646a926802dac267decf86d3a8bd0d8b436dad9cd5e6ec9d91fd94a760b9d9df8cdbc45354e8e574ce939ff2799e0dbe1ec16b01d50aaa10ce78779d821c39bff78a1f489469ca6c9b9de5a20626c662dc2a81d8232f9605785e00909f6751aecc42a16ec980cb38d9ab837829e2fde12ffc689f07ebb28dddf3c4ccd30930f7ae447253e354747a1d21e1429d56a83208e5ec3d09c44945cf339952234159af4f86c58a038befe22da8a93420fc61b3a49db20ca1da488872d35863b1719554e4c13cf24cc69f87ffe3010b04f25744ab88ddbf949dfa556c06f611f205b552bc072feadca76c5605a91364e8243333dc78cb965329aab7ce3d65f663f86ecbd49d3bb52948cf7c78195d0371772d4f63c715808f084de9822092540c375fa4027ac9e3377c72c7b17869ca9091dc5cc37e37ed3331efd3f66369298338cab0002cc0312d7e861743e2cd2fc2b6830b2da09ca284011ef786f1eacc8dadc17c186d23d6bcddfe345349fc3c7cc146be7745b09356cfb1551c88afaac233a389b1f9e3873f737e44c7e159c798dd290e4242f35d0cb6099fed15737f679cf0a329b514183125e8d49651edfeded09638f2bf3b5b814ed20aa6f973e5cc961f09f81e166c287a5bae6084eada1e60359ba38018d34238611b77ef0162e34e09f2e7f17668bbffc7b61f340c2a5445530e5490fe75605f7fa6076871c0b44c463437ec449f624291209606fb97778cccec4fbfab33f650c6ea0ea7e74537269f6daef897396df34265fe92febd89ef0f92826899c472d09b5679e300aebf3552087800ff8b4c1642bacf3b9fdfc2a1f57d6e6ae9a241de4594fb9ce6899607dae875bf089e7c4769fcc60dc4928a9a3805eac609f8bda97a8f32e8f05cf556a0d39a3c99057b3b447fe8bb7b2948cff1c14a1dfab992e9844dbc3e7edbe3d29c2199618b87c6d622a43cd2b779a52effcdceab8e3847c72b603396e18c662f7e627b942e05db4c86abb62a729dc7c9784f0661bd1e58db0738a12551bee44f57e3e016d4fc27b7b27f3c59329eb88b8111d7d42e7f2d054496eab8862f6cadf5a3941a1a02004f41ac4fb19c92bd16ffebd2e9f9e57aaaca04f3ee69ad090de1b1ae8cb1f7f996d7c6cd0fb3eb388f6a4bf58bb82bd66849ae6bf4a4f0c23f42cc9ab252766cde26a0008c47e8d2f2682f81439752b4f6cd10f7343202d7306cca1aaa1f12ea105abead59a05800c4563eb08a3f98a7ca30eb1d5861d0cae93f3a7fb3a9417530702c089bb381edd1b36351d22acc376b0e3ae352e4fe611380f2ed0b4e27381900c72f896d409267ddc9c235030f89e5cea995279f452767aa183bf1814b1546fc7faa2fd35e4eadeef6a82c2784d48da2a23465d435d06b522a49eae9fc92d71fcf19fbece99b0e5d9926d373e0b231569f94b0d89a3ba92faac7ecec5fa515d9dbe8d7b7650002e6e862d0769c50d25ae8a6c2966828dd1ff709e8562160d5592b88dec9880d3fa88432c75ff42f5bb14fb5ce71963a4181513c6cf4742b9e1e68e2781ff836164d975c9927b3d5eb852e08714dfc3519279f1cc5e3f99446166416f3cca98fa41dbc89c6dd1662b1fb6866959ed77ea031053647c4ad8be92f2e7d1c16ebc0da7cc2a319781c111086e910084973b640da2b64505d76e37925dd768231a7a05791ee5dd7ad90067eadfc63161204486c4f5389cbd48056f2e294b75aba2ae0606c94de45ea3ff58fd52e689b8cc9b5ef8189334131a3bf180c8b5eaf8f1d04c22d9d4743a37be61624db0d98d7cfbc382ff7fbb15b3ab7d5d593724c2a7ec83b76fd5556243427d1760d72ca641e947e64617c90d552e9d77e101219605e32a12c2659c707aefc680efb51d99dadd76523899a06c387abe2daeea8e86d2a22bb5359266bec21797035092169a88ba52bb9e2b1779b28021698d4e0a5040a123404f98915aa5da45f4a0a5280a1d5b67056cc483bbdd7ac3a77c8781981d766e9eb2690ef739b16d4989b23220cd92a03a61674f58fe4fb38b0877657f11c661f705b6ffba3126db1891d12a88509d80d22ab997de998a1603c5b55036e13c89faaffdec9637b4a87dd00ed182b84131f9aeb4888875f6f65bcddc91b1c7a9b6853d25b5d0e680ecd53efdd42aef13184b41ba8966bdb95e6dd53657bd969379a02f22dffc1e41f857e6bba119251e57353b2eed7a13a7a2350203d4628b2cb83750d8da414a9df8b7ab276e64e30ca85cb751042c49a851b3728f63dc338bc35fe495c0ee775b802816f9f8182a9d351661b4512cb9136524b1de0d9cea88e8b131cb22714ecfb5dfe3e97760e2ce7322c0de2df370a33fd8bd2e91c09ae145ff58893a830ed335e892c97eab0bb19e83a289384639f3a353d7b13421a43ef789a02af9ca864d08067b9f8c35426358dbf8c2052f437588315a011de5215aef6caac7177934c499cc9a3f1f4dbedb3f9a4e147a277ef6479b55b1c0303ec5e90e13d05c0a49870f64fcce6138fd3ba7594b723b9d4f1e233abc9720fea4e49c27312f25627715942e3416a778021d587ed8bbd017f18d6021a36c5753b72b1510831f7d91696ca5051b8bbc90fdda14c0da84ebf47d3c2eb17d862050453f3f72213b9b3bdaab0a9f745c1cd0d8071ec2dfafab7489e4a8d95f3bbc9ff4be4494ebc716a47f262ac60bde745f76327f2ed90ac8879fdc3796d1158f7d540ce145886d5e98e337241f8dcac86cae11338e8908e562fdbcf0d4d32150514d3776c4161947fa6dc0f6f3e5fe4bbcec06ea95a4c7a4bc4ab7b6854475efcce665b398748a2cbb09996a38e6821b2b4098504c212e72f4e4087c06542bd72cc42d69f2034d0bb3e8ec4fd14d97e29dc2def05a6563394a59fd1217dc624d830f5f22ad103b2c6cc41a26b50bd72f719c25c6b6e0d8fdceec8d2969e3844d88b48c18086cb55217cc99fb402084ef1f94f924c3d51b97e3886fc862e1bd4d843ab45f51f69065d2855a116dbf41b10f735d8a812cba9258f52918efd5cc19a37441a73de5af9bc9b6824c9f950054d1be5bf37fb3d9412a4c215b3cd9d0310f8c2e79cff7b34c13158893e2ce4f8a727a0c5998a68c89984144faa6aef1a70bf86171281459e76cce7de517decb498aee724dd8887735f11dc2f5a8d1f38b3635c4c81c50d738e37bf087aa7ebbe6c29b69888476928d9d5e396217677842a61c9687b8c55bb171d819e10edfd2c6d2ee52a11c8b3b9335a78c30278281b986ccca58a0856f2dcf9752039da768978fe6582b2b6f156a6fe24c5b70c619bc40dc7b82617e084222838659c3a902d1fc63f416562ce6ecd10e14355101e0c52dd58df738a43115e17a97c4b52152f63acfe20d9ac4322da4e0a894cdf4e04055f40f84cba0521d096e99574cf67d441bc0ccc08fe9b5b78d4726a3effbec540c0cd37c769f316aba86e12676c886613ee9a0ff4454e3a7c95f444a0168eeafcfa1a97e8ac431c864334bd46ef2bbc27f03072440d7cfde7151675734439b6b4e393317399f9f1bb527489", 0x1000}, {&(0x7f00000003c0)="6530168a4f39127196ed8bfb39768bffe394adf8caf00e1c53b70c48258ffe22fe4e0c7501510c1baceaf3ed8fec4302024141a5526c725c325f1069e802615de3ea59da7500d682a2b68874dd7580397358de5a9f09fa58bd073f95c853202d1350cd92cc7a39ff10d362aff8cbdef703f9629dde", 0x75}, {&(0x7f0000000440)="8aad5bd4df582e8e47e880cc5d86cabed7b7fee9cafa1177ed5f589e28f2dd5e0aee1bf175d90951461dc8bbab665949e110", 0x32}], 0x7}}, {{0x0, 0x0, &(0x7f0000003900)=[{&(0x7f0000001540)="60897d8d52d454bcd84273266d464eafbf90521a751822714f31a5f541834061aabe338f2e5e4bab63d2360a2095329ee131d3c2aab45668abd9d4c3bba3b0c5", 0x40}, {&(0x7f0000001580)="a3519f0638995039df6ec4", 0xb}, {&(0x7f00000015c0)="99a2ca2db12e0b967d6827562c1c855df3fe274fb54633c7461539655a83a60a3473915559d6b5d7cb5bf28f7e1893bdd523888397ab9178d2d13e0cd8f79ab1296683daf3e6bc443c3fc475229a114746a55c3b0e4a10d97690ee85603ea69c0e77e3e673233292ebd6b73ecba4587519360e58d0f4172d5501c0e5c80b6531df8caea7155366e4251fd657804a27b4b5265765ddbc9ad02c1e22a4709befebc4db50dfe434050813e0a9823ba51653e581e2c347de6c0a48ff05bac5da33069fcbe2ef214321cdba85c9378b52a18d1870c6a5b82a8188f8aef14856b2a30da8df0d3b728125fa6d5b83e96e9a38fd212a1f7dafd627ff946e48922278f282003813a2edfb7f0d0bba77df2d8a8a47a0d16a3420c7d9b40590cf93df932f73f702f26c9defc3c8bc8bb64ff3447fa125cb5c3e98755df90b88a2e2ba3b4083ed476895009492a68e484583458fac7e455ad91dd4e5a10eb8c5ceddea87ca27d195de6eaca4379cd4af077a8444d35395d968f203c6da3edb1065b560caf364ea1b881a747cdf0a1ae4ed04e8cb4ca6d732f9210348b3764e0e2138b56334808e2b272de87f7323450a93a2dde3f4ce4664e54b38a13b459ddc34c9af4ff6e4e6b1fb1bc257b1cfba41cae3b1c8d495a47e2d7d22abf07da299ddf7c5d33b215a76f6906390e17f72c2a803bf4311fcacd0d1eb9a7c7041ece3358d3bb4b700b9cc9178c691e6c06815a3f5a663d87bff8e8be7f6aad3c1813228be2edd4a1b99ba46835792160a59fbd153d4403deea7873151b7495395ffc6ab4b829225b174e8761095012036cece444693802fac8e9199079b392de2e06eb70acdcc62462110888a4bdf7c1f77df1cfbf970e5be25f9e493b5e06c7db20d1561fd2b4e07c7262ec1c9b99da59acea0e4cdf487c887729e20c506f5b2dc59f1c6fc837d750c5a0ded07c08cf0b5138344d2c6ab7a25eb663677f959e9b3348ff4e184800345294b586e6a34261b541a006e07c40f1af40acc10d98506d07a2792ee17f9b322522543d08890169c78f15d42ed87f148b1dcd44dfe600e9e9467189eaf2fd6d8fdb0b61f9f8483229565703352079c829b8fd857329b2fbf6ecf68d0da6a7847e27dad2a18778e464a69b310cf6a628b605ffeadd81b0fb84b432805784de5cdb5c2a3d2dd44c0f182b01ae5ba9047dc936526e6bc00b5a4166166bf850330e5a23386021b46399d574ee594571302178b44a952249481af4773fb8e29e4ddc01865828378a82808685d08a67dcc74d32465c73626b2a92d3db05b1f0e777510f0089eb458ad84fa22dc3756a802c2d0e678e1d2a9ce44b584f06ecb9dee7c10045913dbaf962e98bbae1338b4d815ddae1b4e1f48a90f37810a7bca616baf2ba30f7e49f0e4a0ebbe7f0f5d3bbed1e61c73298b84ffdf24bdb1a7c1766d161c6fdec454c021a618323645fb937d763abd48e8575be4225f565f14bf2936ed4e7eb7522f0801557189518131a4700ef6745fa0581b95192823412f874cf1c4d881f0c38e8f588dd2614e036c1674fab69fa15d20421e30a3260fecce9dbb49146d0c2cb7cd7d69ca480c07c9980102be71892a30d6dcc76bc5167cc2de72adbc5d0e9b3b692fee7d819a473bcc178b64f2691dcbd60ea7efb4b3e09acc2f415d4934fac8575c8078718444db4ebb0606a9f7a4d7e23b8df3b22ca904b8ee23d25971c3c14fc84524d17fe9deb05b1475f5980ff3472d483cad1dac3f87bc9f3c0c6fe407bded43ddd765d86f522af321c9c3d5843ea2c1f9dd857b93dab1ca2cf3097be91874b4f2a701846d6cf1930282a656bdada9d5daa82618c97c96c39f8616b7538b8200777a57cd1c833950e2584ac82bb40fd2d0981c40982a5892601cb73029e93131921981841c0f3d3976b4563dc1ef9df621397aecb29ced4cf76655c1fca5c641c60996423ed63a3de5a445645f52fd3dd79ab1dce1331048e53c1eb443a8652311d479274b2d41fd0d1c5cbc735678e839c0aa9fc089b2e54127963bfa1097002a9fce999a2b130bd4c36f1bb7c90c0197dad843cade7fa0a83a2ffabf1e1cd8e54197c10118ba06af1602c3e855d1788c98cd0e13c28d1c2cdb771c879c7036b099b6c32a0bfc8fc3a1d3a50aba671b818d3385e6e7c73ae32a68782e31c29de3d614db23959d82b1a4d4dc25b85d2a39e316cd225ce901985b95810553db429089bc5fcda1917371bbd43600fc9ab98282f5212f883264f4f2d693b91055fb914fa87a7c56fc3eafd44543b528c855ef44c042fa8a2659a95579aafde396b528587e76803012270a404fad1ce1c72697251d566c74c488bb9df6756d60a76ec7291be281514207bc45dc77cfd8c18d46530301733df2197ffee0eb4bcbe34a4987c316b634836884e284b67e19403a263a8b9d3656742878e1ef27e93432d749a4e1a2dccbe13d12326560d09be5879efbbe5aa074c57763beb23d2c17444efa26df09da2a4ef20f96f843f396445fea647951905a4c59d9f89c9cfc673be08d05d20fd4a1edcee3dbce3f5a69beb64f1080199412b96fdb2268952beefd81fcb8cdf47e7e705ff7316b89c8329c17f0ad36fbe78941cd7fe1a0dcf3ed407791e85a6473597b542db7c75ad25bd14ed816ca3b552d212831b8502f5b29ddbbfdf1c82eafeb1e28dc4fab3657a7b9715d4f7148f216f4b2ad21f7a3389fe23fa0eef23ad9a5c5a7e00666222a7c337807e36ab40dd9e4a32374750560000a54a7c8d71f11b17668ced63ca1dbe8c20583c37476b2a3817acfd9a3805b445a0643bd7dca7371945accbe454f79e7710a71fb81c3d6ec14c77a30e6a80836bef75c17220a87e172d394c07a2594a4007e0ea4c69f928c0f8f19a5d2f3538a966effb9fe147ca465211d481453650968d2ba66499cee5342950913d58d5e7642a4f7e6d282314f186886dee551ebfc668a19c9c6e0b60b9a9d3a6e4df22539694cb1a7716007e318056f5387ab965a09c105c46e404b3b935f7e962ff58c95f8b425edf2eed1f2b0d2cd069475e7b954169e13bfea8a98edb68472d0b18a33e94afa19ae3ee9838a666d8257f79fd35964c1961021c20c09b999b69a1f327f78c4c7af5ee60b0918937769b72a2e2956fa98680bd2aa370a20bd47803a85719eea5e0239f4a6c5cb8cba1f87c062236af22b6113e93e38f950f7c233b3af215639338ddd031518f4d10c57a8b581cac3054b5f1995477afbf2d274abc6f178ef4906d2bb7cd416f593729d5c500c94c5bda98a56356bf1ccde030d6ffe8898e1b2779c082567cf9054c86e73a62943fee09fb64072f6f7c67c26381c12692f4a61b1f9d2a10a05feaa3332b14189699853b12bf802ba533df1fd0cf08412d23a97c7d7d442e2390a773b4cd68a5f4b4b48c5a50687008a628cf5369bc063e43a50ce6b083d68fbf7e4e7effb99e3264bdaf7311596c72a5109470e5f4ae5e04bea4d1cfb837b3e60377160116c7a03ce51db91ebb3142c324a4cc89813540be454eb6096babec860e770697ed8e13ee2fc3acf4a2c0b9a7779adb2c2bf6044630be11e9bed8e04dfd9565de45e30e3995d1c9d42ebdcfabb1745825d09b68b1e6ace237f2a46bee2c9c80e1686afb37e730d7a486e1f5691c56d161eb894679a097b2654caa6ff4b999d495ce9e5faa253adf860df127b970b85ae167cdce83b5af8c1c0c85469ca5b3ca15eb0b769ae59057799652d1a941750062605cc20d8980caf4075a620755a3a1260558d7ba5f4fd1073c29525cf138a10da3401a1ef432f972737d618f3e86adb8886bdca6f5419954cbf490398325335e221d34c73fc8169921c79e030c15dceb9f6a5efa150afbb5d47bf0e9ddfcda1569d0173b8f33ece80bca6c4ff0050e13e7fcca8218368ab4b2152ac7ee459411a090bcb88dd16e90d34b09500e5fb04a96292b9a824a1f1405ef998bd788ff07d17dda8a8600c7a844df4f58e3381fdad8b320d85b7d2d9f5296151dea01149499cf84e9edc75476fef33eae24be5f4d780dbff5ac66b8e0f93029f50435bd0fc0c0a3b33d6e08bfb75f7064da3622e649746a0ee86ba115707424f5b9dcfe8684f29a6b2b42cc1f46e7b23ae07b5ac56339992dd812263e4ab6773ff7968aa10e8ee6f2d1c910636db9226799781feb7037700828ff970091e2e9d951a2086edf1b6082b214eec3656c447adcc6405776b8a6ba02528796b4c70b7d22ecd4d52ccc8e086682884fd3f80c986d82ba32bb6e94dbc7d99455580470850f536eba1a16407f9f0ee70e8b31d4a9166d355dafe3057a5800e2b7fd55f019f48f35a4f8f42dda4f6409c75bb9c5ad02fd9a15df71aabf983f2f72e987a273fdafb19110297176171186993b3f2c1394f0990212adadb4bd8abc0737a89aa6390fea8b437c53e0a3be5077b9e97e178a7a1402f2cefa49850742276d870b31e9226bf371b23640bbca93a3b9ec5251924ace66f1803a71ac02e752f13c40ce91c1dd464eb9a349b58a7772d8aabb20c9cc2c494f6e391c2da15f1e548572931ff46987a94ebb35a7a51b9385d87f9f8d1bc7e37a45a65613199e7516471595efdd28b0a438c6203add468ef126de5120c402da3e0476dd584799c4693644fdd11e905d82d57d890eb15c07d2b993af0bad0be725e6cd45c12863a3031b7b57ce49cb676ae4ba45426eaa048f9b68fc3fc16ad51f57ee42e54b19de334ca3a399ed0303e5f6bd29f385273b4d55d79278fbc3999ddabb89aca1c638be66071a6929024992df663b861c2b9f5230f8a8f5f95a80b47f06e63ab2c25657537555908981e570cd59705a5cbf8706aceffe69f90d34a6a28a91cde959f649df0a4c52a6df5826766a28390079e6462fea758ce11f45540eaf4fa07e7b70b2f29fbf6686dbfd09e321767a3651167dd4ea4cd932eab30c035d939148ca8c07bade396c8ba24ce604b0d198ef28d55cc88206014aa29bea3d56ae42610b81456856c5e7ab7511691507489668aaf77d8b9dee75f0fa1094f2dda67895b1edfacc82e551141bdb0296697f5aaffbd91f4786482e1e913220119ebc97ca056edb8b088bd904a697a19d5044d57d8afdd63fe50136542fce628ac2750387da7f3fbddad6f5e7b5ddbfde5a4a9893b0517a831f1d77ae86b22c9849be3c78d418f5425afd283bae5374d259464a448a2e102cf078433a9f51672b8cf1bf89cfa90ea920dd9e2b8a1d6e1818a1b34482953565e29f3cfba8e205d42b17b2f507b18ee0d61385677c52b1a7ff530e00f6356a210a2a297a99cecbf43cb67dbc6dcead7916c37f35265c654254095e34fc74786a0c60742ae293cd20765ce480321a11ad9713c7ee80e1459d771c38b9e3d43bf099208213e4b48f922124f9f5770f7cf01eade2ef78a36f4028855b943947c67a5c100119078620a8fc8c88e925021034ed762546cf457ae641d989de590685a9dc295febded4ac186aa88c7f31e4242b3db62fc6b1a293e013d1265f9fbd38d36ce683f1deebc47d141b730c46b36ce5eadd574305f196d6dd8c1ce68d53a45e3e8abe9300bdab53254e815422bd7ac3c09a65463e854814557076d6b50cfed64b99d961c527f819a1c543898d310b3c705bc83f354bb16c0fb133de8459f28789cc1ceff820d1c88e2a15d0674d88df76aaa3bb501a9c157487033d43647b8d6770bc7c79dd0effd421e2b82b364372a66f174383191a3748bf5d5e667849fc231404e723e4eff4ed278aa43a96c6cbbfffa75", 0x1000}, {&(0x7f00000025c0)="7a118ab5b5b0be4e4673ce7e0cd9284b6bce3c9de161030f2a4a3c89ba355ed9ae18a856ba1be81daa23aeec0c7d2a972c184844a956f9e6eec7fc3d4d4fd47f9a36101013766bf6fb219b3a719e746a561869c76e84d8a79bbc8be0aafdcd1822dfc7ebb6ed5660af33e08fbf885360335837546224558eebcea179f653aa24b0ba7fabc1c5208fd5fd4f6ee8504a1001a8968f85155f4cac9bd31818f3f74f642544a58f3daf178655017fa4ef151e40b1a4c2a17f779ac5d74b207bb336d032b0ed87e9ffe777a8957b9e5330cb73619073410c2d6420d9c5b059c4689d7f527919766755d509c360", 0xea}, {&(0x7f00000026c0)="03588ed454efba4651ff559101fb88b7149e59cef57eb2880e994c7d0e5e97a311cdcf2e4579657c919b96dfb2aac2d1729f7c71ab641feca9a989b0f1527f38e37230e113e6f159dcbc02f61b602cd51b92846f9edcd4e3e699b9f080cf1e7b9897cda2ad86af68846e3af8e600c932fcd4696ddf6d220a02013f4c5cbc9c702360d8a7eaa8557d060f59ae879535fbb3df01c451f1d439f28cb02cad649f37e49d6cab5a43469edf076243b15f4cd9027988113ebbfb8880e8ec837b04133607af3f21a6dc746afa747edbef7a13b00308838c1873722a77b9bd7eae833550878eec02869903c915d693b3b13bd0013c854db9b998e0ac5dfd52849363467616e81e196ece510f3a6688d0c81da12900bf6e4ecf682da28cf028ce2ec2c9873921bbe1b096dbb8fde72643e8b9994da4bb8f2676b5ac39b2d9536c57be72896e428f7ab3ca8fa19f0de0b416e2c7b7697515a56c09bcd8c1605cc5275cae9f136a91d2421786178d530675f07b45008a8311df2c633b6026d3b5aec7640ca25b483f37a97c4f830e122b8a89e676d2cffc0ef14f4163716623b97c5c73a2b3264b0c1a0d969a2b33d97b7728eab1ef0b6338a2bc6b57bd0ad60284deebd1ea4e6cd0a17a052980612784a80e5bae10031fd21ee8929261c05a23b2bc7e3a9b03643bdbc36dd6978005a48b1f277a88fbac3ea782325ac8eaa5ac91032023204c4d86f64f491df60caaaaee58ac7b3a6d664c435e145d8ebfb7a82d7048c2903f1fff20f39209ac1a26b5ff1a4e3e7cbd0a546ccf3880dba0748fbbbf860dca19181c2099b8c2da9ed3b2191db183db27ee9408932a31e577a8d141d14d8fca0ff7496a95264f0dd717f15dc0b013c23e6c388750f49f95b0d9d115d3871e57ce5ab1575892dfcdfbbcb2685989367f42d7b9eb9bc968f82d98c21cdd091e5a4500dd22d8419b3f2e6819d4dc8948bd46aabbaaf6e17981c5ecc9fb4747664986d906e5296cd4dc2c45cee984a71ecdbeb7daaf0e9c0f2c81a174e165abccd170dcc6bcc63e1098711908aa48f17aed7b04288dcd98a7c824303152efbf5e5e25685799eac9d03acf4ce85df04ff9269ad45ec4b14ad29edef82d25f26be282e9ad88f31fd37e58023d9297a784f8c598c2ab189365bc8066d8a463834f9fc60baa0cda05d20296b1342741f78f88494f66d1d6b87a6520d7f158467c64279ac3450803d6e4396c4b00799a5e72778f8a7e4618d3c2c9dcfe00e5202089374de3f94ee91d2cad9c7cd71cb9ce6dd5c3125d81280c05cc91a64f290a26cb13a5c2d1526db62b6b07060d4cd9ffa4c087cf5ba54a2b94195ca08a2e41318b285b27d87dfdc17df806d5cb61ba768d48f1cc98b8334865ccfaafe1f3954e914a7915feef832b5e201d3ead2bfec7dc7d9bcd7fce16fe29af76bc2a96651deaa5a139871f352368c3daa19fa85a3da0ae69c25d0b14054286db10d2d1c649c13948936b75d9c9dbca33c662a13c81a07ce5a2bbcb7185b2353eb326ef4f16e11ffb2ad49e6f8569fc3c860b64c48bfdd79b7249518e0d609bec3b5dc52b611ab0d596d55d201fd67071ca81e0b0f2f89e9501108966183473f824f32deae32003b7af899e39aadc6fe402b400006e5f06f55737651d219e074d100b92dc40db37eedb2f7d1ae0cfdf6b65596847bbaaa63a9357dae697e811e2b0d74f1d268e6fd07e19c53a707ba2f17392e8eef1454d66c7605fcdf26012a8dfa6e1354195e5164b7def10c52732c8b762494c1f84118c51cfe98b4d94564db501c90807e536c39baba1a6579969deded6ff73ee65a8eb4cf43116179cea89c76b9bf0a2a4ea3542c8433480d91eb220dfbc556e678ff8006d1b8476d9074cd53a4307e74d71ecc2687892af954aa658bcd0374191cf9b0052616c072c32206db75e5383e95cfd03cae33c57dd9a6a3923bbb57a5b414ba9f59a0e6bf2754f6af8a7d21cd47b88428903a939968c7636b78bd46edbe69b795aa1329e675dd5bca717834f0e25119f64126af02334b982384c8a6cc9258755ac05369545efb75dbd9fe5abe2446a809b5ab0cbd1555ce22a72ae909e1ef94fc43198fd3a57a0f159b208782992305f16497cfa9ffc8e7ffc60afa31758f773cca5fc1592b9d917e16c70183329d35ea33ca0b6b89c5c5b02dbc9adc86d061e41f5cc3a71f509680d1730fe16c1d0c3c9f1f2940fa3bf542925127dea95b7cdfbfb8b994cd4cd9413750ae7b8e1a4f6eff047e297f646f900380be365e93f6b907f77bc5e0b07d0ee21ee22e6320822208885d5cb07d4c016129bf431531e5b0edee87fdeb9ab3d0aea0477b4a3d4b61fcf64ea36253bb10c34297298ba1d440efa885b6ed53f9c2606a2b68ed7107018c9279b9ba4e3e1206ba28126a9975bf1f31fcb8b0f6f174763aea51d9ebc5db2cd250d06b7ba383d6d91dd4a77457a0a0172e53eca79500f1555cf9355cd83edfedc756c1f5a55f15921687f1eea68c4336a1b01ed0d9a12d9a08bdb053327f1e786cbf5fd1f328029271abf6ebc2a3889d388c79b4c33ab2002571c98ec20e47c6648dd62699b51fc09754b7d89302297e453a6b88365365e67a76200e135bd0bc1b3cc158c2fde60948ef8453274e07b3edb38e5ac48c3093ff11a2885ea0d36d610263deaddcf620f54cad27ffd5336a022bf54cf405b06b440df6695e79e425ec29d91d98af960586b06aca441d1a4453df282fa75f5131b76e4857c86bda1a91ea6142dfb6d5d47338529d863d285d154cebc129b3f74ee8cdd23ac623e2e4bfd66f64893d2fddd09e66848b1f7c13817825521b2e00f896559d3bacf7eb33a0971b50031dce48331b52fcf28251f9c44d342db016c75a82f8d90be4f7b2f238d4fbb6f45e79d456ab1625be02d287dcbbbac5bdcd265d50a5f29ee5785e954a5dd247e77a659b1a07516e7b1517d79a09f7e54c24d5a7432087cdd9f799f91834f353880c5e5017eff5a74aedbba21546da52c6e9b4e79c7b7cba3d6b08031f6779540af238cb7075e2047c6dfd97148062fa5f7f5ff6026159b9648ef46cab0c57ea9f8656d849ed6973490e329dcab976b25edff0347114daaa394321887dd34387cfbae01f6816023f10d05345d0829ade41c1d5c802e668e4bf8ec575a9d5ca27c28addb6920dffc7ebb4027ad29b61133537dd67492adba1f68805bab6f3dbd072de60982221f7617c8c9060ea9deb15126377e9a1108c6a0e7f24cbb38e8b623fc6d0ff7cfd825ecaf429afbaf9dbed2b7a9954262096dc00dad5335848375e5984a63422082a4a4f859f7ce936f57758e8cfb2845f54399d5af2ef3e6bffad3461c6fc2f451f2e4a2d3e3ba93715dcf4b596671dc8433826696618617528cd8ac97c368383574f6db608409f992c4c9eccf25e3d3a04a412b4246214eaa70cbf7f4ff75aca49fcbb9e0d399716849e4df57cd14e79fb8ccf29ca5dda8c0249a034e949240567f1f830f70f4c0c2e1813f05eef210a9e60efe44dc458445138bb47e2db04a00e58c9f2f8d7a19f22be2d82f611b498675e41cfe9fea4aba909b2db3d6427a3e51fbf00cc6999ef23833fd41028067a79cfdd4697324b5be0cadbf847fb2203be02a736dc3a189f5fa5263715c9bd5f285872bde8d9861a5e652a4b5879e28cb511eb7cfe66bb7d9a427c6a7d4c99cf33c7322ac94013f4870885172102dde74c46bbef44c72c6299bfc40bbc49e4f840f425fd2f7710a4ee1a2b7e89fd1223fdf14af8e132d41c4ad68aa116dcdc76224cb7bc4b429e61e103b6f4580c559e988fc92a9bce6c1cdff32195168327d28813e45587157e9a6a1c9aac5584c14421366a7acbef94a4ded923652c75c4a0bfa55cf0441666b550390a4ccbcf65031f0aceed7b5244bb4eb0b81b3df54c6e5962e7be5fa3d40989b234845b300f1e0bb06c746da4a82b5e07d9b31fbe78f25e1e52d0993a3cdd76e34e1fe3783e08b98a90209c77c4e63a229ca1b04ad18af87d917cbc761fd2c7123ff3edb7c7bd17141c8528bb64f73d939cf7b29194ce2eab99f137a56a975e1d20ecf2af6e9130a043d29bb3de0f19a96c0d00d2135a515ac5d0bb0845b7c4d98694fb393777571bf84facda60fc921994c4c2a02da90ffedc202c497b0b7a945b30e548d4f6c061d24739248993d939ec86b6dc5ba9c835dabc19ca2a6bba0454e88135d83700d2411291304c84676ec22103735d148c479fd0933d64bd726992af9bbff92be02d5b5530d3af92f1eef5fc9b090969b721cef34f904cfbb7fe2ff80288bf865b14f0e4f7e6ca5897c7b7a165a9b9fa9acada36c24820ba650e4cb30c33b3e0f4465f59dfd5366ae58ae3ad0f0482dc79996eedf4e4bc162ee56a8f7cc4faefe3b2609a445e153280f4952615a2503f0b58e3f683dd671df0f06eda5bea4589ddedbc666ad1848e2a8de13104f919d8610df6db04e70fbed9e5a1b3f822e5d16cf881921ac3a7956cfb00ac6eb8886fdfc9c9d11922f4bf51bc64ed3eb52cd2caeb7bca96d7b7155de6fed87d8f1808be028cab874d29109c6e511d8984c3a7f084152f73462cc42b7e001132763e193b26cf6089a1e53aae82ed4c1e25a75b15d73071136759af840d1ab97c78361b68a7d9a6a7df458096b8d34e08e09791f9705c5ac1bbad2ceee993468b2a5b37aa4f6a880a6671347522641d3626eddb210545a61656fd0f8398736938c0d4738641469360469a8693ffc7af6c6417a1e73886ea4039affad6d6f0a874b9334442db60b03e18579ef4c588f06614b05bff67dd519b3bf8c525daa37e88d4dc939830be559097af0b6168add4a93301c352f13e9352c9cd39e1668761fed9adde4f0e754e183a967eb79ceeee6426659f83ec5ee29c8e1a2252eeb4277ed3835b7e64ecb37ff17f05227ec3f177dc2048b901d5285f654c42ba086b51efacef1502b664d027c90df19db2130b4a79ed852533667c4afa9e77443357bffc3bcea759e1f76cca8e72c443df3e0002516ef68d4aff02db31631eca734f9a2a549a6fd7d42c7614ec27672143d2147c53616c09eb51fbc856fad89337537790933b7a12c0d5d8d38b146f6926381f1921ecc490e1a677770fd99c6599fc52a875ddced3a63bc67a8d2557f906df0331344f8e6943b058a6f870ff66ac76ee9a100f5b26c99e9f99cbe65dc3629dafb23cc5c0e9f78a9e2ad70294864505acd93c1f7b6cc1ef23780eefec2f5bf60426e9b99180af98b99c2d6d27635cc2f480b46570f867d2d2cff3ac1b12b1b91001b45d51393acb4785047f999313afd8ea91b48146bfdcea0f6f2416286bbc6384d57e5c1d94488f93df5e6aecae5e71b3c2e9cd5eff148f9f3fb9e033b9109665291e9992c5bc8e4471a3c0bb32b7ab8f1a5a2d0909e6864004420f8d1b80c91eee0c8af3fcf3afcc41b042d52155149aba7c9c82d95bebadad81996b8083619d37fe51414341e9403d2a986c83efb4874f4d557c6a885e56bc90704548e7f5434017d74f3000fd8217aa14418c4d5a3d9c7be9ddc3cbbacf283ce611dac9bd1587eb30606c7fb4f686cb69f646dbc67096a05c12208afae4c55da6944df47210f0ddf6b3e3ac2f5d1809c6c32ff47acd6a3e0c6cf16fd6d1f3cc51ecfc5d2919410054d8c5c97e1ec8b8c1f5c63041e4ee57f591f7806bef340fe0f230e8491bfc65178275432fb3cca9058cbfcdab3d22a3cd5a82d260ba3a4e1607cb8cb2a829626da9ade1a11db9520cdee7d09f69e8749cfe7f7", 0x1000}, {&(0x7f00000036c0)="386d63f7f242f87af63132ede2245eb8c470c07f87d70760e030f3158cd2b68ca334e04f82c9f8e783fa1cff94596d64c24d5ccc3308fad6bef483338b00c77b2f16e77aa83f205f645ca906b6d538fc9db5ae394e30259edbfefab7ba625e9a97edb5813a0c9bd9ef875d52fcf8411ba00d02d65425a4050f1fdf1464553301af634902e55e4f86d5b313dc8a8020ace51c33080a09ce7eebfa19cffba16ac827002cda22335af0cf897401d5a16df42e3330e53eae74918ac372e77655349f5268c248375e27ebabf31ed2c95bb32e1d8862607edc1852b77c1d96198bb3ea3b8c85172c3f494f6c4246cf33c6e9e1761a172cac01d771d9a6ad", 0xfb}, {&(0x7f00000037c0)="1a4b9c474be97f7d253b", 0xa}, {&(0x7f0000003800)="7c9c70e40ff4d29f9df581ec13c20a9c30bc831a50f926f67c45bf255f45a109389d860fac7252ffc5379e06278358e90e488e4c6803c588eed59a5a8cbf5720dffc6f47e2b83aca12f56130c60134ed486f1bd57c1c95866745df1f05668a3dcaf1b626799fc540cad383b742a3b8b5f211b6d3193537c50a0d6ef923ea24341333f85806aa352c87fe2dd3435b2d7abc616febe9b3ea71c1875f3ed0fb60ee1aded3c3e5696c18f1afc50c21af6c66b0bd8194f0c38f50dc800f06f34591ca39e3c6bea156f1cd2f059e6792f06c15278178a7080886cd41a89feb", 0xdc}], 0x8, &(0x7f0000003980)=[{0xa8, 0x2c, 0x80, "eadcff3d96e77627320af0a9f6a6d8bba3aeed9ecb0abbcebb54825a63250d04f6ad228641b2653b32f063b7bfe4e151f2f257f9924f9b1a49365fa82ab38dd2cfb79161209d4e5ef3c7285969e288d0b306f7cc39e2d58f3f1872c46a804f1b32bc55eddc27f73422d06cced399ecdd140d3f4d40ff355a9fca9ca742caae7f15c294cc6b3b3dc0b74a4b7e1b95679203f81208"}, {0xb0, 0x1b, 0x400, "6223bff2adfd1acef617a87c3d6d5bd31fee53fe4b9ffba90cbf63a9fe9d34fdc566a5022515161324a52e8e17c76d059ff4b28e54243d4604489fa7a1258d253c8ed74b771ed7204bf2b5f9c3d78534b382e2b8b9c8e477a334e6fe39961459d77a288a74cf21abe80fa9602449480f9b04da0d158976fed9a185b0358980ae7064748a3bd8f82e82d14b7c17a1fb7167691e32a048fe92e2e97dfd488a"}, {0x58, 0x10f, 0x1, "fcb7bcd143a50629d4ba33831c08ad7eb10cdc8857d35e52eeb9273e42019e319365de53861fcdc0e2595acc64ad85a13f933d50ac53b51dad454c619bf3ef9426ce00"}, {0x80, 0x10c, 0x2, "940410384d542f5bdd2dc1e6a5a535f7e68e6c8d4da34c6715881d25ca699f12b264a40bc0085fa3b70c2113eac1d6b68e42b45fffd01a7c18d26bc2d07413fc49003a4738d927e61d72a33126f2e062977f6ac0c0aa0f928bd97796fe16378a471a380e65d189bda941f14ca5"}, {0x40, 0xff, 0x81, "59a4aab3fb38916714b37522f26f1ec59f39dcca097874a77ae3130022fd573e92067bb20d1376610a1b"}, {0x100, 0x0, 0xc, "c8f6478d7830a440b61ee36e3034b981ffb9505049227606a766c8e97dc2cc82a8d14f27c37c39068e37ec7ce162489cdcad80f466da6384c896136b001fb3d5b0545eb449a0ea75f2e67a60e188ec65d7ad8238424d87eef759427a70ef0ff678a5cb4f69944f51c01899dc2d48f4a3fb92111eddc38f5dba712001016532320ab7df12e8bf44d65dafa26e668c36d67e8d42f1cb036ba94b4e351280656fbbe27d58b4616e92074cd39c6e39045306ed126d9a37859ef152437a1a293b9b55f1c334a416104fb7e20ef6187c61dfa0a37d47c085841041fdf105c7271e0b4fb6214da87a3959a4b109378c"}], 0x370}}, {{&(0x7f0000003d00)=@rc={0x1f, @fixed={'\xaa\xaa\xaa\xaa\xaa', 0x12}, 0x6}, 0x80, &(0x7f0000004e00)=[{&(0x7f0000003d80)="fe85324d81550e9fd3ec335f7fdb2613a581bf2c051c658b3fefb4f8c707afe10c738872fc32311f66ccaf10f818c7a790bd5bc6259c1dbeb6c4c06c2a52c7bd2717867823e9abaf00df380edd6788d107509d", 0x53}, {&(0x7f0000003e00)="8a67733b701b2f8688671f40807c7b3e0443c03aff49a444a9427a95ad79cd1ba02cd918ecf82f1b021be23d94b05071286eb04190edc2e4be8dff6f6465b3275382260903578b13d1823719813185f1d16b82e336536d70e5484d50115dc49abce736a7b1c9301faaf83be4f8fc07c4d3413eb95802384e0605f40376994922d0571685c5033a8f4ba1765a0b8a74e484e05b7a0ad833eaee8063b26a4de2c27132cb9826a930fc65206ebbf51d1cae3fd6c2394ffb5df9ccac8a88cc4c8590bbdf2891957451cc8059bb695c377ee37057f3d2190e9c71bbaa1a9dda9d257154248f85924e4ad4e3d0200465d5aa399c40bc0e025373a504d4d19d7890940cc3d40ada2a60b30e5450c84fde158eeb6c408656a9a14fe80787217091c99ff245acaa88237c0c71c75113cabc70f607212e63c694ce5a78b8dfc96232fb8ab3f5f104c3ad900d75ba6ee15e23ad059e9d4568a16ae4e07779a830b952c37f0de0c8c5c45ea6427d675eed199f7bf114eb7d00d083de1224c3a58b4d03d6bf96218eb25eba5a676b8110bcd3165f588df82d07b9f32c907065c92fb84cd78de08ecf2f918d8a3da2a5d1fdbb66ccbc75cabe06680660ae83025233dc562ca2bba0911a3d547937f84fbe70bf2de35cd5489dee1fa912d5316c24d6032ae2bc8e246e49f999412da8c172cb674655d67e15052ec7125d8d78633d2ebdb75354d7ec4405def3652109f9025903ebfae6a2ac97c13d3aaa3cd922f9d2877ce331f376ab303b4f71a9ffca14faa9e38dfbd111ab7859991c95d318570e6e90e10c13c6d8f32433be202235e0f64fda55e43663f6d03dd28af89647c1bf7ebb6ad990061080d8bc996a68df99e9b136cd028351a002c50d03eaecbfe1f39a926d969140c595edc8b3fa153fa5e31ffe5348e805d2cf434c7d3f26f880802039ca87ab0f1e370b107e4061f39de3b0ead2c95f4c10b365e4fbfa23ebf2210e182b67785c0065b731367f587c3e372cd85df176fcde4b72408dc83efd43c1e75876052d2d5f22b423e3a121d2e37ee28e9fc7406e80e953d1cc2b1c28242436b5281748b1e19e55704259f399d2f823dad40294adaf7e55da505feeb5848b2650718ba182d52857b28b76bc33de632fbffac6a14b697d4a4aece364a9e4b2d54708ff50f5a1310aa8e4f179a4385c74443b1aa95482e6f577a76425f7067d6fe06f62a80a6dd1fb9e85994ce610119d944a5545d08c672a790c8272ef000a7a7bd5bf4730fb2826411974b13dd2acaf0b8874b8c0a38b29bb232bb2f40907151b89063ed909957cd359f2f994dadfa3cd3e6824f178c0a1eff0f6b90a2456367469dfa92712d5120c27786281d90bc18a0a3f52f55cd0e995445a43fe078c3a0298f41304af3c06cda8f8494eb917d846b104fd5a351816e0b35407ea019bcab91b7f55109e1176dd0f6fd0ed25df8b02729ee106b74aa4b51fc55c46cdae4f507d8fa326c7edd2ce1249aead2643b809ac46d33e70f4d26988bde3e009e18d117b89eb109462178b7794a4d7754cf82b1e87145624684367365c54b6d2f613c8981207ed5960d95b99b05d27510a6869c6120f40ccab0ca5da5fbb45b9988d81c53dccf001c8b79b220b4d86eaaaed0777a6d1f3a855c242d7ed8d084c413c91189c3a90b3c7bee8dc456092eb59e26b00bf6a34aa476807ccef3abb53599b0ea6ce6e3572507d3b5a58d553f3d58d0476ec30492ad7e315f613374374749e2e219c7f188b49999c8f599ae8e2278a8d4b80f9e5d3f288830ccef1caceda50a2cd5d141c92402895201447a5ceb1859c827acb65c404f672d8335bc30f34f8b669eafae26c6e7cdb3577419a7ef987ac42f38c82713a2d60965047f26e0d9c2e0fda7433612418b60ba98fc65eec6f2cd8bcf86bf9e734e4b793bcc8fbab0220426639f6f479d985c12af627aff6d0e7ca2dc0b66bae3b2aba8866e1b3785adaf56794e468235e981c96929aa8e85788486789356e4b12a37e87b53239c0f1f606c79c7324b3fda6345091c564c18578abc1f0bd76a93f654c013c67105a3951cda8cad806a6e5eea118d64accf1ede564eb9ffa9d9cca89becd48d65d6d5163c4be1d2c715118fd89a8510af0247f27a3d95c23a4b405bcc8424da4eff7421494895a037b50c6e2760662ccaa72a78f0af24f8cdc3330198bd91f6cfc0526ee7b2ba2dd3bd7101dea3ab434ced0be02f6bce057b35604c03578764926b8fc1fa155f73bbe7808d659e09e010947534e330c34a94b7704cb0a1394906228a68bac2dcd967d70c544548781e2a887ae74bf246df040982ff84b1d70c3d6fe474d776e5387a43e7d4d7469358c256b810721c9a605d93b8de655ff769c7b36f9d31133781d9885d78937225e2a7e31eb0f7d1b1ec1dc681b3403890663bc78891e8ab3af491e5004d816aa298d7179c40063dde99683124cbf4d5d5e8fe25a72b32330dca0c35437ec950b5433804a75c80a95b1c5813394f0ea16b09e4b2db597c3de6a10eb629de10128d538fdd16343d3febe044ae45892d1b0c1b62545814e5d7828c1dc596f8a72612d134289099cdbac75cdb51eec0731227e29a86dffe09e76d46ba04cf39319d0605871b14647a09a3bcb2e47fb14a54baa6ddb5ae921ab4728c7e9740d24e052b86342e8c529067893919a73e29d77af4b9016a13e185fb907da5ebc7364708db8eebc5dab894104f0c5c2d29e139dbc5ba49ac19a90e195fc0729f1f1988fe4c5d589eb63d28f099f7105cd698e1df4eb5ad681522e76b612123ab5eddc5ef9b0b55a8c5f544b4a6a1bf8597bbf617d8cdc05cb53b967f8c151bae1aa6856e0f707773ae3bb1bac664becd5f7b6744a3d8df372407b90a609d6797fdac8417bdc155fd0a56158b39be0ba2bc8e9e33e8fe593362331eb9ed6c4aa30d2f9aba7fa8ea7132be539fd73c65ea6e32d58bb378a8093eccd5bf9d9e71ece1b76af832d6e4e2794a3b9fb9a7820a609bbd567745050b3c5dbd0fa9db71bf42a721b081754e083e9f414fad305fb1a8d98fe00beb46869d74155a956cf68ab91cdd72ce31961d5a434d43f10ba30627da9dce6d6dea7b97d4cdf383faf3dcaa8f8f33cbe64ebed0fcd9d163e477f2ebdfbab247527fe2f7710005ca01de1ca11be169ed794e185f51153e4a753ab69ae39facebd86b4a1dad7c29ed20e5975a6f0289609b14887d274820efd9b8d47c8ff68cc7c733e710df4ef93cafed0c35f2fd9d375bcbedf82be97ae68e63e94b3dd5148df988de8ef2f1408fdb931be03df940ccc015f5736870ed5355ad6f6ef20560a36dde81ac64f16169d371a96937839aceeb8d5f65bf6630cbe5a1ab3be058d6021799b04bf5781230c85dbbd880be3aba07222b3f799da8efee89c7387fb22dcbe3d9a62d1476c3dbcaf5f6aa400f92c13013d7106b2eeca760bed55b2c3f055568c8661b543aba9abb10723f6977a3d3f4790ee001de71b036ef739df4d439eaa99bfd50fbb14c6dd28bb8c539d4e6487b80fc3587d8894ee3b90c468896d612fed36209d55cb5abe06101fce1ec6b2bd7ae45f2a1bdbb26394e0f88944ac833aa373e318b30a7e15278c7ee058e42ea2055fa2439cfe8f04d0cc3a527c24c52d4c3e110ef875a9c1a29b2c7011d701fe3925ed3c3a797e23f513ad7d645c20e9d2cdb2109e7fcf26ef3c815f45004e12ae17cbd6e1fc7c61890c124c07c27739e22a1571eb9d6ce338d9f57bff816a75804a4065180b1d04c6b0a4a76b49739033a845e4e338b053a9186e6d32a31d6a6650c5480b44e0031a564298fcbb31b694942a3e61abc7b195d908cb61461dc3a4b41b046f3e4522cc5810dfccfeef8e8ffb56c9d11785d31f6221abfa555af28a1da8c924b6e8cbd8424924529d0d18ef21e705ae26df6357e622913fb6507b90c3da557294dc15ef698dc9ab059d91643361ab0a541b61a15f89f07d806ae8269182b1b5c948c59455497a8c7c5956a035d6b244f99face69bdef8691afb590fd1332261dc1cfc6c0c49656adf9488b2db00c4fed94c8d7c6aba9da6fb66d131599f2793ac7d6bb4370480c7127cc1501f24c0c574c67b324d6c4225da3834f8c2acd3099a055221cc8cd2cd4760020369396f7a2008d73685b4833b771675f08bdfccf3b86d0b2aa0088ec33ddafb538116145e21e2171eb0e9bbd2a9aae98b8af020a16d6a22cc48980d59c167965ea8737286924bcbfe8ae01cc2779f61b043f2f0a360166d6f92ea1dcdd614978dedeff0366172982b43e74a1e7eb00e56602799f3789deb50ad98e581950cdd02f1791d001b408e1c135f2444e944e52153347f9325578958da3ed6331b2a04a7fba13ec67ca7718120a9e7c8f0031266648e543bd8e7da3daa036765cb49e9902f6e88eebc9b220c8cdb682c1d9d0e6d11061ba0b03ce16d75f4fe4929350a441472533111c2a4f732175c64f5b58220f262c1bf547997476c9fe867ea08847209d0a549b25ba8ee4e3d9ea9ce459a28f0a573e9f943fdebe30319df5c60e842a29b7e4cc3df5d47abff4e8f114f88131f57f710da836b2430fcf17e4ae28d14a1fcdcbd0e50a3fcc1c3978ec337e8e09f0e8b7da497127ba2314b663608d30af528d52854b3c086deff1dc0eb417ae75235fa3417658cee6edbe405503545a2809f8945bb2a32c45978fa2c9f58b0911df6e85c453e0ce62df22c233377d4e1781c059618f876ec7985392c8e0eb52150c4c5f4ae477fb4ca45fb85d509f3334d6a3c7b1b3b3fc15f3c431db646daad6a85e01dcad18a8b9a56866dcaae0242cfbd1070bb12dd40f665717fb4115b9bc7c6281d7ad756fa41ada3d8be4b56b8f7a5a6ba5f015f322565080362441855a62c318165afc8b538b3a87d3d57f87528b5a44c3687c068a580a914462d9242e2ca2f2bca2e93944c2cc7600cd3a0a738e01d6cd756b5b8907322ccb67edb4fc0750576c361726f889390dfefc63a51190f89ac867bcd9730266dc37cabf85ee9c21b8d965fde608f6dc35a9ae694fbfe66931c162e833dd829ae8db039c1cf93a141f6b0ddf67b5c66d2bb9335b75905907c7ba7113c96c64ab5a3c3952718d469c066ad856709d796530f40269ba21140fb27664673c29b14647a36e360535be75db518068cec5945bed82a9449cc268885fc5e58ee9debbf9a6fb2afd055764e5035c7456ab87fcd998caab8b9573d058ca4c4eb5877a4297593dcd0b1ba464be07fa2393e0a368dcbd34d4cd547c42f1aed1c88bc5490a0e0c51b4cc50a7b4455548917f4355ca3c9d24a5072a7b436fc40ed6f25c5aba890bd158ef4930af9a071e56e9d225879da0dd43af1e51f65beb8d16b4fc0ad263d5f258aee2af68df883ef8466b09a4906c92364ee9bfa680fde6cf4a78960ddfcd5aa23f9b453f6776e9f8253b43ac9a7f8703d4e62cc6f5f4f4753d9b83ff4f595f27b165668900e2112ba8cdfc811b0ebac969f1c40aa91141a6d0c4509f4573e51bb0eeed70b74128cf334e19e801ab4af7b86e1f3e42c19df4bcae56553715d31da2567c20ee5cb3a6a3e1b8f17e3cde7869148717ce5692e3e32e33db8fa279b60da091c03fa3aec449f23bca0ae4b9dcf04fe2583c6fbbae1fa9e4679ab821a27f940cca54de4bea71456aa170eaa731d8e94c78cb511676757eb9bce237de4a6eb3a6ddd537618436a67724f814f096b46eb38b1b4ff7345a1c387617c3d52ec90971151e724679920887455a47ab71dff17e09ad92f0aafed", 0x1000}], 0x2, &(0x7f0000004e40)=[{0x98, 0x105, 0xcb8, "f3b5273e08a94acb319470624ec4553be4275c965d774b8c0fd8d1e522b1bac3624cd0d4e55b2dcc3065f13d949de051bd0535d42c97a4f489df5c382874f8ce9bb3cc4ef125e6b70c556b278b4110300d0a4c0dcbee714b198234dbddf6d6c6274c370f0593e8342af73f898ddc7701046544bba6630e9e65b131e293ee9647097a91c83b4d3703"}, {0x30, 0x116, 0xffff, "e42ffd235fe58338de0247cd54e30551d51663f420c852a1ab3d"}, {0x88, 0x116, 0x1, "05e318c17c57d11fd6b9355bcd369efd2940f981186271bb0e90e8e35d1fba268d3619315638b14fd8505335c98a273454c72c3e04ac23eeb129551abfc77d277b5c36ef6346ffe54ab0fa17a89c695d5b066169804832c5349c46e453969dddd52b34e248bd6277945d026a6b986830ac74"}, {0x40, 0x116, 0x4, "f96f4a57c3bd5e742c180490ec060cfff890853feef1ee3aa51c1c822e78afa2f9151e9a0a02ccdac70e94c46bd7b145"}, {0xa0, 0x10b, 0x80000001, "051c42cc0281aa3f9cbb05609c476956ca161530673c022bdf0f4346fd00fbdc50fdd1d019f65c25daf7be29b754b540a5bb53d5ca5fb5de1644129c1829cc2c32a8556282b03ccab72ead1edb167bc8d417f9136e46eb8ce481c881f0ba89b55d8fb35cf62d11a7192c3a346e5d019477ae3f33802c23b94c11fc15eb38334f9651fcd64ff1836701f91411fdab"}], 0x230}}, {{&(0x7f0000005080)=@ieee802154={0x24, @long={0x3, 0x2}}, 0x80, &(0x7f0000006340)=[{&(0x7f0000005100)="ea8118d378fb4e88a4cb385ad882c4b39938841d95edbfdd881687df33558d5f25fff5da3fbc58280042fd5cbbf150af89f0c62e04e7176f62385e978d7fdc0510c0316558f6af3756a51884c847a5a50f3756b6b74b43e0502e7b651b9e1c4a79ecc76d0fbcc9964bace86e0435def532dad5f027272f4edaa48df899fd7c99275cffeb42c80b318b0a3b476cbbf5cf968f1d4cc3f5ffad687a461f4a6a", 0x9e}, {&(0x7f00000051c0)="4bf2c81ec33babcf614b1ff092eff0f47869b75af66be466c2f6b83bfa5317802e18d29f767ce5503d16645b7086029230ef57eeaa2d30fcf130579cb4cd643dcd98c923637e4f839fcf49db17320587339ba3d1ecb3e6a430549ac04eaaefc190dd50f75ad24f5bf408c98e9f28ea74a4b673a1ae994cb1e4c5b9723af37fc12a21677ab5a8e66bbe2fb8366c07dd3876532aa3cae48d7cc76f3c6068153e60b345e1eecb643eeabe6e4efad37ec24fc0bb480df5600d925c07820410796bdaac7e", 0xc2}, {&(0x7f0000007b40)="e821b67b635eadd90194ded6ee32d8a724fa42c042722592365966bc6405ea9771871197030225b2010c852d68ffe4d34e4b1f7df976ec88d777fd0f3ebf45d8149ab86b4620e659ff8cf099fd374627000fc25843cf4222627ef511ba36badca0aa8022c757558264a9e29644493adb78a8c460815c615c6c62529001bf71e507530bf3af5a0ff06a0e0af8206e9383185c66c7b26b6205e45f383089fe2681297e9dd2de7276d6ca73c3d88af1be3e455e33ddbd8ab94928dd480458136acfbf4166de1ff927d03b88f7706955e7a7d962327cbb45a46ea056748a73297a954d4c8e76dc81390b298fd729ea456fcb22762ef2d0b6a4c5716943689333445c7d04d8cbb6df04c9c313a35ec91428ca2c70373d5b96b33b392793d4b02eee30d0243c3f1dfe647641c0492cea68ed0106d3bf702f918101b812cdb693c1f6930aa4f03801c1bd912ee7af53c6f50a89b865c834d162bf03a37878b8070cf30fbe4cbbabc7470521179559ca01e25de92a7a4f0d1a6155d11b8b05e1828712450d04b300a8ed18572b03f170dcc5b471936fcd5212fac4d7762d59fcc13f32ce2ee8beb1e7a3fd52f5d9d7a2e8e4f492669040938b196dc9ee4aa2dcab29673b24969c494219fb3f4bbb0d375b46bd9800bc329735bbaef534795590398db866f75c0201c6965dd774288a0f2d44162d7bf17ce2119ccfe4fbea20b579e29f421b7d6b36bc5f56cdafe60df9db35e1dda82fe99e852919f748853ec5c544cad1b1972f67f69103ba18719de7fe54f8d3bd4cecac7c7d6679b4a2738e0dd9345240f1922ebe296400c308d289ffa0b756a19d00f7ba06d237fc08932e8ed144f3aa6fe02b927e3bc098824e66eadfb4180a000cfe1eecda3c7a7d51bdd0eb79cf713b1253103f1457dea1b96ee1675a60912d81ac769476f0cf29122f2f229dc80b4cdb1472f953c46367c65634076733def14101812ac560d0eaea92d8a2c0943de6b208ebe09bd173d0e1e726e505dfe4e9f71da6a37567a29e4c0ff6cc2bc5eb0cafe2f145ac18033e7176fecd11d1c35d24b46d299c4136ad58130e54c63fab18c45b5588729958bfc3aaa63821e4a04e5b28c075a87fabf8ea650c4604a11f0f0d0897adf955803ff5a71aadeca333e414eaad9a00a3118cfb111078ea461f4cc3c82db5898f088ccb5ed37da456c86ee463e563efd669067066bc43fd355b7969b7d7bed0954aa0665d42b79b7063e2ac3cc246ba74e72c56ff95d910843d464029fc82621bfcc3a93c26bded80a330ac41e49241cc69ac584c30d7fa65058265836d3326a4d77f7dd9253aac562dd480ac7632fdf63cdb20cd632817257f999c0849864bdcf62ab5eb74368cea0f8cf4cd6940b2b75d79b2636e382b12e497e99f0abefba16a930e29d4ab3ebf34b85ec2dcb61c23455d3b32b5319c3fb9810f0b576a7b911b0e4f40f702e72dcfebac5074c25261e4fa9c6fd30d74457b3c989d41bbb5f43ab82f46accade045d51a643c345a22eced5cf2f35d213e30036e5da800a7274cb9c9c295526a666389c2fd464fd9a857a2942454073bfbfd334a4a0c23b309ebd76004c9b9e21a6644418eee0f0b6181b88662ba20d884d08924aa3cdc501d2e5851355548dadced12af3bca762fb17be7052b7155a0f2d71365f6a6a499205d43b3557ede72d9b02057a1f8a3f6b23ac6bad0baa6a2d57c60e00132bb2f295798b420bad174022258c97baf523c3c55a48e785d7ee05fd2621e0050d7d97915816e893cac999bc3f6643603481aecacb7dc33e4b7273490b10ccd1bc2f7a7f8a0cb46f3a1c647a31fb8291351dcb4c7c05a028e2b897241382f497311093c531c5e2c255d9ed582f725a3f41b723579287c82513d88fc9100d3497886f5da66d3f4ccefc46a4d64125eb52041c4ca82123afaa7e1c66517efdf8845cd797f2443ed3e87e6158600e2f5d65166bbadb97a8dc0c92a04040b5724daf9bda453658113080d98eb0bc311d7cf73ecd69125fe19623ce3ed4cd1a94f2207231f103a389ce2635bab0d89b559944ce5920fb0c45a2f29aea1c89156cbd51dd5ad5b5c413c9f0c346db9139724bc359e526dac1cf8bd8e4be9c7e6866b6933c583fc08903840d42c56ea92ed262c4974e4a003eb063186bc52e9e3ea4eab0945b2686494856e879f8c9a11e8bbc4203b926b75babd918975241e313cd03cb1880f9c17631f1155e6ea2a6b1084f5dd7e4c7f03ee32951fb80ebd2ef181265fd3c598eeba1b09dd05197c4816fd0104ea593a304a97201ff98865d57513043bd7fae67b77164a7ad6549353d2b4d6d46ae387bede1ada7f6f2a7d39ca7cc9f21cc5ff594c6ef88d770a49d925bb510f43e09130c27406653ec72b1f217f8fd01b04234aefc0aec4a74a40c6a4a69571e0cb66c2ce6cf0f99f479830c40f65c80fef8dd720c913e91bb9081cd2e5a9e419373f03e2a3e6bfd4b93e424841619885ab70c60d425df66918c6da85c235df5376ffd30dcbb9a6752f2e0df8d3dcd0d29541e3c74075000996131a4b8c374f0ff7ed2f2f7540152a74f8fb01e9fe7f4f64ea0439eb6872fd874676faa87f9eedb4653095eb6c903646bc8c7910d5ddb6f7620072677f41a953d2a38337946e6ac07240baee0fb0f449ba2d44e408c40c9251dafb918ad1e6313b759dae2666089cb2a6d5899476044895db831c27f7dda746941cfa40280e44ad646f7e60d574424f27c5dec0361663ab5abc6f33e8052e5765358f53dacf7c2b4d6dd69fc1a4e5963585ea68809b0c6230962cec62fb5fffbaa00ce4d71f15588b26aa50cc83bda8f864f1923ded1fb46f31addf67886c9cb016fab18f9ae08c401a07b54e7f16d17eef6f8f31d3a5fa7029b7c958fe73b1387ff02f054182a8e3579d20b262d256063df66a13b1d22779d610aa1cfc5b543e6bbe717472e388902fbe1f9cc1bd0106fce779b45cc57ddcd263ec4512e9bcf578e6bf98e720d9a9b2a55a4ac256fb4d06a3fe2ba48347ccf22e40da10c33506d629659f3d9e6ba2e90904446668081c989d1b0005f4626845ca5fae75a4a425b5e6df7b502eb3b65088f9a6345cbb34d6a219f836bb63aef585ce449b0d30f942cfabd54f82abb247bd642e313f5ea1fc559f5d632551a050721277cc8b510d4bc0654ee52e6034e57cf15756730ecdc57a7c53f19c5f22f7f09c6d827316f5675d8f094836f8ea2a92bd234829ad5f242d5ff046b60fbdbf99e7d0429261c13f8e34267c247c9f16bf39aa2455368f9560f9ce5ce9c37ce2cd6530a1f0b986df51df75dcc9ef0a5f7004b3442b6f46e2527e463db125c0d18146a54842830e595addd2dd2390039f08433fcc02bccab1328d34c8152ec27d8f763ce0044ac28d8bb3f7b1b7ad8349397d40d20df2547c164e900436997d8ce78853a9507c4207f10018974c7b6d10c5694d62dad54a01228715b21cbb2cc72656b0ad966d3dac55e3b35c096ef6d699f429050d5dfbd74280a02f09bff096408170b0931a4a338727758e9eaaef5e86e81b047f322686d03669877b09e3511d74df0e9d172bc805a28a98aef0be9158c600bfc1aaecc42783957ce381a5495e7ac241af8ed2de87f82f6c71f37d845f6b9cb5d8d7e7bba81ecf22de5512bc0312250a140fe68c8a4808d3a564fa274389e8ee4af91e78619fcc85812920a83ee78d2fe0db8631a3d20936b9f13fd886cfc5cc19b1627dd88cb188c793b9bb686131b37d4b2ccae047ceb770f8866fae31e90f361a88b8f7af65c9d93173a3e34679ac263c5e12fd9ac1839cc6b93bac744a10ba57692971b56cde05295dd0fd1a7c271fd05e20b0cb7e368bc66dc22171191798e373e19a71884693c66115176404fc3a1424254ce1ce4e8aaca909aa94f7e8c8afb2d74e972d79f106f0b9ae255dbfb8a4f81d665b96983b315a6c5ac3a93bc9c1fdcdd20dd9460c5df6445f9d611df0caedbc700cd32828a5d962bd8cbc01a0418b387de56b54be2253efa6c7282816e613b810e6f3fd83134a8fbd6a689818e1c56108de499522c86ceab3b11c6c0530607bf77ad7f38e7b43b365523fa6cd400fb3919418cf3667b0d9c06712583deaf0f0a1ff08d5f556ba78e5128586fa0ce09db4ae94a87afdeb43c4dee3e9b8bce9da987d7c3fb8d380f3a8a69aa51b6d2eb08143c872a95d984a8241bc9ca3c8a0c4074482806e08c866143cd68ee3da9180adf58383555e33fd485e512d526b60ff9592334fe4271f9a92684602fe9e904a63ecf5f4d8083980820e3e48550aa7a3e7572e79e56e17b612fb883894f2a62aa47c0db34367f880b30b614f98f76e43b19559e2a4f334803888a27e6bec92304d102bece8194c19f42e3d4f2bfa75126ff363f9ffad70dad7b1dba75a4d7cf3fe8a6e7ef7767467f48c6905bf34b9db038376f895e169c5b0c460ee06e204980f9ce7cb8523b4a23e37a3df35a02e97bbc0f09ac2a3fc00455d1cfb202596990f7121e72b0802bd9b1a1ca996d0996ad5bd824a1d65152ecdbdcd2ed2d7255b6a55030d58d98bbfdb35c67b80a1aec2829a7a8263e9362f0a481dd64e16367940b8dd4a1427c420c745e053ca00a571d87cbcf48bdbcdd23f215d8737eb2468af0b6c1c7157db02e10c046c4f5cb18dd5256092cb8133d604dc2ee89fce241959442523a3433f14c08f22a808e31366e612a29979b13a19f1dc130a231cd908c549dbfda916185bf43d74ec928001ef220b5eb6998112e6aeec16f5feded1c3a99d6d64f0e0572f003561844c425ad35f9522a9a051d2cf2badc822d7acf29bd8dcc973468c35b96311d251a8f4ae7494e2b510615e96722efa394410c0d89c7d1715bebd269392d76d7523d143ddb770036eb50a7597b01803b2259b6c31a2491f52b5128a5fd8dfea19c26f43532cc642588178ac8cf1120aec93bb80554056ab69a0ea14b2f6862c904bb14f06e878598ec2a0ce90a9435cdcea50ba9e5a207d2537e2771f82b1130b164421b5ccd62b3b14f0024b73b97ba12fd97e0d32c1ad9809f063cbc627b168c2b140823b6debd4932c6ba94341a71e0682aa73c15c79a5f7f7bdbe727842f97575940c7e9b0889b014c8a0aab43a40738b22ca65cc280026bec311a4f4ed246c009672b91ac80752c308a67a1a986e0686e26d0f4f6d58661198d295ca9cfd611a45f0b43132cf7e767b1c6e4215903e4e4b24eb94b0df9d39ad788a905c49554e95e3388fe101156c2df16b54a314df614e47dc31de72562b7edd9c4c8109616a55374525c007e8968c40009d40c820b463db62b9be0ddda53d4ecb28b5da2233da28010157363c44e624f853a317c06147d81659aa30b9caa38c3bc3600673cafa157407a2b732ad07a5ed407e41edfd697d2021d92893fe8bc226b97fe731c188308fdd4c200be32682d60e4597b6e8f7c9d2e43b25f8cae09c609931fae817281c4c3e197e21d3b59feda3c5da31509a0cbb7a07150b17ffdb91b6c8a69fc03cb0af8b3cbadbb7f2a9167113d5c42a34bfdc0d4ffbaa96021d77094d3076e99a495311f206c2275bb2d471ed97107df34ec5fe0d2078948ed700abc6f222ce403a56f6e367692e5c942766a752382410599cc5fd55f205b34d0190b6375111cc219761548812a80e4df93a04a3d11e5cf11021ff335e74cc35b3227fa2711552e860457ede6f2c4baf7db55209faf31c76a5182705f352e878fc65c8d6f9044f0f4829c85f4b2f6263a43f759591dffc9c6e935a57d9ccfcd", 0x1000}, {&(0x7f00000062c0)="a40a121409643627a6aa1408b7cd4219613a2c216c8973b36ed1a10a62d18f2ae8148f5ffd0422c730dc6b76b99dfcd661c5b92b5723cb9534160a8e3484100aeec1e530666d2d6b52c151d5373850d67e8800dcd6f724d2346ab3f83b8d0d7e9e68714ac602db7d1e328164f556f2e1753b3116d6", 0x75}], 0x4, &(0x7f0000006380)=[{0x40, 0x10b, 0x8, "cb48a61e9ce87cd453145398b3afc3a7d5598a6067ef71a263c3ff199049b1362cea6d96454dd50190abc3d679a0ebcb"}, {0x78, 0x0, 0x65e9, "775ce271f112242e17db9d9813a77c8b2bdf0bc4a4e7d21250c081c94c64fd9feb74880d6450696294c62115443cdaf7a9838375c1b31269c2e8aba0cfeb02538e6fff71731b22e9b42fe561cfd7dd68f8af514fca3400160581fde8f46a59a0bc85"}, {0x10, 0x110, 0xffffffff}], 0xc8}}, {{0x0, 0x0, &(0x7f0000006680)=[{&(0x7f0000006480)="e1639ec6d3cd87a43976d3fc", 0xc}, {&(0x7f00000064c0)="5a82989ef7095ee684ec088bf428cd987d03688bbff591a90df8a2d04f499aa084e5d3cbe7d2f39d1b269b7166f90cf7ede8f5458eddaae08a2afee9118ff6aeb3db999bf4ae9cdb41fc361f0f1aca3a6b135ebf0e392d5350cd6e043e18bfaba0648313329c2d218e54672bcda5f3d978e72e6b", 0x74}, {&(0x7f0000006540)="62b283336b4da85a6589ce1ed530b8bf1f57e5f15f62d47e3c175d50f3f735a0238a081d64ecae58c30e6a13560989e3a54b0bc3ce73c36db68da631b03ec1b52256e55e483e6dbba0468f38c95beaec69907f628c4d919f54ce83763b161f9b7ca9bc02fed88f0a057fd6cf8bedfdf745b7e0d0c0793f6bb63f39f3ff0f45", 0x7f}, {&(0x7f00000065c0)="93204398303733190063ff23ba86c3aede7c6d2c565b9d3d206bce4375a62db38c487e2ffe3ae2a1e23990316a099961db3bbc318975bc0c0d58873ab974fdffedb6c65a7b886cf5f10abd766b48209a2726d44bd7482205d7a62fd00ab92a0fc50c410ed100fba0d940ca11cf8a038a891d4583c6199c81988955479c4f255c1c62e5c936163e9f7ac3ac897789e357097515e088d9713c442bea54cfa0bd7c3a976815939fc6", 0xa7}], 0x4, &(0x7f00000066c0)=[{0x38, 0x115, 0x1, "9383b14e6ed102c7abeda6a5649c0d80a9ef572324ec7e86405260e62d5fff340a51f48dfc9f84"}, {0x1010, 0x109, 0x9, "741045e1a7a453f1bc338f51398d2ab79bcfa966a9e2dcae7fc1911bdd70abeec8781b90a25593d56761a6e46e18ed1cb4acf5cd13ccc10c6626929ae1d0fb9b55cd1159435582735b07fd8b69b177df4f8aacd5e25095b267f28ecb34db78b602445d89ab3f9d6ed97858e6f9776c4aa4954d5890d09043f3ed5910fb2212e94ca3a49e759e392ef03d1718510069db697efe096400c0a27898fb2d596c8e1d679d81556470283b396b4bf88ec8ded62d042695bf52893358130e55f286a4d7378d4cd6e01f99f0abe2b9b35aa783dfce0bd941f508729c1eda82e527fbe5e63e2415d182049ff5cd7cfb0c8f6ab27382683f518f318705a205e31998aca78f70dbc2acd2cf3c2624dd8b04316b9982e68b6e96d49ed9f414473cadb5253c827aaa39bcbcb26bbf54cacd55ea503318a4561f4c40e01748f8be47052dac85a9bdfa3b2d976eb7ae75f6a6f4272f629bf02450879559751eef05c4ff8a414181e4cf607c61d04e8df81fd35e8bae1be46c427d5188ba85ead0810b792a92a7a47dbe96b058b38b1706a2ccd67e28786e8689c4106cb914df5ca4ca609780ffa4be0b603899966ac93cd97336e98af604d974abdadd9e2a9c39395901bee943674222f6315236bed254f23b352a3e5eedf93d65f306b029521bbaa7c6f4687884db6fe41a0b06d7fda0a9639f2aaac1ff83c0bc9e27caa1ef1b2a985df159a0c9b222e203fd19a810e9f90e582e79358100ac1fee97279fdde3a017226d46ff3948c9c168cf436962a88b6af97adcb9bf34c8180abf845e5866f92e69626afa2370c87a0bcbc6206aa9deeba60562b6d69e4bf7dbb1fe733d5488c8afba2ad9d6ac3605f82be84a32527f56fd8db4f8dc508e350a5e3d7ecd4e8a3ab0ce369de45d87d220a61c90ec4b7766799118ae5c51738ca97c1ac0f13d983dada679c4ce3b98e30766ee2c6fe75a3033110e5f4f2e6ae042882e49d2bccaa5a8126240f84937fd56197b0c0314911f52792b33e8fc907b8601e279b1bfae0336583d27aa909edbdb913fde1a8f32d3f8c65e44e202d978491acba850959bd6bc0cb9c8299d0416200f5005db5b66222726cf30ceced9b7a255874d0023f84e01dfd3506c0f4c82ff0d30184abf9d5371caf126cd45220ab67142e0883d2b7092f460c3f8e3499a9b0f5f7a2bd46105bed415de7c8bb01a0a3d52ccc26f8cf88453acf126b161f8caaaee25971bdf8dfa1a53acbf611acdd99605dc5f798e2c0c22c9367386894af2bcc9fdd2981cdf2501024f413a7cd41200be6589aa937c932616c16c578da1241734c935e8e48d64dd0914b4f28c207961db0c1c74ab59ba75538f441e8fe74213d7bb41f18f2931572e47ad3ac68986119e65dd84200a4ae421d0b1a69340d33a8df97f548c84815fd1abae3454af4794a51f3bbf5a936a79c60202ed621111e08595e52a09d2c04603bea29d48dff3bf39ec3e14b468e110693773f1c40a09d81359a1f35f2d793f3ec04aa9743f88af37823304676348da4375013c2a3c16bc493f8032a0ca9a3db65f47b9a0e8c265b04e95566dbff61774df919e6db31823e562b6bc7ee526fd882ef1d3d04f8ff149cc09383202fb40198df58823839c1c006885eae488a7e9db896b3c9f940a771b2263cbc7854290fb25c00ab4889fd921280e67963a82f5dcec60b74e6853228b711dbeb193478fb6dfc0ebf7844c61ac0d5f9bcba8e66e6e2fe0d25499467f91a40acb2c40f868f412a4350de62fa3a18bb154ea9a9b62937d2124323dbdeefa7f3718913a2bfb239fe747185c1536c1150695ef8ea578d815316dcea59a3f295751afcfb1e52387fc07d99b9ef86ecc3d01d03307e20d435134036c4b0cec51c5184ff79686b667e950e8844fd1c88e511266d8602aa61e2578dbb47356e26599d41c095cd75405dffc4ccfc0f8136b8baafc7994e5c64842ae6a560f099f71e686ae0b7fc5f94ef43d3e56d05cbf0a938ba68ca4ccec67e6d31793d9f4dffc89a5b05b767c07add36cb4d73ba369f147f7c4d18559576f78b07024bfc5f1a6e3989b601a8d2ee7039ec1af19124147238dfc4babad9b3c7641dbb8d01b513e0b87edc7d7cab0a5e1b6691d47560f7c643d26ab5141fab7354c210920e7ee082a3644d07ec0b224ffd4aec55654f1b730681ba5f5173410d892746791bdf143dd89b1eea903f8081d33c05410b871fb6b48e1d90009136a3536ce6222b097d3a9c221db7dec03ddf5f8c743408599e6d119a5d479f55762151da598cbe476e7c9116cf942d9f1a82012daedc653db774ac3ddefc9a3da12a87c442bc37f32ffaa9f5f655aa54ffdbb33727460e71cf812dae6dc84bf03ba989eb27edf7f94423d98f30ad47e10626923fd53a9963d1e7dbb467bf6b43266f48c0c9d99a053b8869d6584c79dce3700171e233ce3ab545ca016818717155dd9d66f103e0b5c0d505bc0ff47ecc72931fe645e55ed1bbac3f66c766fc0a639101e56fe27be7132e03004abede23d1f783f01a9a8f908171792cc7e52749d9e84b723171879e063d4ee19aeec84cd13d0c389f8b3f369ffa279545ad5177228e8ef885a9a904a1605367421d168fd250e6a44b592c5512285fdacbc77e07f80ff192b04012e7f191de9aadfff7419f74a5c3602ae01a68cee5f00fa9ebbb206d98de18087067d33c9fa938fd4ed2bd6198117e323314c6f017ad3664768e9a131bea0bd814c39e21162d17c623b26ec0b8122024fa70ee655a47053357a9d35da44d870aa8bfbd7f299c4a2534ab91163405ccd96ac0cdf638316f9698de511e56a6d2e2ddb5492da0bab964681650a9a182d3f6dfe15ef99f7e764cc3354adfc48923e5334e9a5607451e2f2766d7aa6c5f591a291b0b92aa40189054551b5d0e864c06f999fecafb2f3e60c815ba03d45673c295ac103f0d13ac55c88c04355ab7c59130531758790412c2486bd53df520ccfb1aa0daf532be2c663cb2033722f73649c81ce7c58c9ce2b7c29047f55addf8259f2e6af81398ea0f63384f189bec4c7c09f448415a04eaafe97c4cf3a9ae2f138f901e87baad39498e757610de7e43a94ba05f531225551534a45de99f802e1431a320afbb6364b72ba9d3b0ab019eee6c68fd7f7c29db32c2622bd48b5319ec48602469bd0888e462d5c628ea86b1f4dc8acb67ec2e8719fb98aa04558dfcd1649d3666cc0e730554a3bfea84d960cbe024053888c02bbe3dc95bdd1f99c3bd491536660a6f0479724dd6206b3628f32f64936568f29c927d47c51ccee0ca0a31aeefc8cc6337afe21de3577ac56a6488668125eb0d181b223b1f242ba0ad2462fc0f56bf306b0eccbbfcd723551338d23ddeddf57d7cfa8a0ea987374d91c5da598e50f2548219f19c8883778c4f8fc3955ba9e9be87b24c34755b512b777ba299fe7fd6afa24c270bfadbec2f47d828310071ff0cca4fc960d66cb529d77ffe5dc8af3dedfcd31d2ca44f7c5fd030fc23350f3a69535bf8bb1e89840b3c7f08d527e37f8bd3c6fde2dfc4b2935b9a541b9cc412e605c7b720476e3a68c8f519937ad3052292fd9885abc5fe51660194f2ce5c93d3d4a6b7b37467fcb4fe6b3cde895f7f8df373580127002a96947c6d068450025494392513641a26380f93c3ed5acb96d8992560de562bc391c397bf8acc807385d7afb642c794da4ebc4a45d75010946159db506d1ad3bd4f85d0730d4206abdd6f8275a45669267c7f3c43ddc0792e1e1dd15f955bb80d73548b5fd914897020c54a2fbba05ce9eb5ee53bd3d458cd9604503e5079c01326ccb7cec9f27773e961faa7fc49fffca92a6278f32633301b62f701dc980963fb639f8cd623554c1095bf6355220f2d74756f5f572b58a82468b68447d3ba65c0873673511681e85a3bbd433ad67962d1b6eb3a72a347715c2f844d3d3125ec8e02049578f69d086a37c791f66f4b462c6597b4c5a279bff89af0409b741f799ba36ac43a5e05895ac0b5e583e5a2534482ecdc917031688b49071eeb3c4e90e82cdc1e8f5546fa1de284ce1ae2abb9c0733834f5e1889ee68b3c53662d5c6e3b1aac6e5b0fe8e0b01f87a4ac4a2a6d710cdee5a9735c75a056d1d04bd4b19f5f6fae90e743296bbaa09b1924b21a98d77d963a3f91e0fcb7c0a76813032b12545fe74bbcf9cf65d5a1368b4d849560b04b3fa3ce10b1a7def83ea6a4d36d551fe20c9057c12bb0bd15fcf5bb53cf46f5b14de91b2715a9ce2a975bebe8999b7cf44904bb0115073fe6b4faf9a324d5dd4c39d071c0fd219a9652c94e06c2a8baa9df1c3ae492443babf8f52399e64fb40df0626e28247af53d54f44645eb9b265d61caf9d4ece3135483ab6f15082aa61aac3ffc1dcd815d21bea8b5589835aeeed6f8696583276e530027564966b769dd467f99625a698d0b7b0a69d0d10d1fd2182af352756c638d42ffc7de2a016c96477af7ba8f76d4337798cbbc64c101ed79d569f975b109d97be534560af99ee3239bebb2ea01f4e011697f4085bc6c6f3d10f6c00566c46786fa2fb7dd79de9e95beabcd9e20bfb0f193a62131e4f690be4cf5d4cc8f17616dd2fd0df9e9d44c35ea50c0ff39de8e658241636142ab7111170d94a7466f185a42fc38c284fa52201cd913deab0b80151564c9b64ba2950b03c2e934e683853e5f133e036bd32d22c2326e24bdb722add58d3cfde1b3538ad685b3643510b4a0ba164573501085bcc8f6427d015bd9d8db8f198ac8b1ec9dfd567e0617cd0a74f98f3ecb69fc9a1959abb0d6df46f2a03d688c35f4b97e72bf66267ac4a154ad7179a526fd72b786edcd7d127df763ddde63d747b5a4c76a81c8fd33ea379a290b7e6e0fb943eeca1b45ab62010a10e8571182f6e3167b01b2e132bd07e489ae3c4c1afa563f949432f28f6efbe1f0baed178c2618848b0cf0ce84be5e403755adedc08eb2e1c57657b0424a6ce5e931a9b7be9d594972ed2d3d8a3ca9ea69a78a446c0c38c031bb50b8ee916f1716707d56275b16d4d1aded16a879a45c320b629a0a2a6696e238d924749113deb23bd3227093135ddfbd7a935e2ed1d3a42859395c83e392f13ca60dab6d326fa8008ca2bfd0e054599a67da0b49acf800c4d27ea3ff6804ebbd0fce43af90ae1fd3b30041e78613cba6443e4e05127b4fe7d3c75edbe9f2b9d0d0d79aa170020648e3c755404d5ae47270b2ba5025c28b1f3ce37c01fdc050f766af967e810bf642ee5406a3be982ae73370d8c2c0640a384ea0883a60b05cfa9b254b9c4a136f94080d2d281a2847cf978577fbd28924e072bb318d82aedbf5f4ab5e0b8291c7d0115a429180a05baae0513603543651de760fb2a83c3c7d1ec8e0178c318a0bd316dada2868a7fd42a210ce4555d69e00a035239139b57a8059aaa4c929655dd5b183cbef2107552f3ebde103a8753c9538d12c6a676f83ba0e4b8297fd50393679bc9a9f2f64a4183a3aa4f1dc4ab9fb0cc57534cb428476738ba8b6552d1d26399c24ffa1fd1fef7ff8f32a3325ec7ee6f113bdbaa3369de8b252fbbc3519157500c5309f3d8d8066943bcfc234a2b06f293ab550d307ad78c32fbbac0fab669e567e44b3da5e5e4de4a5ae3b9b70efc22d1f709048a17482f447a819c3043790dae68cf3df230c60c1a0004d9eb0d10dbd342a9ac1af359d0497f5f3365703545a02e7325a195dcee1ef38332cbac34e8f69fbe56f6a66f09bb3470d651eb8f0090695ceb73e3ff00b9d2f60bb28382f31d520680"}, {0x98, 0x119, 0x10001, "c5b3c15b4c26b5eee69031960bafbb372127ed0f67dacef80f84de991a6d64cf77e75a3da4ca0e788783c8266f7c38ad5c8d35f512ff4c118dc1408e2cb374124109c199ce0618d1bf55d0297387fb033c69b868435f903f48a06f8f561bf916784270b9a50b13146e124cf606d724ec184b8c3807a238e01f16e3f7a352f631f0a1"}, {0xf0, 0x115, 0xffff8000, "53245d649af876e1c9184465c5b7f33f0041495846bfef5b2c0f96a2369aad80eefa6c08fada003e3fb63101243d79498530d81758f40000000001000000593f6d06bf0b793418ffd55607034396fa917552328940046ade7c95e83ab07ad6d69783377562ba1d9554b97d732d04f30454c59ff48bfdcd3b5cd2d52336c47044659b9edeaf1aab716ace9eb94d130dc560613932f2c916e0e15845c843b601ce60fafaaa220f915910f14a9b68e3a1eae550e218b5c93c2158f6e21fa96e36b6c74b54a41842d3a1c31e52eb2506cea038c22e792ebb364a6f4f8327c258"}], 0x11d0}}, {{0x0, 0x0, &(0x7f0000007980)=[{&(0x7f00000078c0)="68f445efcc3dede850896d73ee950a42d6798b46e3303ddb8f97541f4d853c55d8e20e0fb303a5209c0d30e0a1a31e7c3699f07571fcbb76c38ca562503b1cf38caf9d7b815ccb5af3c8f1fd8d420360e0d3e16981fcb3554b50436cdc3086e547d3cbce3180300cd63e4d3ea65151fdb05e19f64a303ac0bb51931c626c5c3614584d9923f617846af4f4e38400537468938029af55bd565f3a14cfd7966f4c0f7e569d85db320889a6fab6e4940fc38044f79a905e51d1", 0xb8}], 0x1}}], 0x6, 0x8000) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:36 executing program 1: r0 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r1 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r1, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r0, 0x2405, r1) writev(r0, &(0x7f0000000240)=[{&(0x7f0000000140)="187d8f2a2b231df5cc87a07d9b183659415e05f601d8a5ea00de4a6ae485e090dd480a34133bcc9000765b5e86754bea1756c5153255fc41f1b1c734bc20288a5afc446cf39cceeaa367848df2a825616432d2f0107149600017b7beda637644e1c927180b878228aee6890410c41557f452e499d1d2e6b080ed2087793f1c0a86dd1ae1a105906706e00bc2c410fe848df8f626a7762ee8365cbabeeca07e465f7dea7054cecffd4690835752a943d0a2482d3056e74e6c01801d3cfea37e71ab64723059f0d998", 0xc8}, {&(0x7f0000000000)="69fe01c644f1bc0691af68de4887e8609e48923a8a5f4835d58520d7be1cae22cd35ce56b1e8494714b8265eae1e0b106fd3ff81b3a3359771464d216a5e4766eeb73711cd0217a8d818e65aad12a982eb1634c163b1eaa5eb5289235d8aee245a2a48ca91aaa3dd868cc4693bc572e5fe4aad8443b9cb26950e6f487df4bd2c34871684ad41bb7031efa49a8cf458c0f2196931831d4022fc4e03884b8c1db5ca", 0xa1}], 0x2) syz_mount_image$vfat(&(0x7f00000000c0), &(0x7f0000000100)='./file0\x00', 0x0, 0x0, &(0x7f0000000380), 0x1008014, &(0x7f0000000540)=ANY=[@ANYBLOB="000000ba00"/14]) [ 616.727250] netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. [ 616.803607] batman_adv: The newly added mac address (aa:aa:aa:aa:aa:1a) already exists on: team0 [ 616.849504] batman_adv: It is strongly recommended to keep mac addresses unique to avoid problems! [ 616.875901] device vlan2 entered promiscuous mode [ 616.902868] device team0 entered promiscuous mode 05:37:36 executing program 0: r0 = socket(0x1e, 0x4, 0x0) r1 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r1, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r1, 0x0, 0x0) getsockname$packet(r1, &(0x7f0000000100)={0x11, 0x0, 0x0, 0x1, 0x0, 0x6, @dev}, &(0x7f0000000140)=0x14) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) readv(r0, &(0x7f0000000080)=[{&(0x7f0000000040)=""/15, 0xf}], 0x1) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) r2 = socket(0x1e, 0x4, 0x0) read$FUSE(0xffffffffffffffff, &(0x7f00000103c0)={0x2020, 0x0, 0x0, 0x0}, 0x2020) write$FUSE_INIT(0xffffffffffffffff, &(0x7f0000000040)={0x50, 0x0, r3, {0x7, 0x1f, 0x0, 0x10408}}, 0x50) syz_fuse_handle_req(0xffffffffffffffff, &(0x7f000000e3c0)="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dc4e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ba045abcd5dfc67d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000209bfd66eea210560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003dc150f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6d90000000000001354c4b6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00", 0x2000, &(0x7f00000062c0)={0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, &(0x7f0000006340)={0x20}, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}) syz_fuse_handle_req(0xffffffffffffffff, &(0x7f0000004200)="a28096c80abf3543ecde7564abff5085d2227ebcb0f164ae92706ad0b083a3f469a3efd15b4921e9c3063b98b3082068e7c31950dde842eac55df0f991453cad62a6956b0b6f7b8cf49b506a3060fe1127eca99663ade8efa89ee189acb5f3b92f6bc4c46621c803eed0d0bb5f32384870ed08f89d4f74445762fb99715e083c4c92a8878be19ffacc30d0f2da64f971cd40563163adc15670ecf25cd3ad96138967c4b53ad9d04b5193ab5fb674aa0030a9d703d1baf810ce897f969121f142161919e583c275671b999e7f363891dfdfdf3556d01b86ee29eca8fccbfeaf1771395148706cc6e6be7ce29fc9ffef061b5420950c1a525bf75ad06edec51538d1c5bbc77da72dc90fd9998936fffdda2427e5a68966c7e2208f76304680182ec73007e482f034195712af922db2726195d997708734db9e7825a864be00b2a4f800881fc0363f5e618398454f35b148b4ccb88d418269fac868a8ba4a2d5b4f06a1ac01b5ad158b842e05adca22c7372585bf4ce95560b6c1e021a3ed2ff7bd3b6b3c7734c3b66d7e4c460096312082f89b16baa6e73814aa60925780cd92cd65087e260ec046fc363264366a9df2c849c0644911303946adad544521ceb469a3e193ecc9a7876403fac461a4a70d6193b2451189a5c5120b3535e9edf619108af7f517b58abd3fa7fb1ab832213430d2e6901076fba9c9e1acc6c6f48ff0e419bbc45589745a176f52a7407ad5e3dd49acb31b47862806f47077dda04905e45a80a12cbcd4d2dd9fe66c2d1f99394fed8ec60961cd2dc7115a96ece432fac86d51bebb08b95f447a83792fe80291fca7b298c9043ef2c26f0f7e42798d3f54c84b94c24c76c555d83ecc53b99bb22d71845e5cf21a5ba7fbeffeb6306e1730db14561b950a3f24bcfd78d4ab0d97de8054bb1a6077ae7cca6e45d846d3df82298d07212922742cb0facac3b77edfbab90e9ee2d4f7b0ee9b17bb11ec5e5721340d84cb6bd93428167e69b47759172557acda313c3decdfc6fe9336bfade459f43b39d0f2289f9142db280f4ee668e650e12858c577e12e2b9a57ee66c834be97979bcbe94747fa5d8d0b7d3a9f8f218df1bf960f828429a1efe838616b18faf6629236ddbded43a093efae163228e5c38fd7714743c2fcca47e3382bcfb1ab893fd7377527b4ec43f3fa60ebd338161d8de7cad65b15579e4af258f5fe3a63c2637a15703207029b0899b5427767647baef11e291358e6e54f6f13d3d2ca7a5e7969e04d2733b3b9ab822c69a3cfac097384de5071a9b74a656136d55eb190df08747b509fd610ff62b4950ef71c934fe21a48a4931d3d9458b415f112cee65c660f5490e982341da1c58634b3967ca6f3596d20cc90f508382156e36f16539093240ef5f2aa6a2c0dff2a67df30dcf50bf6e0b82a3d49f2d532a8dde1b3ceefcf0837190b74186090d1c18b59917d7efce1adfb238ef4a7b1d22c4cef09320221de883e97e6882466508de06fcdabad3b741bdca2cff879d57ddda52f42b3dcb8a78cfc05826af7e4ff155960ff8491194f4d321ef195990abaeeefdcb852d1e1e3703f317385a9458b6c2dd9db830f757ec29c9939fc7313e639fe485bc1e41ddaaef3fbf1f7cc527c8fad0d21b8082482caad7bee440e5097665f636c3dfec82f8c98afb6243bc3944939675a594277d278ba4361461f7da52e224e4ce5dee4a467bf6ae9f67b61ac6eb0a440406abac2016eec907e241c57f5f44be47290fd0fef785ff04df3810ccd637b4d97a84bae8486a36f75d872e645fe46625969fc2d1f032c56ed44bd98ea27bd9b6ddc8eb2dc2ec9f90f2f1ca1bd20e37ac58b03c84c872f4ba47310654986641460dfdd531ac62a76ad87b89c103ac5c9c2e7e70c66447b3412d4a1e5cbc30e16939505116c04de33ae054ed366de8d1f971c2de439957a194e22a488f58d7efd46439177f3f3c45a1475927eecd846d3d2e6a2ab5c7f8addd99062c2fc6b272d1f51bb8f22f1b6f8bb3faf8aa85e5eb9abf7df5cf8f26267323808b0833a987989cbe59205e7ad06556e2d1b8a4873ca1cbcbc8d43abc145fd4eb832e7a58ab2c793d003ce7b1850ce45eb7480417a1e9eb9d39a1028a2a04a2aa649c098c4f8eee514db5f6021173bb254b8e22b150b2ca01dc7ff235db46ed78d07f43d1adab13b8445d1b32069eb45f9d389fcf5a3f7d3ebe243c5b1fe17b1f5a3d571b65f21b9e471e818172554dc956749b99cb7a5f303ec480d7194a2ba86e204f06aa1becdddc8c49082c527e7064ac2ad77dc05639d3d2a7778f6943ed6105ebf6f0b9e94fddbe05c236ec000f4d1d4e496b10068211ab68ada4c7f7ac61f5f5ba5f1810d5bbe87ff4f8356af0d3f682baedb0ad8f8488b277421f0a03fc5e3095ee34bc4472d8f17e3f7013cf2f79f5ff3ea4b6bae56d1365a33b09bfa9a496323f7da923b7e29dce4beb81035f13130004c96e56d7ef6ca6c101d20c27a218e623227c33c9e488b17e7ae9ac20da8240501f7b614a1730f164553fe479ef149866e4ea47296814284a3d3eb7cbb294289ffb996e0eb053b9c16e54cf267832e3d360eb196ed51305630223309ea97215628f01ec9d3ea48096418d5e962cac5063460f0a18772ec7ce66d14a1cce14b52c40bbbfafccbf1e76f09e57ff0718048e5b993157a6cf4718826b1e09430413a3596a15c4a620fa8c8e1d1663e5739f9f790ddbb3be0e00187d43717d659242467d8681ac10303346157f894d9037641417010e9654c6a5b22263e73a5a37128f50078a980c30930321aa5c5e7851d5d392ddce3a14a96916fa8421ae6728f37f5de7c3e98feb4babd4e1bd2315d595e209d52748f70adc2284fcdaa6ad880470d2a071f3490aaf3491fb64b4547419e8eccdc491a8921156cb4811ad1e66514a32b0b31b641438881f28c1e6461b4f451938999af671e8c6a5cd0c072a9fe4cdbefe24ca616f3d0a15ac97cca835b1a440e04fa28340c6044176c8ecc8ee0d033d47db8a0aacfa0eabdfa1c9509fc2604008f01cbafeb5bd2b503b809ed672340b9a576593f1ef388391b54b605e7a15bef7b1345627a34fca57738b0f8f4f19eea93c903495274a4425a1a1cc6c4c6e335b631df5185c95b485e4257867b5347a40e4e14dcc560f061fd4fd265137dc68afd548adde778f1330f769acb1ccf5da14ff6992c24e210ea6e6179421881b803393bc6974e37106c5b5b3b5d0b3469f8969bffb7e4ceb2c98e928e74366492d27235ae4c74a2f48511aeeaa53a2beafa7a331b50e454c507af1b63350a5cef35668a5b9325014192277e509561008b3601088f79d42eaa8b1e4ae2000b31749e2b8094312ddb7f3c1cd625ef885c11fa22a66e374b52b3425e0b8016154e1fd8471339e32e7373d63ab646d893fbe09ae07b06074c01401ea76b3c382a9d32f24f93c789964e16bc4206ecd75c10917ab84ffd8d6cdf4cd28fd90375ff28518f8c1a3befc538e1b9e427fb671988d29f2fb2fcd039f4d341c84eb4d7cf600ddaba88bb094e4d87a1419180149f491368e648b69985b05ac39a4ecdd3c5135f3a5c8ad7792dacb6470144bb9e67805a211efb3ec9ccaf8e0901345fb19e4da579e1fbe86a1207f4f13c3436009c2c640b7cf3f8b77ca7bd994bf93308027359c6dd1b7db1e153fc0821968ef36c003b6c73fe890f4de24f5c6458dbaaf3819edeaa91783c3cfc7e773689236248195c7bbd60113f2476fa3687621d668d1728ee433d2f8f4db707345d30f1e52ab87a2a0afd547c6bb06500f59f17facde48f693490e22494b75d11df1a143b85068d143ef6a9bb5937a9df380c8948f1a01e9675e18409edb0f6b9605b68e34632fcce472dc50b90b0f6dcd57931f78e1e8861a0fb62e72b0baad6f9d23c1cfb0f19b25013c8d9fcd786a2f6f79768b5fb398f7b2baa31ce8156d1fc4a46c1c463fdf30360d42aeed2ef11611d0b7f654bb51052fd4dc39328f8ec4c58bbda05e6f1b3c8f6d8adca0268f2410e9a4a7d63b6616006d0e02f6edacc10e5c54fd85f15a8bd7648a293f23d6a699bd9a675250475a73a96d7475e4fabb89fb5e7de5d7a3479aa485c0befc60d0ac4fd5ac6dbecceb06cad86e219fc0ce4720758917811a3215f8d13e413bfb64fc065fc421aede0b56691797dac428c7e463479fa591b9072c309b7533e427c5cc11a1f6cf9a5b995d328d796d874c5b55dfc12a5039b413ce319cf5ba1f355c4e0717d32650b43e18010f37f048731931c52c4f36eb969dda702afe96c2a5241350a67ba2d026946189c5e281293c9a8e2cff3784776f1de78b917101b54e5ab00c045ea15f28a0e3f509962cf8bd3385d85250737eae5c34ece86b86669c13b00308a3b13c0ac3c83ff26fb52a4aa83c1233a9490cb9ca917a056908931751bddb88a62379a713395f0764e4a393faf253a4026d0472270e6036287d56850df1751543484d65b3062155b6300e0024241c59a862ae769c1a9232a2d9fb24705177a09cceb3eefbf9f106f67e01be14cdeb4d2fc7d8661df3e75de5ccd09a7e559f028fb9837c621ea0045b4d1b679067f246339c974631aa7134d4e910efb28d3c48929cef1df7e6c73668762d55086b6c59c36ac90154135fd7ca4e4047dd0aa161fa982d8edf9c0cb9666477e096c55718f6e4742415fefd4f696d1f1ccd6322bc19496ddebd36282a7c707d5b44113e30678e6e33ab7d34be04a59ac614d6a54134490998be02636fa91633d6294781c2b9a54c611c0045cfcfe81f49aa21b29d835cd2047c854486fd8e65a2ebf629f7ced602b9dd107bfde483e5c9b5cbba4a08cdce09920bda9978b7fc2b4a89bf1573a26389e52090fdf5dccf22111dc8c42fd3c8c477092895398086cc22cca665269e193fc650742a361a44b857d258429f701f22e9b7615bc3dab78c1479a41cf8575cdb17169470b347adfc03e03daea3e269725cfc72df5664b9df36d2f2b55013b71133e0b80577a47182511ebb308b6248d457bd2af7b28e77182c305241178c4124ab102771fd5a8c3dacb8775de881301d71587c76bcf0a97a72ad244d0c42fd71aceec32dd48bb5c9a95b391166c832ac5bac8c7cae4d18b3f7d9f2e4782fdf97732e3d51f67bbb57f989ee0d7589dbd0c2a5c63840e914b9d7d720fa120acbffebf816b588b2ccc052e7fa78992e0ea39dd21a122add41195f8e2e1acd777c1a4e8ef4362fef441feb4d9252c6bfbd2742152300a32027776e3341620d3c8d9365e10e81adcca7d87a0e555c98a0353c692557d90ee9be3fbaab766abf93e2462149fd99c92a5fc58d899ee75535cd1fe1386c5ab0b157c2102039d6015258f59cef3f15b951893a30ae839f740402a30b34e7be73796286403c5beb0853d856d83f1b00b48328f56dcb32e1faab08a3435b1482bf18b21c95aefeaafa7fd761c7f28d416fcde06bf7aee5c6e9eb50e55874253ba3f1d0ce2505b4fc7c3fc996bfbb8446bafe84f5bea94bfd7ca5aeaf237fe793b66e5c521d4092e4e1f9bde1dfcfe53fa55005d21cfa833a338fd9792614129336060e10d1911862070761aa20c2902eb7c5a355eff4cf6253d7102a2ca1fead4c53b57d576d104c081310d92797e4e2e8c269d19910d0d4cedf30fa28ba680c00137f83de940624229b6a125ce5233c6cf4a3640b74f58f288dad8451fbe37641c5559a5f3caf1299c8bfb230723652278fe378efd8e459b9da26cffeb58468a6301dbc06d713ba2d8d43d9038f5f2dc8b831ba58a88eeb5b1786b21e398aeeeb7c1f3d6f01d82b3947862fb9e7cbd7da5d04c5fcd34da28d53e2246e3ac1e3a619ad174efa6435eaa0fc94d610799ce0158421dce046306eb5042143daa336d52206b12610ea6389cdda49bf5af1d4ee42ac090a94ae7b7612073f3a5c36a2205eda887f41478f7d20f18667f941f71eebcfa76c1ab28f2a49a3bd56bd3f4e6bd079ab3fe2d94782236e83585a03e52907abaef7456a95d5d3f3d37efdc035dbfd7c41b8ba0af2df8adf1cf24f7ff0beccd3d26bc91caf42314ef7e466f74e19ae0df2e2298fc2f694a7ec134632035585d530e7e19f65c256f001d75382d9825ef741bc213af186377d9ca10d3722354e1897ca5c23ac6a52c9ad0e6b686e1776f7ec65df033e8f4d5db80c1bc354093b319cb70df93d610667675816328c99322f14e636b95f04e6497f139d508b453f53ddb5c289d849fd5407c9bdcefd1642abd46e28cb4e94371bdc606eeb67c9fe17747c68f2d50e82711da4d3edb0eda06f41b7f93fa8fb4d83cf21c79da67000bac2275508217ade1659fa8d24e5f8efb9f4bd21073ebef3d06368eb03fa3cf0d638448bd055ed20d292033ffdba538559c8ff9a2a5c8f83b5c393643d6585d1df994c3be43e72b8f3f53114d2a5f6bcedb573842b23b6a3eb7fca8495bf03bd03fde7b19bd39a16cec49e01f38e671af33cae082d9788e3202799bc466babec2080528d0609c0b731964719093735b4c1e73bd0705637c47516922197c552baeaf3516b5e3bbc2cd1afa3ef8215196ed580d9561092f620b897e98e786a0c7cbb0eedda8063292ba6482497f5f6bb62fb5ab4c97cb7658dc6579718eb97b547fcf47ced1426561af93a15fb4dc6d3d93b868644943c2c94b23b0570bbb81df2666c24f5abccfcdd71e209f3bb43c01d17f9bc8b9af2c26762fc6a741a150b7d1186e4f35175f3c315243e1c11e92c43a1fc492eef5a13c77a81fcf514ebfd0f8e645dae15a07e86b2f01fda065db4505a5eea83cb616f744f6bee731be191c65449c02603556d5a51422cf9c2f19f8d6843e0c1091e0708aa271e91f71c8602b9fa72189e036b7cb6af1569f21269283de94a6d7fe5849fd433d5b719c80419873db0587fc29786cc598d896fb16360bddd2ce12e54d05418f4f5e5f2d7aafe9fcd6268cbe2e9e6329ffb6c67fab8f3ce673028cc06aaa6b857556bba3b44d3fab5b6e875e70a2f3ad4b2ff76f31ead3462d3801ba373b3c2f545e94f57021575e2947f81f53283fc0a5137fd44fa3d074c92de54a0a3465c858f5a7ef08313faddbc3663e4e0167f3cba39612057a7518fbfb031f5ad0f9f75831973ebd733b82e554bf3fdec84e51f65dab6028c6c51366d9d4700fdf255e4c7bd70766e7f2281b3f2a5363f85ce49f9135904d14bcb117ad754c2594dcdca2d30e40ff265b5accfb116f64ed99aad570c4c5a91efdbb984ac651d8721405a0342cf77f448c17a152eabf29e88950558a86d0074e1cefab1eb7c366682f686ee1338737e675ea58eb8b4c86b9f28a6f6e96459f29e3b4dc59ff044c61a0dcc5c31d803e6e98420e446229ccdec3d0f705e92ffe016bb3696373eadab7f35ccf65ab4d9be09a085ce21bbd7c0555376e4d7fe68b5e7a64f48b5127825fb2be598d991f9c1a54bf52713417dcc599e812d85513a537e6eafa738edc972b67e065595d11678449bce6cd3d69800a649b560d0e057c502ca3e72e97820829ecfea801192c3f4e2c8763c095a43ee6fe45fe8730130937668df1d4ee577ada28238be03286481f2d2a004cc4d48856e71fbd64f1a0043a4520ecbbf1b3abdc96b87a27be8495a20542967aa4cd3a44a11502419a083d84e97abfde0901b66dde48388649a0ed6d93b9f20c530e990c7c52370a114d800d6ab3f6687d6bbc105b63738fe05fa6cac98ad6663936bb18cb923264e44312c24c2ce8e642bb73c921012b68a26a70977446b8f15f9d62467d8b356560c183a6bd6cd76ec868c3bd94a595cd7bf996755a508a814980c5e588b275200c45afd900c8c2de329ec2484b0e3ecd7b0960e5e3425881d1ff7f8bd8b20f5cc98ffc3acb77f5e88775a4bd3ab9f9eb027e27d3af55ebdf4eebab48ea911128d668d00fc3f5b5480aa0d9a4af563ba577384448e5425157133d59e1cef3c722f33700bd372825046b1fa5824e405154a3af1440bc2b75acfbd07cf92e8c162587e74b5ab66b1c6aeab3ad5fa3ee91da4900ef30ad04baea326df912517dd96e1696b4a91faa66675978a375e81f25464a1073dc6737af08d7e25956bb31d438548a7da38662d49db812a8cf1d6cc65f5c63879fd9ee7fd2a66ca3fc1a768cb239aab88c87206470b4c60592afeb6d69ed97a8f990155862ba4e22b64804142c131a23792937aa8a8696e165c24d7692a04bb4471b0f0d2507fe7c8618421428fc7a0acc984ca5cc6bacb772e8a717bbaa646f9643275910a6037afaf5a80678d18edda138a4e13d06d04a5d06431eab48738225cf1567e960e765728dc12e91b91c6f2b33dfb6e033aa68c1c2334d24335abc4a7a1df5636dec29091da54d5f5a1fff41e4a35a0c2f04f968f7d78e2f51c73577e2192bb20f289aaba5a175c2ed533855bd9ed9a842ad482136dd5e0cf45eb5e2d31ff62a3be1cf8a94a58316e74f4ab9fc54f3a0bb83beef0f355993bdea2c83e61cdc796bf2564ae51fae616799e8711998cd88d35cd9824452fdd65226174b46792cb87f4dd282e4e6f67eb66da413ad877ed6ce775f7e19bc93f48bb9e5ec04009de3c042aeacf7f4b25ad6b30e017303f64fe07ac79e8744aab6926d117f13513d0469cef335fe1d0d787c2d0b2c031a9521786ac10e9f8b768271680337f2c3262abdccb5d3107c632bf1f74c83ee91f49988222fb080cc8faa9b1a02526d8b6087e0b2354173d29016b3309587c16f057dd812aa63c3169150de81f3af97d082a8f8da4ce4f909ff649821d7f96d97613552e8cc4902e046ecfa329b1d980ff5ece69b8f1615fdff5244f41cec0af924624ae1641ecae5fa26c5fb9006e57100ee71377ced7c255ae17a0845e2ee0287c62c1852f93877f9f86157ca9675d383fff5cd6f2b001ec0136c07cf37f5ace1853122c2baa1092d418e2a490c4a5c8f56b828ce1bafeef4e77f095d6b4ed99d56f66812cb19be540ebe5d52e7eff2d69cbb8477e11514f7e3604bf9999f78c2f1ca6f60a2216b87fa0f25269c425b7d50709b200912b3b7899c95e12d6e9c4dacc19e327721860e0477a53e6793fbb7fb9704a848f395f48c24a6e79b9e1358cc3497251de88b8d3a7b22c6d8af1a7fab81530d9f0cc98f62debb222b54780d89794238532717b447d71b46a60ed481c21db85b590b31720009695ecffd4ef029964e5d5149622233ac013e960a005c924f73ea82c318455546c53d74aa3f7e2ff26aa074c40a55aba8b08027fc19b596eec6c4f89bae39e74b9aad88344f7cc5ad3eefa5095f2ab47222e9a357ecd71c6700ac576025201490d9e446603dfd4bda7617dd500981b2d2ab8c43882a5208494cb3f8ebc720bca8a7cf6c80bd7aaaf89507bb3412ea490a78973f12cc30413e9df1458917ea3d68b438d424c1314bc8d01939c5a5a842438281e62d0c800dee704b2a6cd3e1e4b885a6b26b894a98765fa3308c9e4b87f93625faecdb17c29a27cd243bf6030a67874ec9f2443cf8154261ac2a834c01cbe1f314ee7aa3ca552e1648cf8b42a63f249e3538026e09e44d69dc259adb0d1a0cbccb5a5dd5d0dccc90d023da79d5634188ff060f7e35a5f9d7ad99546824d63975d4452de876093f4e997dc46eedcd80a9eebf5e4f077fbb10c7d9e19a3419e7b845972a3b62613c5404a209b16fa88e0ff49d7b4f21fecc1f773c5b4be61021e0cab8602c6e8257649303aaeafcbb178e7a460ff07f219c46eb6fe5bf8113723e454003bd707767c107daf4255751daaf8decf35262640058924eb6587868b2c08230b317e97396ebc928ba8d274ca0eed0bfcb637676003c64e8c1e1a0420b6c96a44226061ced41b8448382abd2f3d0c472afcde231fbc9ee90c2f1132f8e2391246f95ad93354c7460e20de996ad0f61b13b27646887a637cede90b94b7d8c3130f0fe060e8d955c711a2700b302a75bdeb32a0a6802ea795cb114f5f82a1a381a86bbff88b299e47728b746dff964c94c52b661b9429376b1320b46081426b7c340206dc0da151bf84be2a49e78b6b5938753d2b1be8d9e67c43c5d70e72519f5f90d0500e84ee38f82b191ac4d968b0a37901fd923cb289d585693ac3c3f8a94fca6df45e694e199a9cd0b1bc1fa7394bcc96aae670dca6605a998793b7e067ac410ba631057b8b76fcbe9524df820c02efef1608b743cd2aa6d60d3d8e476fa12d3acc329f8272b087d89471177ed531fec1f9c24a975ca2fcd8c246a33e291a3f00b7f234052067a0059c86762475256bb5e7dac6f121a0925506b18933c6e314915d4b3b2130aafc2483ef22ff8bb7b887565b1bd22fabca22037d8fc9437f675c5313526266f60bb7c7c47f30c7d567ed142ea5ec367c4298328d20e5344f01c0c90cf8a6302f4d84b6ba7495fba314a05ba29b63bb6d458fdb05a4411136958309f418fb178e19aa09ff9e62b29732fb2986c96e738f7a688cb2122dbb8f2ad9a5f28bc49ec0c462413552afee8e403259b55ad6dc334dde7f2d306929dd01f2aa6036cafd41874522689301b81c9e50e86828894140356db0a3317b081ed9d8148c41e77e6bda6287762532b86eb91f5480915680deb8a91fb8656b7f0109064865d2b846af0861f67d3f720d6e306540cd7b68f095ef3690b88ea93fb6a402ff5697597cda83171f159e85307d1a8c01611189bd4eb4f0453ab88d43ae181a562a76902a67c687514079d6f4304d9a7c0fa24b6e86074ea0a9fd8187c120312078f5ebfa674adc0303734bf8f6b5585943706594192ad24c9f7d9794fb83758924f862855ddd50bff58b522c43d73c03289baec628cd693cab93101b1e473b76532510e10f03e86812fea6f2d6f5467dcf29e6d7cf8524f383a0ded3f0951c3ffb171a6b8a6d97b5fa8899a19f1a3d0e934a1d4741076e4394ba225158f697bf7d5651717c6950229a0be22e8120d76a414edbcd03d505264b7ede8272ccbd6dbdcebaf11daf6a652f6f9eb74ba7a3ecc942892891388005ae5d971e4e79d696564906dffd44845b704a9abc2fa5ba1bb69a548423a08044ad6d0e365db7e6bea0f3844a452759716cb98dcf326001ec90c1c343174098cdf47ea2e13341058ca014d2a30e9ba3c526de72a6e387181bf76a278c9cbc518d8c374a3f1d9802a39464a100903dbec16f8f095f5d82d9d09507281e4f7fe0ce4fbeced193902a5f658af2a4c1d0952dabdc6ae5830b6b5a2c3f5b8d33a73665990822e5f4a7ce5366755a1615543bdf78299c71e890e0bedb6ec277b10a389d6a3ba9c037221421279e51ab50fb115de2076cc99444202e88ebd9d0fbe4e60234b7b761495ac6c9e615ddac8176164a88fb6d6cc2b52672c8949afe3efc1e87a598896bc93e421423844fcaafe65af898a015b3bcaf623ebeef9a57155af5278ceb52b995f7ca466d9e18b05e86380679e0257cff6d0c6750078462f2ee4701d6d8289ed848b877cf5918625b7937060d667c11119881c30809056892352c6c53c01e395af6866ea350e6f21fa3db772c1177c759999973b51e11ffc5908", 0x2000, &(0x7f0000000c80)={0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, &(0x7f0000000200)={0x78, 0x0, 0x0, {0x0, 0x1, 0x0, {0x0, 0x0, 0x0, 0x0, 0x80000001, 0x0, 0x83f8, 0x0, 0x0, 0x8000, 0x0, r4, 0x0, 0x40000}}}, 0x0, 0x0, 0x0, 0x0, 0x0}) sendmsg$unix(0xffffffffffffffff, &(0x7f0000000680)={&(0x7f00000001c0)=@file={0x0, './file0\x00'}, 0x6e, &(0x7f0000000540)=[{&(0x7f0000000240)="4d9042427c698bf4c34c46bf48c15d4159fe7329b88b004f311d3205d15ec1032b412653c9a567f6e662c615574208f0987b5ae5fb9a269e5047cd50f4c352c21bb76ce2a4fd0d3b55769835d6c2fd11ddf3c811eed9a36244c5fc05f4c1370585173861c008764bb5039a1d0747f36d42c90de1dbe8f23946a2e1746f28e47e18096d3490cd3802ae71393a37a36d1ff833e7828331d894f7a9252ccfb4fbb3fc271ebb5a66484bbcc85f2ebba6379191441dfb5ed37b3c", 0xb8}, {&(0x7f0000000300)="3b521ac391a1abe92f3dae223d01126ac38f2d5f467c3efb9c08983c5aa1faaf28cc05210cc048e73aef7819865f43d47b0e6e712fce0c73897859038b115294d4d8accce0772d194b52c385b7b12949e0bd08ab1c8f74adfd1a897cf11a898a5c21ca8e4a3a94f9f4edd83d6d4a57c35abac8ba9d3789c22f3a1ac7e234047187eae8905365c0c62bacde55acb17d3af37a8bc7378aee3448b1e04e3a9ffadaea10ea9ff71e764e499bf8d5399bc2bd950c0e716d2d34b9781b240ef1be2e2d261dea54fd133d8e6b91", 0xca}, {&(0x7f0000000400)="ee15427137de2d56a2c3f98eddc41777fb8770ac00aae3a0f44e415056f680362e", 0x21}, {&(0x7f00000004c0)="7e216b9a00a7e519071d87b9007fe4800b165634b2fab15861db8fa8a332a07e2861b4cc09ba0251edc37cc7a1986dc2599f25c367249fc5bc6b0f72fff28b559e3dab52a075201e36c6d44eff9b6b83d4906dd1887cb9c6a51c01f021d958e704b0f378b0c76c", 0x67}, {&(0x7f0000000440)="a46ba221ea1978c1a77db73d16f6c7d5c437b4e3eeb6f69dc7aabeb6d9d157acaf71cf752059bcef2062e8cfc1e93248414b07197719aea1ee2a306f", 0x3c}], 0x5, &(0x7f0000000640)=[@cred={{0x1c, 0x1, 0x2, {0x0, r4}}}], 0x20, 0x8004}, 0x2000010) r5 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r5, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r5, 0x0, 0x0) dup2(r2, r5) setsockopt$TIPC_GROUP_LEAVE(r5, 0x10f, 0x88) [ 616.926316] device team_slave_0 entered promiscuous mode [ 616.954324] device team_slave_1 entered promiscuous mode [ 616.993142] team0: Device vlan2 is already an upper device of the team interface [ 617.016955] device team0 left promiscuous mode [ 617.032980] device team_slave_0 left promiscuous mode 05:37:36 executing program 1: r0 = socket(0x10, 0x3, 0x0) r1 = socket$inet6_udp(0xa, 0x2, 0x0) ioctl$ifreq_SIOCGIFINDEX_team(r1, 0x8933, &(0x7f0000000080)={'team0\x00', 0x0}) r3 = socket$inet(0x2, 0x4000000000000001, 0x0) bind$inet(r3, &(0x7f0000000040)={0x2, 0x4e23, @multicast1}, 0x10) sendto$inet(r3, 0x0, 0x10b, 0x200007fe, &(0x7f0000000100)={0x2, 0x10004e23, @dev={0xac, 0x14, 0x14, 0xa}}, 0x10) sendto$inet(r3, &(0x7f0000d7cfcb), 0xffffffffffffffef, 0x58f7, 0x0, 0x53) setsockopt$inet_tcp_int(r0, 0x6, 0x7, &(0x7f00000000c0)=0x200, 0x4) ioctl$sock_SIOCGIFVLAN_DEL_VLAN_CMD(r3, 0x8982, &(0x7f0000000000)={0x1, 'syzkaller0\x00', {}, 0x5}) sendmsg$nl_route_sched(r0, &(0x7f0000000140)={0x0, 0x0, &(0x7f0000000780)={&(0x7f0000000300)=@newqdisc={0x3c, 0x24, 0xf0b, 0x0, 0x0, {0x0, 0x0, 0x0, r2, {}, {0xffff, 0xffff}}, [@qdisc_kind_options=@q_codel={{0xa}, {0xc, 0x2, [@TCA_CODEL_TARGET={0x8}]}}]}, 0x3c}}, 0x0) [ 617.049461] device team_slave_1 left promiscuous mode 05:37:37 executing program 1: r0 = open(0x0, 0x0, 0x60) open(&(0x7f0000000100)='./bus\x00', 0x1a181, 0x0) chdir(&(0x7f0000000000)='./file1\x00') writev(r0, &(0x7f0000001900)=[{&(0x7f00000001c0)="d41ed057528d4ff67ad0710a084b7b9fb7f4a94dd1a81b68885e3b9f8e0f2f643672f17fd7cee53372fadfd21fb9fa209a10aa388694fb0698cecb8ccfa0539c925fdefb9fc70db3dd5751b4c67b48b5ca19001b95754b9851f71a048d3457d6ded524b7c00aeec548bd7161e17adad2277b4579337100f5a2e013944f84948c0d2b00a51ca3e1144365ecc27aa5612af00f6b316edf06e88e6de259d0ce1b4c81", 0xa1}, {&(0x7f0000000280)="a3676ba2559ee41258b5f0fcbaac351b2f28e958e5146d56bb6473f04019d9ccc215e0811ce404258b8e428cb1497c801ae6a5aa1addb5c40b310a9616716a7f03d326a2b94e197abfec566c3213fdc8283af61b8be8fb6b759489008dfa6265c4aaa2ec78bb93a09c57742022b3ca93fa04e70a4e3b516dc97e2e9d187883b08f53c15a32a401d7f7562788d05f14af45f1c45f1a02fd5bc2ae0c1673376c72f56a90bfdb432c6248a8216096408460d5cfa324595b742dc6ee52a3a6d17194fe1fe0b1c09d85e96887594ab80ee47e0541d609ea1d27e7bd76b1fd1b45d7f1c7639c15a043c5a55ad8e20472c6d0ba487183624f498c3a5e1c56e1", 0xfc}, {&(0x7f0000000480)="0e7c3918f5f5b961b3d2f1e9b4cdae29e38cec51ddf4c520edde6ac94a5587d65c46db875517a90cc90e918be122252cea2bd015aa18ad60ce1d5ba0e1d2052b8dd790a28bc8a860750252615054fd59cad6e74bffa1e29cfa13e38798d6ae35b420380b56a7cbea", 0x68}, {&(0x7f0000000500)="7e5723fbce9962f40c67edc7e10ac9b00c21852db88405234923fbca37d3dc15eaf1785398489b5dc55d3cd8ad61064dc0122743c98dbff8ed1bb77adf60f74fecc33e108ef267545d5e80af1bbe9f3a4af57e6797d6ee24c51df5ca667d78428d0a98501f423d1a87680ffb3d13f998eb90bda98ebb4dea754803caf046a0b8964c0dc67e5d85c36a34e36bcf9445ae75", 0x91}, {&(0x7f00000005c0)="c26f82562561baa0fe52b6a7d220fbaeadfe84c8d169ec10beeee82ac7c88af265eaee7bb19a9b65260168b93df0c69b010ace47d029352b3d5b4da31d990d23cb488d0de458100570db747f8690f13d36", 0x51}, {&(0x7f0000000640)="7930f8ab0130441d9ee24490f9fc32428aa19d85f4f4b003e042440cc964dc0991f06a1521a569f781be70fcc891ae4376294cf2ed6c980c3cbe6b01add36baace6400b08f4205e6ab0063e3d29b1bc2007eac55536d4d5db9f326250bf2c8b5147804b3e654f4804f79bea075529c0a40d6191450b815135a6ca949fa91dbd52f1459463730fba7e0a6821c01ae96ff74ba0d10d334692020bbefd158d3ad114a904a0126b3f5adce0a84793873c81682467710ce173c660e0bb5e8b1973f257b7ebd2fcdc440084b79f26c43ab1d6479920671f9267641747fd76e716a", 0xde}, {&(0x7f0000000740)="9cb7c24ce3771ab659369d8cc96e6a5c716cfad098342fa8905fdddd13ba116f33a19c40cef8ca613422594bb3d385d36fea5a5fd3212ed26c906e7486e9831f7e66bd73d35e794d35ca1b680f40645ea89a76df3037f4d8a4e49ce7f461c3ee8fd7acc10bc839ed0ec3968e85630d36960c61269194673700febcada98367c1a1604850", 0x84}, {&(0x7f0000000800)="f58fa15bd92c2ad30bbb44eeb769e573d773758c3ad847a9712e9dfb1e1a682235e09961ce00b524f92ade901a1445e59858f91b649d0c5b5cb192bb72da812a3347ffb85e17cb9a2c020a29611d02e1710d1a126ba0c7267403f593ce6d52875c8d724dbea0bc0542704924ac4607ce12e3ca12af81c6a5cd898e4484f3be61d131286529be55a10c8867a809ed9b0d66c31fb4fb128cd99f3fdc3c8f1646a9a40ce1214c5f6adf732ad49feff675caeb5ce3cf57d07ba5eec07fa84847fde9f65c5ff65862019b1dbbe38cbedc8c9b6a13d1cb26", 0xd5}, {&(0x7f0000000040)="8d94d3d8d22cd4558de5c7afe5740146", 0x10}, {&(0x7f0000000900)="4788358a4ec9de4bfa31fb63dd3e2e420d916aaf33497b90f8b9dfeb0d095f27553c006931183a9c6ac0b636bbc476d1659420616731486f3d1de81bbed3bd208a68b726a4e1a0e2473539aa8388fadb6ed320faf1e6fb3ccbb7805f0cda0806e528c0373a1d596c0baa27cddf1331b5f07e569e525b2fae906508ab08fc8e17464be481acf305d66ddf9975eb199cb78054a7ede77495ffcbc045803b5fda9a6178ee14df1dc0028138d6cfa03157898d5bfe9b6a18ea3d5827c3290f1f164fab53cb7d54b45af492b88c85e55e3059a2642fffc144ddc8277b7534f538f53179cfbf887268cdcbd06184268637d57e307035f643f4a0b15d9595a1b381fa8fa470065c7ce5ecc2a5c39f857179bd9ad5168000eb83ec3897ad0481374c2988a1e1b39881a0d9e9047ea3620b8b6f1c9b289b7ab767e356057a001a95645fedb095cc14390b15e557317fac094daa6ae19530f014b3a43771cc9947e01a955b01ff688731f1e5b8e9753be821ae3a51574b79952dcabeb54637d5fad99b571f6c5a64c976c5d0bce868adb21c36998a3660b407b78d8d67a46d94be6e16f82dd1949a8d86406db06468cca1dcecf1950c3bfa1947261c7961980371fca23c81ebab5edf0c7833fca8f9efe99e1214aa1e19a553d9e227a7b3327592c856a75405e86cfe11a40eef78a8421a027fc63ab66c8e205aa49132f58eb625330e9f7d871e0c435c071455ac6f216e40f35e361ebab7b00188c60e0f052d7ff99b4e5d89cc8c4beb4866bc906728aa70f7cbd1d1e8df9c8fde00d04267803e80c66ffcdb77b537e4cb38af7c3cd111a8293837c0dd6921a21fd3c5cacb33c5c707e3f2f317207ebaf2fe9e686c2f76860f5ca2ec6cae9cd0ad82dd72c96048f180d58f8e57b5abae68672975fc6d91bf4f6dbcb48dbbcbfbbe350edad1846b85da5724f2ed8659e8586fd59cde18184769f16600f18f8b74827c3968e5c8d97be5f3d7becc733536a09328248866e3852d572cff4249b13b3c27c462b1a4f7e52c295bf5039a5246dfb895864da860ab640d28a9add65372a7a4dab0be287d79dc1927b2a5806d3e1aa7126bcb5e57568b982dd985b9775c46446d7c7098308d57430a8aea380c645b7d59c79c8a13de29f5f0c1b9cb4d90c9108e38059c1ee2662844a1917151055ca9d131c68e067655449f6c116df82c857c954411de8593a2b9dda8c73ae6068fe278886a51a43f85a2b80873180c02a62b964c6dee66c2af98fd849f042f3caa97875b152c6cd4619d70b829d26d1291be6ca4761602f61f3d1d5280a1f5d711a38c40597d8eb8304539b922dd9b0c8d90e0a13525f932dcc4f3656879c17d593a66aea3ceea87b6364a223862a0fff555d95ffa833f7edc4dc487630cc0760cf8102c0f63c12d7fb760bbaa0a52dfd4465d031a0c1776a491dfbd433b5c94e05809437d5f05696a722563acbec7935a9408ab6e3d5bfa920c84d83865c6ef9043ed666b593742a2016123303d12ee8c02318c3c2e5269857efad82db8ddf19fb989367a1f9f9da8a0dfb02fb1cbf5968f9e60e8ebc11515d2ccbd7855c9ff40da290565801f78f1d9d8975f773b6ecd9df27db6ea4a3f8de22c8595bf04546863bcfe74185e5e8d816ae6633c930e3d7ad9eedc54ac33445d79e86d61b7384a413ba97687be2c2e57fdfbbca24415aad66e58731f45959c223951daa1978e0b2bf84dd1acac098f7fb15f1405496fff36ad2f0fecc06a5d46c4a2d8e31109671fcad6cd8b438feb990251432f077eac1ad3e1b17ae89c84a3a94d4203f2aa4ea9e33b1b335380680a92d14ccfafde1119c0ee0c56dbea5c4130f2d6e2f5682783b8911252c28852bf0cc622e9a1021754a59e0a633f636cfdf764be8284f1a722897e349ddab777ae27a8af812a84967969475ff7997bb6d05284319cefe69ca9fa6abe3f424dad43ac5277efb11043ae57999e960d77bbfc63c3d06cdc97ec27648e08c9c874357ea4e551e24fcd65f79cc19b92fac486d122fb57b441f0b70eac9f7ce2ca0178e3c98b55658d3cb4df854d87fc1a61e60bffc435a2a9d3f7235fd9a9175eca38542bad69e6a33eb9a277663b386e5ba18c0351644441f4068692c25b7cc12108cefeee7445f5a3c7d3c440ecd08262cc09ec83f338071822395a2c5f3f3318e1be5dcc2add107f3a2f4b196115652f445b70fb4a0e4c091977c864bdf6de9120a764685577e2eabd01e3b21551d09fd6164670d2e260adfb2781b501cb90be1accb9a26f106259380425a48b4b147e48566b6be40b160bdd9fbde7a6646104eedc34ff42f9304a7aa55569a7193ad45a311be4b83ddf41543014c3f3d5d9af791d1f9300e25a689a1db3a1bd5a334ef22f57d29d2fd3ee87ee2d16e13a30a364668252ad23aad880556e948b3ef8e0d444a142e01f65ce17dee5ebcda7740c3bbea35f3b71117671e9a115c3f457ecad64dac16c6d3a0ca275a0ec7e9a96fbdd0c73668df8527f6ee0756f1607af057f82b66b4f2b7d3fe4037c3bc8abfdb1b9ca05a825374db1ef9091cd4ca4d5cf3b1b0f376dc26b1bab337c1cc50d1ef4aff6ba8500937d4c40c6a6d8507d613bd7e5493d4c6680490a88d7b03e58e1bc38d8688a9fda610cc7ce09322fea671562c41afca561bbb0031c3f40d7decc7c89db27b83a94ea27249d8dc93e824ebe451fcf0ae1386158cd323767bb6aa28c9466f83ecd5940f696f9cf1e26323946ad7181dd1685d3018b239ce73e9711aafc1ad80654c8b46968f1358d0e7ab6e674b7eab4ee9d0947817abf2dd4cd8ba523809618329230a87c6e778381da1e2f089f8173cb1809fd9dd678a9de8c688c6a524a2ba3bc3ba0033e373c7f795f1dcd0008cb1bcee8098d1b7ff151e10927e9490d0cd1dc67321f6a500437e20de3bdb98e3b4bce0b45d54e6a3be5ab6f0d2467c8781e110125bd239ab8553369c081b2471ec9428783d3d3890254119e6a0ad6d3bd834109481ccfc9c481c0bbaec6255b5bc2a6f3834522fb6872620349d3c09044d9b5e0f6e04e35a0563d0e11d8fad772c6879d039eed014abf1c136f66aa882482c3231e59b0e54cb98c0978a3dbd6ca212d063c1d17aed1eab7f154126613f0ee78df0b06b0c8273353165a016886bd126ad3910925d8dcf1707fa4c3a8b72dad1fe783edd7e467470ea1e5d73f644e5611d484d990326a595b8a984c283382552681a31b5077350311db5bbcc124e85b77aac28e31541976af1dc3835052b5eec5a6685ffcaf0b3049c1dd6b8a8bed2b36aa7e1104551dacabef48a26018caac5c457d2f76642e2f3d971d72fe2835e6591da39b5e0f1952ec2f46ccf519d4171cc1f6644842a00a04161eecc04222e90081ed4b990a916f7e717478cccd80931058e214d6ef480d47323f64e3f8fe0745d18c295c6bfaae7432bd07937fd70543d3ddca45c652c82058eb55afe8d48a020c2da7316123a49b4942510b6576a5823acd0a264adebb51cd54182d62b952a929e22745f19f0600cf9f362820c051fc91f82e97ef165e402fc4c392b399660e77b5b5243fa0d2e99b364ccf7d32a897076a7ea9af589d92a13709ce05490829280cc7b738b6cd15bcd87695c878b00fe113b3c4be63942d96917b6e044152f70d28e31f2984d8bbefe55d02a3be805bdf27ed8888d7f8cbdbf7e724d4e4e3b559e253a71f43bb98c9026fbc2accf121f921e1d39a8f92b109fc47d4c034a3ff254f11e43a9481132bff67f9cd13ff5133a0579b9d42747c622e2e0707184f9f552d317e11d5f37c5556a72d5b160f086b8eafc415c12e1734b3704eb2491a8dc7a7b053471b64678a62c2286d6b15934a29fd70f5e3e35f491068ac67271d98067fef068fbc41bf9ba114a9713c6e339f09315de647dc1411a8990d9be648ee0030e630e2ae3372b0956f4cb6355d892dd0669b70f82cdc623e11239a9e60aed325812d7a99108ee7b49e1cbff4c2e7352ebc8fdf6c09e36fbd40fc52dae284a0ea398ca0b0d313d1593a339cb1603a7afaffc78770927aa1c724c251f9cf54e0b9b81ff3e132826328201aa62a0b64597433cbdd235596f486c493a585439ce3885336ec113eb0758d4c998aaef94968854bc1ef6ade43f0978af3e7f84aa9d044a5adb849ee64c5058f47d2b475941d84a496ac41128a9ac855d06241702dab07edbfdd68ad5e5e01a88923c965dc842bf0f3f3521f7b857723044a566c968195c20702656255d4c2dc352dfa38767b1a56df4e9c0473fe00840da7798240bfc9669d5895bb0ed2183b19e5a12a1cccca75ac83aacf8b5e05445820413869b7d501c8be1594761fb44a769a3f219a7cde4ccb0b36ebdde2ffe100d5129eebca5d74ad2ee56cd982a5e660bda3d6737dcf8128a2fff102d895eceecc02c0d7ef301e3f68595a2eb0ee97a2f5f990d7be5e6267789074d4b96cf72563af533370202c6c82aa39116f6a1b8c0c559424af974c1199813ed542f1fb51dadca607724ca47445c726ce284e9a2db167542ad1bdcd2d84b114ca5bac29632bb56ace77702cc4d967dadb8d0985809c5362694e8dda874e7019b65aa5d569bec6c98b2b96102a8775654b7aec71f01849a8a037d831604a77e2c48303c9e34e7c9a8ea3ac9968b4411959caa52de024b682eecf6f8e7c5e87acf0c24266ed62ff2ef2c37d1ebdc7e7115aee202db2c336d48293b446f7aba274dd868760b19db7d8271a6ce4db884cf5867ff7a8533d44453ef5fbba5bf40bfa7d811cb381470592d7a4630063d6d571a19748e1a323298beea755cb8f379435bd6cc111324055a764fd408bdc01881f5b885789b71a259689612caf0bd98c8ea8ceb0676e66eeda350ee823edc26d94102f7c2498023b16200172142be4d842c8954d11eb2781bc35e389ddc00fb73378f27bc6d08e3619c343ab3c0ae72efece62519d2a06dff046f1a1c3c7988d208f44a73f6017b80f31107657ff9565b956e205e058e963f378e5dc86eaaa38dba7ca134a9b97c311b712484346aac7ccb32220758f2194e32ef5bc2e6be40ce50af16bcc89b6c7dbb31eb371120fe76296d11225780930cd551855bc485c0df749a062bd8eabd62d5342714c33788cc0f387030550ccbf8505075c9913f0b01acc96bc35982272215fa11910830da661cfa7dca002e45b9342c3a91d8aa4cc0a5471b637ab7262f02442490c9712ec66025b69585fc9b81160e6d6dadef14665114eb51125123d6258048f10c6ecb3706da51b6bf09ac312065120b17c853f06f3b62cef06e4b8587a9346f15551838bede5eaa12a7fe26a8ae36f18bfb421406e397ddea97f9b039fde3eb35d48d76363803ff81a3cbdbf817eb5ea9dc7bb34e2a47c3391c03e8dc536b20a0a9bbe023754f3777651019288283f0c1cae84a35abda7a111e384fe31bbcf447ddcfec33fb0c7d48a4f7f5306492edef8877532dd8343033dc2b1d0042e49b606c03ed27b4c69450c0a4664d100dcd9017591e68b99b4e42a064ead547496d8f89a9ca0dd0ffca997985164e5ddc0d7d86b1f0150f0d58e6438b9de26f609a0c92c19a990dbd267d5634a890a90272594e40773e5f904bc96a40ff6075ca131cfe9ebc4e72d0236582aa41406bc04f2e79c5d5508b587be8e1a26b1ba5b1dafe911bafc73b4c85e305b8c1c55bb1f22f2de70df14456ea1bc50156bccb7937bf14b43c90f1ea1eb44975ad01188012b76cadde792e0a5d8fb5553dec0f492e1cf750984c92fb5675a13", 0x1000}], 0xa) r1 = creat(&(0x7f0000000180)='./bus\x00', 0x0) write$binfmt_script(0xffffffffffffffff, &(0x7f0000000440)=ANY=[@ANYBLOB="2321202e2f627573206d80000000000000002025207d7d287ef6bbcf"], 0x1f) setsockopt$inet6_IPV6_XFRM_POLICY(0xffffffffffffffff, 0x29, 0x23, &(0x7f0000001cc0)={{{@in6=@rand_addr=' \x01\x00', @in, 0x4e22, 0x1000, 0x4e24, 0x6, 0xa, 0x0, 0x0, 0x1d, 0x0, 0xee00}, {0x137, 0x4, 0x0, 0x0, 0x800, 0x9, 0x100}, {0x8, 0x10000000000, 0x0, 0x8}, 0x800, 0x0, 0x0, 0x1, 0x0, 0x3}, {{@in6=@private0, 0x0, 0x3c}, 0x2, @in6=@empty, 0x3504, 0x2, 0x0, 0x20, 0x9}}, 0xe8) ftruncate(r1, 0x800) lseek(r1, 0x0, 0x2) r2 = open(&(0x7f0000000000)='./bus\x00', 0x86000, 0x0) r3 = syz_open_dev$sg(&(0x7f0000000000), 0x0, 0x0) ioctl$SG_IO(r3, 0x2285, 0x0) open(&(0x7f0000000080)='./file1\x00', 0x18001, 0x10) perf_event_open(&(0x7f00000003c0)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, @perf_config_ext={0x5}, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) syz_open_dev$sg(0x0, 0x0, 0x0) ioctl$sock_ipv6_tunnel_SIOCCHGPRL(0xffffffffffffffff, 0x89f7, 0x0) perf_event_open(&(0x7f00000003c0)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x28000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, @perf_config_ext={0x0, 0x8}, 0x0, 0x0, 0x0, 0x7}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) sendfile(r1, r2, 0x0, 0x8400fffffffa) 05:37:37 executing program 4: syz_mount_image$msdos(&(0x7f0000000040), &(0x7f00000003c0)='./file1\x00', 0xffffffff, 0x1, &(0x7f0000000080)=[{&(0x7f00000000c0)="0400050900000000666174000404090a0200027400f801", 0x17}], 0x0, &(0x7f00000004c0)=ANY=[]) fanotify_init(0x0, 0x0) syz_mount_image$affs(&(0x7f0000000140), &(0x7f0000000180)='./file1\x00', 0x8, 0x3, &(0x7f0000000300)=[{&(0x7f00000001c0)="ed3d1c831d0b0caa827749a6b3c367b681f1c3f312d534faeed80efce673b4c9c25ce05543644385e5d836e93e8d6a71324dd71ea9f1480677f64edbc0d59312c71861c473ac7668d40910a5d928dd6de80119087b84323ea2a988d92d34c5835f1d54098f734bbf10e281e2c9da179871b74a5fbbf1287c46ff48594fce964cac6fcb5ed3", 0x85, 0x1}, {&(0x7f0000000280)="bed159bd1c09c9c251689c5665fa5b1a5346cf78eec78b32fcc3e803c7dddba7a31f949b18ffbcd55683a3749c9c9a7a0d2d76dcf829409c05fcea1b649066bfc5af3c62e51119eb88e06d725d68629728dcb30a7490a24a79bdf14dc4cae564e183df78ca416f870c452b5bc6217a192ff965ebd8675c1418896cf72c7dede6", 0x80, 0x401}, {&(0x7f0000000440)="2656185ca9908403b068ea216bd59c0d79fae8ee28b8a85a6543a09f8b5867dedfc54dc06844a88eb9e245ea49cec6c38b2fd76504842ea7b7ca5e6be1b30ee40cc53f5761fae7bf99844c903bd15084e2884a117c3ac2042086cd8152fd8ddc53323f6547f5096e6514c0f2b2d5757e3e434d56d64585de5c6af827c0f9f3d5959809f9848871355398685643cff6fc4d1ff3231eabb5903d0e54f008c5b073494a4da02a2039664fb978a26875983cf6a1d9757474f8d152c1f30f0c30a02a21e7e77717e99c3fa26e4a6c5760333964", 0xd1, 0x6}], 0x300000, &(0x7f0000000380)={[{'msdos\x00'}, {}, {'msdos\x00'}, {'msdos\x00'}, {'msdos\x00'}], [{@smackfsfloor={'smackfsfloor', 0x3d, '{@#-$'}}]}) perf_event_open(&(0x7f00000003c0)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, @perf_config_ext}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) chdir(&(0x7f0000000000)='./file1\x00') mkdir(&(0x7f0000000100)='./bus\x00', 0x0) r0 = open(&(0x7f0000000000)='./bus\x00', 0x0, 0x0) ioctl$FITRIM(r0, 0xc0185879, &(0x7f00000000c0)={0x0, 0xffffffea}) [ 617.727852] audit: type=1804 audit(1636177057.181:552): pid=31620 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=invalid_pcr cause=open_writers comm="syz-executor.1" name="/root/syzkaller-testdir171842661/syzkaller.cArAGe/177/bus" dev="sda1" ino=14406 res=1 [ 617.865327] audit: type=1800 audit(1636177057.201:553): pid=31620 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=collect_data cause=failed(directio) comm="syz-executor.1" name="bus" dev="sda1" ino=14406 res=0 05:37:37 executing program 4: socket$pppoe(0x18, 0x1, 0x0) openat$audio(0xffffffffffffff9c, &(0x7f0000000180), 0x0, 0x0) getsockopt$inet_sctp6_SCTP_RESET_STREAMS(0xffffffffffffffff, 0x84, 0x77, &(0x7f0000000000)={0x0, 0x5, 0x8, [0xf9e, 0x4, 0x7f, 0xffff, 0x6, 0x8000, 0x8, 0x4]}, &(0x7f0000000040)=0x18) setsockopt$inet_sctp6_SCTP_AUTH_DEACTIVATE_KEY(0xffffffffffffffff, 0x84, 0x23, &(0x7f00000000c0)={r0}, 0x8) syz_open_dev$swradio(&(0x7f00000002c0), 0x0, 0x2) openat$sysfs(0xffffff9c, &(0x7f0000000080)='/sys/power/mem_sleep', 0x0, 0x0) syz_open_dev$sg(&(0x7f0000002040), 0x0, 0x0) timer_settime(0x0, 0x0, 0x0, 0x0) socket(0x10, 0x803, 0x0) pselect6(0x2000, &(0x7f00000001c0)={0x0, 0x0, 0x0, 0x1000000000000}, 0x0, &(0x7f0000000140), &(0x7f0000000380), 0x0) 05:37:37 executing program 0: r0 = socket(0x27, 0x80000, 0x204) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) r1 = socket$inet(0x2, 0x4000000000000001, 0x0) bind$inet(r1, &(0x7f0000000040)={0x2, 0x4e23, @multicast1}, 0x10) sendto$inet(r1, 0x0, 0x10b, 0x200007fe, &(0x7f0000000100)={0x2, 0x10004e23, @dev={0xac, 0x14, 0x14, 0xa}}, 0x10) sendto$inet(r0, &(0x7f0000000d80)="8fa7d6eec3371176d458546eed7ce72b03d29f4ae603345ad20bee554bccedff5c8d07038575a3a74bcfeff9bb3b057694732a45843f7071c5c2", 0x3a, 0x0, 0x0, 0x0) sendto$inet(r1, &(0x7f0000d7cfcb), 0xffffffffffffffef, 0x58f7, 0x0, 0x53) socket$inet_udp(0x2, 0x2, 0x0) sendmmsg(r1, &(0x7f0000000bc0)=[{{0x0, 0x0, &(0x7f0000000840)=[{&(0x7f0000000080)="8d63fd", 0x3}, {&(0x7f0000000600)="d230c4346f8296c63ee531c3251547a9ac175f275576ef6f25208939ac5efed595dacc230c84c2c11059fb8f07b4cb40b1f97374c4829b303763e9b8c1ed55ad98dd", 0x42}, {&(0x7f0000000680)="76bc506d76c4cabca4956d61", 0xc}, {&(0x7f00000006c0)="c4a7c11e9a6c639bde145ef450bf90c3645a9a1d84fa6e351a6b916262d4844847b8cbab020d4f317ee4ae9e4eff6059ed435b3b54e97dbae0dfa07c57a13089ed8e00bdc819d089b03720eef9a01c83f211aac33d6dc53778322c8c1a752db088b10a001226ef86f8dc1e3671a93ddfa6fec541bfde36b00f799758619312d705a16465e496f64efa71465ee4e8c23370c3a04f4d3a78f0c975dbb262c8141b1df2f4", 0xa3}, {&(0x7f0000000780)="adb2427eaabdc399722bbbde8ec64d43e123b19d3a73492202ff8e596bf2aadf4dada2be4c8488132b960d6cd86d7970a6f5c521e233691bc06f6cc31175652b5b33170d86ed04d4566a9d5c90983d4f1b9092192ee3e2afa54acc040b33672559cc5529f8af33fdc02f56c283c58a", 0x6f}, {&(0x7f0000000800)="be2d4bda04312082230c2e4651ce552ab10090dfde4940bccceff6f1b55ed83a0e165cbaf2b8c66a16b51187f9f56cbff8dd0308a708b624", 0x38}], 0x6, &(0x7f00000008c0)=[{0x90, 0x114, 0x40, "5b55650ce5ea4512511d56b6d1b4d689a784ec93c51456f291d007c9c1c42ffb9783ee584ff39827e9643cb6cf4719954c9812a3e1a9335dcb93590df5f47cc851693c93d2b96cf11d10863e4f29dd071b05aaaef80a394ea55a69557ae21da81ddada627458243d3f0ef599381abe49c17dcf20526f402fb4f1c3d1d5a2"}, {0xd8, 0x103, 0xfffffff9, "6721a28c7fb6b8a1c757ece02ead0e36c32e76b921494dfa3759bcb69bcbb21991335b0013a6e414cc62ca4a1898e87ee29dd2a4c6922415a64532a9e51461db97bd02e0b4d0552c07e6ce3ea04c5e5dde7c4142d952bd043e681f2e549f16992864c4f597c727d2e0d3057ffdbebf28648e4b64a167ac7bcce9697e1695c1eb332cfc8fe70540e3b6f08391df587a2dbdafb919a6381ed0604f9795d3648871757ea618c02588e8dade2aac39705207c905b80d7178a383db99d06cfb79bd0e03b447079511"}, {0x80, 0x6, 0x1, "4f3c1259c5568d90cc0fabc11efac04781799fc7231ffd4f1b9f1c21528ed54db9a64efbcb2d954e63e13405e9658f29253821b6bd652cfc2b949ddd67c9c4dd3c42d4045494d1d594bb9b4f50db6051b46dec3a53947408d8c6200afa7def64b6cba7a52316a6726e38"}, {0x108, 0x116, 0x8f, "2832827fb3ac198c0927fc79f06cfb753fc2f0195c3369fb80756a656a461730bd5b61ce005c7d6f2fa9b35647a6a53d12f3d6ec066da4578a15515d3d7e616196023e50aef4a645cd7f197e0600c1088864f0e436d46035822b2d4d8f9762e6f4ebbf56404df4ab9e9787d23899d0878f9f9eec6524a1a5304be5cc0d6016289ccbcdbf44019208988b1643dcbc84146c54206ff9ea1552d0c1c1060ec72f4efe117c60d5bf18118b904e4b3b64f71eb6803e73ee0fba797839896f75951460792e6106c3de3846312283322d163285b69539be67574a59e7d5637b92fde15cafd78042b4a5899f81bbba0ae7ce57fcb1"}], 0x2f0}}], 0x1, 0x4006800) setsockopt$inet_sctp_SCTP_PR_SUPPORTED(r1, 0x84, 0x71, &(0x7f0000000d40)={0x0, 0x4}, 0x8) sendmmsg(r1, &(0x7f0000000d00)=[{{&(0x7f0000000c00)=@l2={0x1f, 0x101, @fixed={'\xaa\xaa\xaa\xaa\xaa', 0x10}, 0x9}, 0x80, &(0x7f0000000cc0)=[{&(0x7f0000000c80)="1186773c", 0x4}], 0x1}}], 0x1, 0x40010) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f00000005c0)={&(0x7f0000000040)=@id={0x1e, 0x3, 0x1, {0x4e23, 0x3}}, 0x10, &(0x7f0000000400)=[{&(0x7f0000000100)="8f4e80fedcbd7a3d843315cf41496c545a4293d5c321820ecc86726c2f01f9a58985d6f7b8f10d24b86ba4f545f3dae4dd0669647c1a57540000f0e23754be39ee1bca5b33da5f2932a1387b6404bb475c", 0x51}, {&(0x7f0000000080)}, {&(0x7f0000000180)="0d9c869eff5f484a2a8ee3b7f6547bbc4778edf7ea41e88b324a5ca13db999558d705c79e394c134d303e5eab87d044b02530cc75c6298f30cc3faf01f58be35f05cb1473025755806268b185ed7ec71b1", 0x51}, {&(0x7f0000000200)="436b0e", 0x3}, {&(0x7f0000000240)="82df450d4bc627d02b5e5029b75b15326d59bc4c6a22062546af81c0419a48d853f98b4c82f38abd38d28de850e80264cd44b2c6a2bb1bef6f6e4fb4a6fe73e1fbb7007a04dcaef8a118f4f0d3245c8c4e998f7326b3b795afdefb1a2031b80dfc0fc3acc8a7144b7e28ead82268c62bd7fa962c929b36a4961bde067e0d00768be255d541c6554a18e738e1333712cbac0da3871cfb498ffd5ac7c15d1447cb08df74418b0c85c00ccacef5396cfdad470a5aa92949bac913e2941837497cb18e29169d69", 0xc5}, {&(0x7f0000000340)="bd29762ef224796255e14e1b9d2cc79c5e15bb3357a0f456c2acc5c24154c2809bd864561e09481ee33d8a8d96c92c0df8e5a1d51c63471aa7df771e9d24d25ac2ac4043c036b375920f1eb6f83eb9954111d11ac30200550888c930257472000000", 0x62}, {&(0x7f00000003c0)="5a5ac24db14d371fced9e5088ff19d0ee463a8099d74e89cc65fa27a9e96c12f4d708ebcfbc27889b0ec1447e3358806f12e89b69426d47328f71c2966827e", 0x3f}], 0x7, &(0x7f00000004c0)="232a1d5084fdf55c0d607f1f70f5070381089c186c1184ef89e6e15cfbf86cb5a0808a9ab19a75c0241f5fbdd920bd9fc53c4d2fceddd9676c78e317e3afa3954c06bb31bcc891b9d5dc0b17628dc763401dcd7c2c3816403c7f119611ddd3028885e107aa8e1ccb06b26e6a09d70280cbba5e6972f12cc78c41bd4e9c4faa4e21fb283121d5f7637ad02685571fc156d9358fff344b271334c88c5642102fb9d35c9c966427ef0b950f13434ddf8aa061746d0ee79d8e1271214e5776e5d4ffadba7e5a538b1d3cedd1d561094c1e54b36d090c6c102a", 0xd7, 0x8012}, 0x10000000) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:37 executing program 4: r0 = getpid() sched_setscheduler(r0, 0x5, &(0x7f0000000380)) r1 = openat$kvm(0xffffffffffffff9c, &(0x7f0000000080), 0x0, 0x0) r2 = ioctl$KVM_CREATE_VM(r1, 0xae01, 0x0) perf_event_open(&(0x7f0000000300)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x505, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0x0, 0xffffffffffffffff, 0x0) ioctl$KVM_CREATE_IRQCHIP(r2, 0xae60) r3 = ioctl$KVM_CREATE_VCPU(r2, 0xae41, 0x0) syz_kvm_setup_cpu$x86(r2, 0xffffffffffffffff, &(0x7f0000fe8000/0x18000)=nil, &(0x7f00000000c0)=[@text16={0x10, 0x0}], 0x1, 0x0, 0x0, 0x0) ioctl$KVM_SET_LAPIC(r3, 0x4400ae8f, &(0x7f0000000400)={"6cdd4237dd245c8404721efdc9c8dc1964125fa96fa42b761c6ec25b2bec0ba4c81036c93a40c8a4d4412a763b00040000000000003c5ca206c047ecee377abaece6b88378e38e06c5fc191f361d264ffa8b46485f02baee1ab6b8154252066178868d1ef4b53606000000000000007c21a984c2b9ca4bbb7a87165c0c1dbc75d7ea4df1001000000000694525952f44500a1f0db509c32cc7ace842c28f37f06e4ea9f1e5f0c6c379f9cc58bf69fcde317fad4825aa1b6a832d4e48cc41bb5a6baa41d614f6c8941bee805954a62d196a4e8d4bf6b21224b57f530d0000c1ff53bf79a1f5c5dc34b22645cbc11c4562d22db88d0edc5daee171cc04d96d9ec2db07478f347edbd6404923ad4a5672b1b285c7988c4ec0922c655ff600000000c00dc290d936d93236051fadfb4b95d02c0bda7ce38dabb7cd103fe4d0c9c963cd717a77f8df8d46099b1f580968af6afbbc19db161c6df3e7c9c71bc08a282fc2c142856b5e4caff4c0a4f72445ef10dcd2c569319d6e9bb2058d023f669a64fc7d9684b45b00000000364673dcfa9235ea5a2ff23c4bb5c5acb290e8976dcac779ff000000000000003d4e185afe28a774b99d3890bd37428617de4cdd6f53c419ce31054182fd098af7b7f1b1152c691611f897558d4b755cb783978d9859b0537b05b623dcb5c4ca9317471a40fa4998cca80e961efffb4e1aa25d8a17deef0c8694c4395fc99be3c3fe7aeb8af4929ce7d346ca62b25d48fda5d10146702f78b233b5208752726ed9f0c340d494b92d19cc930bb8a5f8b4da8f4603ac0c3b698384e17a570dc8524823ed15af4ecfabb4b2541d3c114b7bba1c21a845c9cf0d1cc24aba47e30f558b2246ad95ccf7d2f80cc0ab26f08336ea1a33b79cf35b898837016eb211a1734c7af076e15451e33519fc978f66df7df4557c91024a8dc130a28ef5f63ad07b39c8d23b85cf434e065e8a29a80047fe17dee6f6347b4951f97b5703dc78b1ca9d74ea6a9ae12ab367c0de2659cc38d2f33ddd86e0597d33361eada119b5132145fa4525c488c7fffd6ceda6e9a02ebd97ced6b0161f2cc84615ceb8b18883299c636e9e46724a9a0600a8bb02f3e489631d522019a35fe12a33caf9dd8768ddbc02a484c345c3eff254297b1dbb04989c3f9f3c7b3c985c39b1d313018068d3809bac8c657e39f4f692613e28387e955722908dd88b56163be8312ff47c5b6f280472935af74e97a5a8110a4d74496f4c8ec82ddb010100000000000001a047526865c888c9ff36056cc4ad258021e1581d43badaaec6cc5a2ef989de9801fed6d4be2bfcfe07a69c46bffbe9dd03970800000000000000d372bdd6d89dc1ecf63c23d506114d0fba2bd1c69e8f7e3fccdcda85ce975ec1381b1cec6ddaa76e186719d819164300"}) r4 = openat$sequencer(0xffffffffffffff9c, &(0x7f00000000c0), 0x802, 0x0) r5 = socket$inet6_sctp(0xa, 0x1, 0x84) r6 = fcntl$dupfd(r4, 0x0, r4) ppoll(&(0x7f0000000080)=[{r4}, {r4}, {r4}, {r5}, {r6}, {r4, 0x6085}], 0x6, 0x0, 0x0, 0x0) ioctl$KVM_SET_IRQCHIP(r6, 0x8208ae63, &(0x7f0000000800)={0x0, 0x0, @ioapic={0x2, 0x1, 0x7, 0x80000000, 0x0, [{0x20, 0x8, 0x1, '\x00', 0x1}, {0x4, 0x4, 0x3f, '\x00', 0x5}, {0x8, 0x80, 0x5, '\x00', 0x2}, {0x1, 0x4, 0x40, '\x00', 0x7f}, {0x81, 0x81, 0x1, '\x00', 0x7}, {0x3, 0x5, 0x6, '\x00', 0x3}, {0x7, 0x6, 0xba}, {0x20, 0x4, 0x6, '\x00', 0x5}, {0x1d, 0x80, 0x9, '\x00', 0xff}, {0x1, 0x19, 0x41}, {0x7, 0xff, 0x9, '\x00', 0x6}, {0x81, 0x5, 0x6, '\x00', 0x1f}, {0x4, 0x2, 0x80}, {0x2d, 0x9, 0x52, '\x00', 0xff}, {0x1, 0x1, 0xdf, '\x00', 0x1}, {0x8, 0x6, 0xd, '\x00', 0x7f}, {0x81, 0x5, 0x7, '\x00', 0x1}, {0xc8, 0x5, 0x6, '\x00', 0x1}, {0xf7, 0xc8, 0x7f, '\x00', 0x2}, {0x20, 0x1, 0x0, '\x00', 0xff}, {0x1, 0x80, 0x81, '\x00', 0x2}, {0x3, 0x3, 0xf7, '\x00', 0xdc}, {0x6c, 0x8, 0x1}, {0x0, 0x80, 0x8, '\x00', 0x5}]}}) ioctl$KVM_SET_VAPIC_ADDR(r3, 0x4008ae93, &(0x7f0000000140)=0x4ffe) syz_kvm_setup_cpu$x86(0xffffffffffffffff, r3, &(0x7f0000fe8000/0x18000)=nil, &(0x7f0000000180)=[@text64={0x40, &(0x7f0000000200)="c463f9227f123166b87c000f00d06766470f3adfbef672000000c744240077000000c744240200500000ff2c24f20f1ae8420f8675000000c4817fe6910c350000b9160100000f320f011bc403e96de177", 0x51}], 0x1, 0x0, 0x0, 0x0) ioctl$KVM_RUN(0xffffffffffffffff, 0xae80, 0x0) ioctl$KVM_RUN(r3, 0xae80, 0x0) 05:37:38 executing program 0: r0 = socket(0x1e, 0x4, 0x0) r1 = syz_genetlink_get_family_id$nl80211(&(0x7f0000000080), r0) sendmsg$NL80211_CMD_EXTERNAL_AUTH(r0, &(0x7f00000001c0)={&(0x7f0000000040)={0x10, 0x0, 0x0, 0x1}, 0xc, &(0x7f0000000180)={&(0x7f0000000100)={0x74, r1, 0x100, 0x70bd28, 0x25dfdbfe, {{}, {@void, @val={0xc, 0x99, {0x7, 0x6c}}}}, [@NL80211_ATTR_STATUS_CODE={0x6, 0x48, 0x27}, @NL80211_ATTR_PMKID={0x14, 0x55, "a233fec712b4a799a77c4d02533c0105"}, @NL80211_ATTR_BSSID={0xa, 0xf5, @from_mac=@broadcast}, @NL80211_ATTR_BSSID={0xa, 0xf5, @from_mac=@broadcast}, @NL80211_ATTR_STATUS_CODE={0x6, 0x48, 0x3}, @NL80211_ATTR_SSID={0x17, 0x34, @random="65d30c4abd1394cc4a29e8067b78610ec6bbad"}]}, 0x74}, 0x1, 0x0, 0x0, 0x10}, 0x90) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) [ 618.563622] audit: type=1804 audit(1636177058.011:554): pid=31646 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=invalid_pcr cause=ToMToU comm="syz-executor.1" name="/root/syzkaller-testdir171842661/syzkaller.cArAGe/177/bus" dev="sda1" ino=14406 res=1 05:37:38 executing program 1: perf_event_open(&(0x7f0000000180)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x41ba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_config_ext}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) perf_event_open$cgroup(&(0x7f0000000000)={0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x4}, 0x0, 0x0, 0x0, 0x0, 0x4}, 0xffffffffffffffff, 0x0, 0xffffffffffffffff, 0x0) sendmsg(0xffffffffffffffff, &(0x7f0000000300)={0x0, 0x0, &(0x7f0000000100)=[{&(0x7f0000000040)="2f0000001c0005c5ffffff000d000000020000000b000000ec0079c9130001", 0xfed3}], 0x1}, 0x0) sendmsg(0xffffffffffffffff, &(0x7f0000000180)={0x0, 0xff, &(0x7f0000000080)=[{&(0x7f0000000040)="2f0000001c0005c5ffffff080d0000000200001f01000000190102", 0x1cb}], 0x1}, 0x0) socketpair(0x0, 0x800, 0xfffffffc, &(0x7f00000000c0)={0xffffffffffffffff}) sendfile(0xffffffffffffffff, r0, &(0x7f0000000200)=0xfff, 0x5) r1 = socket(0x10, 0x80002, 0x0) sendmmsg$alg(r1, &(0x7f0000000140)=[{0x200003f8, 0x0, &(0x7f0000000100), 0x3, &(0x7f0000000100)}], 0x492492492492805, 0x1000000000000000) dup3(0xffffffffffffffff, 0xffffffffffffffff, 0x0) ioctl$AUTOFS_DEV_IOCTL_READY(0xffffffffffffffff, 0xc0189376, &(0x7f0000000240)=ANY=[@ANYBLOB="01000000010000001800ce37f44bad5205ac5ad1a7f0d3cbf0d37e96dd0bfd8d07e7ef27ec425fb1637da12d735e41cb14e2649beca0b62ab5e1b433603f9ce69c8e9605ddd01bfd7719432283c8424508ab0e4405bee97da210a3", @ANYRES32, @ANYBLOB='\x00\x00\x00\x00\x00\x00\x00\x00./file0\x00']) 05:37:38 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) r1 = socket(0x1e, 0x4, 0x0) r2 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r2, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r2, 0x0, 0x0) dup2(r1, r2) openat$dlm_monitor(0xffffffffffffff9c, &(0x7f0000000080), 0xc4c00, 0x0) r3 = socket$inet6_sctp(0xa, 0x1, 0x84) r4 = fcntl$dupfd(0xffffffffffffffff, 0x0, 0xffffffffffffffff) ppoll(&(0x7f0000000080)=[{}, {}, {}, {r3}, {r4}, {0xffffffffffffffff, 0x6085}], 0x6, 0x0, 0x0, 0x0) ioctl$SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE(r4, 0xc08c5336, &(0x7f0000000100)={0x7fff, 0x4, 0x0, 'queue1\x00', 0x1}) r5 = socket(0x1e, 0x4, 0x0) r6 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r6, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r6, 0x0, 0x0) socket$nl_route(0x10, 0x3, 0x0) dup2(r5, r6) sendmsg$tipc(r6, &(0x7f0000000480)={&(0x7f0000000000)=@name={0x1e, 0x2, 0x0, {{0x40}, 0x2001000}}, 0x10, 0x0, 0x0, 0x0, 0x0, 0x4000000}, 0x40404) 05:37:39 executing program 1: prctl$PR_SET_PTRACER(0x59616d61, 0xffffffffffffffff) clone(0x80100900, 0x0, 0xfffffffffffffffe, 0x0, 0xffffffffffffffff) r0 = gettid() vmsplice(0xffffffffffffffff, &(0x7f0000000100)=[{&(0x7f0000000000)="cd80", 0x2}], 0x1, 0x0) ptrace$setopts(0x4206, r0, 0x0, 0x0) bpf$BPF_BTF_LOAD(0x12, &(0x7f00000000c0)={&(0x7f0000000600)={{0xeb9f, 0x1, 0x0, 0x18, 0x0, 0x139, 0x139, 0x3, [@int, @var, @struct={0x0, 0x1, 0x0, 0x4, 0x0, 0x0, [{}]}, @int, @datasec={0x0, 0xa, 0x0, 0xf, 0x1, [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}], "ff"}, @union={0x0, 0x8, 0x0, 0x5, 0x0, 0x0, [{}, {}, {}, {}, {}, {}, {}, {}]}]}, {0x0, [0x0]}}, 0x0, 0x157}, 0x20) tkill(r0, 0x40) wait4(0x0, 0x0, 0x0, 0x0) ptrace$setregs(0xd, r0, 0x0, &(0x7f0000000080)) r1 = gettid() rt_sigqueueinfo(r1, 0xc, &(0x7f00000002c0)) 05:37:39 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f0000000040)=@req={0x1000, 0x0, 0x8006, 0x6}, 0x10) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:39 executing program 1: clone(0x20002004ffc, 0x0, 0xfffffffffffffffe, 0x0, 0xffffffffffffffff) r0 = syz_open_procfs(0x0, &(0x7f0000000040)='mountinfo\x00') write$binfmt_script(r0, &(0x7f0000000100)={'#! ', './file0', [{0x20, '/-.$'}, {0x20, 'mountinfo\x00'}, {0x20, 'fd/3\x00'}, {0x20, '- -T^[\"&[-\xb6)&-&.$'}], 0xa, "0f6e2aec73d0924bb05f9fc7b635de44723a7e9ece6b74627652a2"}, 0x4e) exit_group(0x0) wait4(0x0, 0x0, 0x40000000, 0x0) clone(0x1000, &(0x7f0000000000), &(0x7f0000000080), &(0x7f0000000180), &(0x7f00000001c0)="4a8dad4b9673be675930e0a50f660f7bfc3af61ebc4c136bf706b74069c59d4ebc1cdf554542e817f4a9464b24fe158b1b8b828a035142f473a9") r1 = bpf$LINK_GET_FD_BY_ID(0x1e, &(0x7f0000002c80), 0x4) r2 = ioctl$KVM_CREATE_VM(r0, 0xae01, 0x0) r3 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r4 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r4, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r3, 0x2405, r4) r5 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r6 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r6, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r5, 0x2405, r6) r7 = accept$packet(r0, &(0x7f0000002cc0)={0x11, 0x0, 0x0, 0x1, 0x0, 0x6, @dev}, &(0x7f0000002d00)=0x14) read$FUSE(r0, &(0x7f0000002d40)={0x2020, 0x0, 0x0, 0x0, 0x0}, 0x2020) sendmsg$netlink(0xffffffffffffffff, &(0x7f0000004e80)={0x0, 0x0, &(0x7f0000002a80)=[{0x0}, {&(0x7f0000004ec0)={0x1648, 0x3d, 0x1, 0x70bd26, 0x25dfdbfc, "", [@typed={0x8, 0x3a, 0x0, 0x0, @uid}, @nested={0xac, 0x9, 0x0, 0x1, [@generic="aa2f32e176f7a5f31f8f4e1dd172bac35cc8d3607e0442d46c5faceb4092c2d61b1c564186c45c9a3d522a6c3e3a34727a6b", @typed={0x7, 0x54, 0x0, 0x0, @str='#! '}, @generic="d9948063757f4200156cd9b0997021b54e908e20210cefb102544f18d930c1b326da3248357c62018a8111965853e3ab3cc23d7041df9a392d6ecf9bab1305fcab5afda6bc9c0140b41fdb5fb789c2d5c2fa37b4ffb45c5325f97109d99e9fcb74db04829d56378755530abac1a4"]}, @typed={0x14, 0x5c, 0x0, 0x0, @ipv6=@empty}, @nested={0x28a, 0x80, 0x0, 0x1, [@generic="9016f7f0dfeba59b27078e9eb153f3c7721bebf37492f8af22452d46b916758657877be1cbd8a613750fdca3f3d3e84455a68e2c96f8", @typed={0xe, 0x58, 0x0, 0x0, @str='mountinfo\x00'}, @generic="65c1d562b1331f0a4fc96bbf5013d10219f8cfa8a084a0a66e67b8e8d11ee1627d3f394c136c92c48a9b8e69ccc8a8f6e15f11563de5b554533ea74c213b62940f61a37c27569f0fc45d03e5852ff5e3433c307a199e7625e1648a8f617bdc10118ca8b7e09f58ec86f8cea6863dae2f752196f85e69f36c51965ee8a795737227e00729ae8b4a929ac610b9a27bd1614630fcee5272e2468474d1a5560bdea1a2d1597216dc9b95f3d1b54d7f23affe2f369ae6f3d360d137056f00db7692e8e69c3c57168652e4b4aa17bf2f5f2fd41b38bf9798a4940e7e2243d383d7", @generic="3a825dd433530ff6d72b7d3ea1409de012b077be29c41b5ea5608d19e34e75b3ba8dbf0c4709b48d0c21fe644377a33b576d0f7817853053b5d3aa0082cde43ec2987f5cd9290c007ec9569127fdb1928370cefbe195ed9d8d1818fe08b7f7b50241d9ae8ce0e8fe837088c319e055b49eafc14e9911626c8c3163648972ca50a3e91bbaab604d40fdbacc1626d7774d63b715f61bd3ca66f161a19a5a9e0a8871bb191359f1e40fe897ccc23b16d7e7a6", @typed={0x8, 0x14, 0x0, 0x0, @ipv4=@initdev={0xac, 0x1e, 0x0, 0x0}}, @generic="56c3d57716e5bf696ba0d015536807586b4ea14d35631b7b9b50a3f304e45da65fc8e24644643f06efb3e9c90c4fcf25945a43edffcf24699548c894398a87ededc4a7c825361e6263b1b1da0052f34145ad089c1fd8c9140cb132597ba2e3fe82dc1d05c2fe7310ef99e0fcf8591b04ce5b3d522d448e13fa432c1d62ba16fdcbb4551ba06c3a577a0c3650d8bc8a412c17da794bd8519a450da3411e594ba3d50cbe6296fc42134c"]}, @typed={0x14, 0x41, 0x0, 0x0, @ipv6=@empty}, @nested={0x11e9, 0x20, 0x0, 0x1, [@typed={0x14, 0x58, 0x0, 0x0, @ipv6=@loopback}, @typed={0x8, 0x80, 0x0, 0x0, @uid=0xee00}, @typed={0x8, 0x27, 0x0, 0x0, @ipv4=@loopback}, @generic="bbeb1c3a83f9d43f1ed517b4524f4522157c51fc8934078d52b1ea1e2318ee442f1d3f625efbae2a6b79f8c5d0bf9d7515c5936107c5c515f09e93570644", @typed={0x8, 0x1c, 0x0, 0x0, @fd=r0}, @generic="01aac61db56b7c8c3a3b8eae363cb80cf846178a0061f46da4602bd84c8177358b8bc3204b89a05b51ceb4f9e68ceaf78854b787b0cb8289e05d66f55b2e6a43517f6a9ac8f8ffc8ae4523b634b80824d025388b234a5dde2b295830f16df5fd164d2fb3cd384b68cda25ea94597ffa8414eb37fd615fa5584742abced3b9e3870d541d7072f3d07cef492db33b2011fa79a1aac", @generic="55c8fc77acf80f68548bdd13d0bee7849fd79a12b8c2181a26007e063b7988e64dbd31df86e78f26b83deb21b62176cd351155da87b42dc5d80afc188d54a0ba5972075b02de52781d194a55fef9f7a04238e99b3b9954964fb9c60016bedcf81925e676bed545e678fbe0b6757f5176350b122392804d8a930ab56553dcc1b38640c848afac9a7f2fb0339d849a78797a9ef715ff824c04441aca4d5b9fa862c968514d7e5078b3e8a91bd82855acac18767deb7e0d5937213b0781ab747785e0b1adc8933ef8d2e97a85c3e84c71e46e4097b6899355f667c866f018cf88e4acb50da019755bbed7208fb26b95cd30ce20ea668c5e87963c42f947fcf01a892febdddc29a8f5ee17f68f413db3eb686d50f5075f72ff4172460e30327db08e4699f750493d8e49574dd79d3a967620d47fac7794e871d086d87dfaf28a34d870318ea0e6f360633911af80b60a5fd61c0b0e45c7f0607d0f00ed1aea11b689b5e020065d4ae1b473859ace722071043627f68087c0de83a263171b396f5490940b23c775e2c570a00f5bb1ef87e44f05372be76bc89adeaf4cef96fc8048a3e4f396bde6bf1fc2190aad2b552065be5268fba954c287d6b38c6e226b75c69c6096a8701f2552ee38cb01243617f003c01b3f5bfecff704ca2f920fc44940de88cf6c6f020b0a8b82f38b873ca16fe4367a6a0787a66053472bd71662361856112b87e0c1bac8cbe8bcad9410f5efe337740e9311e2b11abf3d2e1a648811c99396a825f8cc68fd58bf76c1fd6bc9185be8f8a095e13c368ba60157744f91cca449aa6965d086aa415c19540221c83ba764c46ad399f47f0bd32b5c2c0313b59f1982bb3dd759b509ed14bdd8d196566150f3d9c9766408b4f18bd647fa07bfc267067d6817e797c18e85cd3cb03c89a1eae6ab7ba3a89d7a9d28e9058f423ec10d932dc5be40b8f8f9a2ee90f3208bdbce8fd1563a566f7be00ac4ea31197ee338deb97f99a900d19343e4a1bcebfca773b93bf06db0e5f8ed305501f8ca77438963ef08994f27b5fdcd16aa3dc3bb7d80e56bf14f0f4fa54d40e626e504384c87c8e857ff5948fd6203006b0fe230cd8e1605ed1af1ea06ef3e5808877ad094e53da2d20ab49a9544001767d56c80092a4d31b94ec3cfc6bfb08e90865075cd69891116f19f13571a596ced42805fed8fb036c7ed66c3ed3ba415451caaf8278441ed13c9880b759a15690f176b80059521e22e3d18cbfc171e463b8860dcef58a03c1657bfbc558c8fc66dbe1bdb3f6edf9b65dae86d6f3e8977587188acbb308acc9edc06e1af2a1ddef465655f49cf525b1d263b50b8e5148d00477cd66bfcd5ed1c38eec9f416ae7ce45b3550a5d9b9657a5e1d4b64e8af7d53f64d8007cb3a2e1db6dd50f5539f1fdce547d0af6e70ceb7a278ff74a494c996f2e0a7af133dcb2b11112959537995078ba356a147311cabdfd50dd56c856f7532ab43c676fe362b40092ab607147570f98a3aebd4403b72c90f7ec92754c561a8b4f54f769a4f3dc4d946c25146ed30006a86f0387110b77644e63f2f30bca20598918b746f71f190b84e809acfb40b3500e26d361853cfc4e34748a4b579f121e0fe17aebb1aae963b718b72d91bb205a1bbc5e7f9361d528e4b6357e40415ff8ac025e9d7446beb8529ca88938b9921ac30117f9a5d65925b11b5da8749e1071b0578cc8a903277db443dcda3ed5e969ddd265ed59e638140a3ba80ecf577eb1bf7b8ac56227d61f5ded9e9b5eb2d907fef6aed76b6d2c55458ed1d3da5af1f2308dd429c358df85b70f8179324bdb77ebc763ee5930681808d0a631763c7200a868f7f00b1b654dfa6a11850272b612f52b67fb1efa4db260117e75d156d3a70cdc34fc348d5c2f1c47c973dff022463317535e28c9f4d137f9303386dd23438b60db820c80f11bf4248432f9ccb85366620a27a5d8ce37abe3ebef3d83c850594c7aad8ea5d845e798c49bb1d4f5ea1ea2964df7468726601303c0069a2027a6f244ef90f27bc66e665bcc3d246965f7850d51f9e32d2af72646e9ed8a84319d4b4536dad27ed9dd1acca4496614c88209a9aaeb9ce4b42d75c5b13de76be738c35c79bebf6233d96304a465ab493c75a659747bcfd65ce641d62610e5cb63d3b1ff5ba1492d8a603830bfb310a157e6dd8309eb95cc84913550da4936b3a8de9b84b2c01ccf54b74a3b8e0fcbffc71af6049e57a0fd39f438e5095a41d79e1361ef1aecfa5822c1b55b7073afbb50b1f3c331e7beb4dc165691161d4f1e3cc1244b3000d9db1766cd20c993ff8758bd9fd3fd5cba8e51f94aeceb2a4ce76c8fcdc1fd9a59d950d31c6523363d1c7c0f06807e64bb46c0328a0e10e1dc50454f160c3b41d3942b82953772931690c886ba7965eb1866ca3a515967866d8df28eaedc047102fea212f0d3423aa0ea826860acca63d710b35e675624435b7424ba0ce55b45c4f09bdce493577c6e3177a38742ffdb83e856ea1ed154e5c593f53ec433ddcb3a7828e99edb0edfa2f09e64ebaba531fa6eeea5cde0a55dd39251af73963c1d131370c86e1f9fa022a0817b4488ee98f820c9806f590ae58e7daf3295cb76b62db04b1792d443cc3349c684c2494a88094fada1939925cb6591ebee862d869ab7446beba7cfc351e8b709f42512947078f1d3e80d0e970606002fb1b59fef08b1f888bc0adfff5de05fdc97f7b8e0e7d81c49725182367a19e429584402b50bb0da53080bfdee011412936ca26434f536a4dc14b2c8be4fb65a2c39624c75e6ec245aeece8443243eb0e45488c671dd4f3a9a95fee010c5f2f133ced31e3b603c1d084c12f317f9493592d7405aeca1dceb50bee0a4a9e19c95e869f876d3e2575a46bd45db1e795f3b9b7a3c262dc0e8557f5f3078c89963e49de9aa227677a0d44bf972622a1b62ac146b491e71c8f1c730f69e2f4d770c19d954d7be37ae0b2c0a2c9503ceb62ebaf3559c0a37368c7aa69cedc8f53997971d78742dfa93a593bfe5e2535c466cbd88c96190092c673bd5a13c72090a0581959588d7d2b13fcda92e139b1e52f5cd1b25c643f78ff5fbfcc1a1143a31257e734e7702a5db4ffaddfecdc1f5d6256a962d1b75ea73c09ce0a999120b3d2f40e3b7b7d2650ed04e1ba9358c6cbdd70f07cc0d6fa930753e1da5cba9be901bab40a2167660dbb6901da70b22164de26f004a4f5172f6a70c4f825a33e4e4598e74a8e38b9cb035f87de5f65337b082651ca2d35e51ec491184a806ad617bf741ba3a46309730bf9a68702272b36973e64d0e8674864d985422a34f96b5859f97561150a45446c99da41599e5abbbb873bd6097c799cb86521628fde9f9844a13f9c78969d571beb5644567fca8a83a25fc0924195ff4f294497dc687a12fd8ce6cfc5fadad2c3fe80443b0dc123baa870cda2e7770dae1f95e18871e709cd0a50fb0f14cfa154041139f95f4d06d8afbf34597b18aaf1aedac7187e38d6b7811492c4a921091b83c7898796c63f3f4294508da5c42de00b42628a7dc8272be06c0cd6bec686b38fdfa2875baf79eefe833386af75e38e7f0026f3931ac30220bb7444d046d33c10a044b703834f906ecfb170d1880d365121d30beb4a2ee1abe9e8eef59454e10a3f0533c49d1a03ceb963300b81dd67b5a2067503338b66ab7a5101cc1e4c26aa0a045a6679ffebb226ea66c4d4631321a5c84ca43d73841a0edb5d77bb9e115dd0f5bf40c6348cfd59e25edb72acdc73e0494ce30960c8cc80fa62baa90f0c94e8dbbeff0a303cbed39a60ad166aef370de92630e532e5583ebe48866157c06fc25e31c45c4af57d3faabbb2873869ff6de01589b2e67f49874776382453042dac38ec4d429fa18f0eababc53ce87dd9dddb50a8266697589cedde0bd0d82abb9e249b3c63f883fd93c8701537c6e5725bf9b3cbffc1d1d6336aa4b00d2ae33b5fec0212f17d19ac828d2ca27882dc0b1b39d5d8b656449eaa4a2f97217512170bb52bd1b6279ed227aabee8889ba7c3e49cbfcead9ed4b7d8dbcb96193d47689012b9976811b257af1f4719fb89bceaa22fa799b4be98d3fcb4222090d8c29a00042d7f20459ad6e43c1043967f2f2aa85060965886a8a7a1fe46684f7ea583fae371771aa09e2d9c6962ab1f83954fbf1dd529586329b220e9a4a6f28304c978678781eba0b9202f473bc1221abce1d1523dd05da1ec3419b8415909a323c043c45fe0133689df0a19890c37747c48c589a166603f2b875ed4a58697ffe6fd1d19e812cce10f08253ed456187ff8bf9c269683453103d4f8a2dc40b78ccaf6ac555900d1d770900b8ce6bd5bfed8be03786b3be9a9ff2d3e47374eac9305a494a2cf9b17f598d9ef37eff4c5018155799532f4f8e2070bdefe69846e3b2a86656cf86e489c9d57eb5f8b417aa7bc488f83a6d35a6b326ecbf4f08dec38995c2f5a322be9442c67856c85aa2dc629e46e0bef77ad02f083bed331a497788a6f2fdb15feb05b54620bd109c846b633478a6fe7a402804c197f9e3680f7452da05419834e294315509c87ae790905a4a991c50bc4f570bbc8fb8cbff75f34778cd791920305e99f45177894b405e616040990a76840db0209da6cd3321c440965238489ab979dfeff22bf82bcf08736f4e7444acd44b1394dc76ec436add8eeba1dcdeaf3cd3bae437eb4556478218c37d7c2de0ce75020f8d881c50b115f2c85f6efc6aeda8a380dd9ea0d7336296de37fe54bf602af4e35c6ce43c0ccefbd1f7915d196ed7cdf9ad44e13a04a54ae86801837f7301973d0c2900f986b5de31c35929698507418b5fbf796680fc943b4960433e9812de3d6b1b404a72040de349999dda69f4cd4182d7dbbba3f3f3b6e0cefaac39c85132d3dd66823058e1fc35943074fb6b4d7fb39c6b7310ab430d0cffbb3380cc1171104bea83f51cca0a5aebf442c0a8f469f040cd055778f5f20dd3728eb89ad9041435ee1e432aa6a10e77a07c109df099f733c17f3b6b293c883f8aee10fc14f1fe9c766743ff450af5b6fc5366efed26895032fe7506abac00c5b9e4795b96fc7fbc00e5e079ce1d0fb36a2f14270302a11618efc7f8ea7f20f985626ee061297e27e70a5721c278afd68f817d712b873739b245b3fc4ae5945109817c7f051d83db08fcb2d144b5bdbda1908cea1aa7e5da84d6b97431be694a0cd7f414fa256fc324643fc156dd85766a04adf1907d20ea0a9c9a8a19558cacc8ed688a657b31796012af66ac6a0da045ef25f3addfe8cc817e2cac2d6ae46001661bbe922a3ef2953a46aa3105f2b02269c7d38289d7e8969d6057bb00eb09e36f22efb12057236b067cd01ff8ffbf236d847de0f9c134d26279a65f2f480ce1f0a4255f8883ea9bd0f38e452e8e20646d7252411eca79740707ae49ee2746734baa629c7cef554fa8f1bc8f791519f5ea33034ff8740907413451ea0ea60a29fe2cd45790a97e594aa4189f3cb769844edc4ec053557643a612ca9100ecf47353cc811607fe138d1d2342e7fcc272f0366527533d08d921507ecba4c221db9e60059ef99820022b35fcac3c912d65b4fa70a7a5d7b400aa57c6c69f8edbea25da3f92d4ecda0526075b866c00f6d9c627b5368412b022b374c7fa5f046b912fc8e0cd30b9f8e9c608340aede0c40dd9867d5d39e1e9a8692636ead58a7645eeca8ca600fd95282308916e4b04aa88e44d53f021440822ef1f0a7086f0b7ea6b6d25e5a0b4c737b70", @typed={0x9, 0x20, 0x0, 0x0, @str='fd/3\x00'}, @generic="c7c368b422e3953f53983d3615ab4fd6923d1a894ca1b9933e4aedc9cbdac5aa711f7ae8d4c9798ae851c17642e52174a6beaf2e87656764a8c2d6e5ed46afd84a5cd55176c3247a53af140ceffcbdd87a567d586c7e957da33b9a79f5821120223deeee8b27c577981fc23d2f909bf01da4cd8a4759bfaa2970891aabe48e1f33ed72b6d8ab2c813dae1d113ff9b0af189894f4f555b6ba34b5b2a0c269c4ada03a66bf051f06b42a6ba4407edc91f66561ca00cb21d21bca30b7516848dc07f8c65c9473ad0d5cd9b7772a9b50e0c98e78dc86b00e05a9cbc1d1"]}, @generic="2aab3c7a163765cc7c97b62bd78459e75a6da94a0fdc99150d3b5997158b5e3bed8c686f4c4ee9d9bfe1bd415ba29a456bd4c8e0250a31bc8bc1dab59f1425dc0eed2939ead8abc2395df23c028b2d77721e09e4c7ff52d2c6605e89900c480f0bb0a4af568571a6feba5e239604be112faebd337d0afc9f78c000b3863d2e525ef45fcdd3b24f23cd02686f4a7ca13bea3480402a8569a8cd1e4a7ebf04ae363b44b8eaeaf8a2786eea94b290783860bce13d2c70f01a4629b45269a33412dcc1a9a3c33d8af38245163182fb3a97e2ceb933e635226c06a0", @typed={0x8, 0x37, 0x0, 0x0, @uid=r8}]}, 0x1648}], 0x2, &(0x7f0000004d80)=[@cred={{0x1c, 0x1, 0x2, {0x0, 0xffffffffffffffff}}}, @cred={{0x1c, 0x1, 0x2, {0x0, 0xee01}}}, @rights={{0x30, 0x1, 0x1, [r0, 0xffffffffffffffff, r0, r0, r0, 0xffffffffffffffff, 0xffffffffffffffff, r1]}}, @rights={{0x30, 0x1, 0x1, [r2, 0xffffffffffffffff, r0, r3, r6, r0, r0, r7]}}, @rights={{0x14, 0x1, 0x1, [r0]}}, @cred={{0x1c, 0x1, 0x2, {0x0, 0xee00, r9}}}, @rights={{0x14, 0x1, 0x1, [r0]}}], 0xf0, 0x20044010}, 0xc8d4) syz_open_procfs(0x0, &(0x7f00000000c0)='fd/3\x00') 05:37:39 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x7fffffff, 0x0, 0xbaee, 0xfffffffc, 0x401, 0x0, 0x490ad43c}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmmsg(r0, &(0x7f0000001a00)=[{{&(0x7f0000000140)=@l2tp={0x2, 0x0, @broadcast, 0x3}, 0x80, &(0x7f0000000680)=[{&(0x7f00000001c0)="4cc87cfb8d508cfb442d865b6a2a47d6931b8e92c5b6777d473ac9134f08b986f123b8af8b6d37fc246eb9bf579a1a3289a7006d29663cf0bf4a3956bdbec083d0260390b8d8e4f7e87dec8a7ff5bbbbee3fc4a359888fd9942d6febcdb745a57785097d70b470891e005c56f478c354edd96954b55c38434d69133cc470a2d0f8e4b275c49b4659c8635e65d2570eb6de9d915ed482ea8da0f49d90d2f079b8d907c253084c9d0c56e86f068eb73fc4991c52f3eaa596034ff878a6ce5e8a6f3b2125ae12a2e7ff313b9ddc49d049ef50a6aa457704d0442ad0efbf6f8c008f95c8ea9f813c51331cd647f7c9472f8c0d0416578017ea416da2256b", 0xfc}, {&(0x7f00000002c0)="0709155dcecfa06df99fac4046881cbaf3dae89f6789ba", 0x17}, {&(0x7f0000000300)="142c139854645eb6a271cf5b73696991101dd4f80993b2ff7d9222d197ca5df094067066be2a6dcaef079f3590cd6ab1b25ab1ab8ab6c2e4a0656dbcf370d845a04d1b8b4770dfcecaa84a0225f152ad5780f0a590d31c259bc9111bc934d4423176434f122768f6c62019ef9f9352f6bfcf7ec7857e3f8d95dc44b399aa1e42427e8b84c502c32b98e65947845ed5ae57f0284a7d5ebe72ae36f4031abe6d02256333b3656c869e99c5c9d15ff82feeea9c820d2cfbf0e559b8ae3a5241cce6a79711731fb296a58dbaec43c430cbacedad0c4d32c625882d58e93d515c84fe47c539bf55b620945262eab2117ce4aec7", 0xf1}, {&(0x7f00000004c0)="9b9c2dcc788c30ce1ac9b47414f7ed196e7e5c7681c67fb281a57e293d149ccd33b27c1fc08f57a44defcd768ab1ea23f411c3ce220269ebdacaa9ceaa591785ef4f2147e453d1a82dcd9c8a9ebb8c443487038b619cf2bd49eeb505cbfbb745d21e03fa5d5d6e0179a3398c766ad0f85e16c440de4a547f52c65843fcf1cede6a45b010f6344a802b8f529d2f158d3c87094f659025951c9891929b2fccfd814080f102ef3c40e1d75ef2031e43bedf8f23d6437c2ca6a873a4dc6d5f7b58ac77b9596007ed7a260aa34598012761f2b0fdf3d497ce7c4a81ac0930450c6a6882d6903336eb8e", 0xe7}, {&(0x7f0000000400)="d0c0497d80fcc6eb9f2c4b806135da5eb36c6d4e54f0fe1a503de7464c8f4814cbdc266e4f3b720bd84ef1269fd2b61afbf012f141bd635ece0221c73d8482c5d04f18fd8328cdc2474409601094f6810b", 0x51}, {&(0x7f00000005c0)="7a3153801fc7e4798281d61b384bf31674829cf65937a4b2237215276c48cbe543a9fe2761eb2ac826acf99bdfc931df940baa30d4a66c2cb9e16be23449aa4b63da8c111542d3001cec49afb7ec496d578d09d70fa0189669da4d954104f8e1c118f34aedefcafde2888c70d633e84a5845f11f4fbbab393e66d3290b49840ee84e", 0x82}], 0x6, &(0x7f0000000700)=[{0x80, 0x111, 0x648, "d4dfaf208021dc1ab95d9904687feee771ef8a88b0dc8116f49fee4baed091306b4501281a8f3313cc020028b071c8fe5b855e4e623f837cf44860d8cfa102b95c84b9e902b117ac877802b679a97c7c3662f13107a061f1138301a2882364606ff9035cbc0d0a02b44e71"}, {0xb0, 0x103, 0x80000000, "61f07b7f5369f741d0e774157129ce2b94fdbac9ffccd0fd101fc9c2d1c3d5813d3cca9b8040b8feb2275a9ee3b1a97aa75278c41dddcdacc7be26509535c4d107d13859befa956f57ec4fdf37443cecf7b6f27d614660f246dc2a1ef4f4e93f97a8e920e0c08425f69ff6d54e8bbdbb2b774176a12e9f902a63f51aad191a3ab7090cb681b45407476477ec27bd610d9a36358ce3ffb28035b084efa655"}, {0x100, 0x105, 0x3f, "c0551bad46f81aa7873a1d18ac51d1b15c48f1655a710a71bf061e6b6f51572132c8da7b09e8f720d1b6bf54284e7972b6e5c1d77dd7224fcc1104ddda9c2c792a3688ff84eae29d1db346aef28ce637ff2c3a474b7c3753850ebb3b7c2111a18e1f95f4ff2879c0a3e7eda2bde83fea38b1fcb7765e74a8c996f06e1c0c6f1cf718b4f863a8375837baad7181756110f65dc0aaef2efd6d22c7dc1a61f67a89056b59f64658c888dddd184075c6c2d80b16c4b0c7bec213ee3e7077bbe38e3d3561c3a7175c55be1432ebc5042d241e01e1ff17b269b5c6570ba780c3ab3b5b389b86d9d2fba69a3d5661cd182f9358"}, {0x1010, 0x10f, 0x2, "d550573f890dc025073dbea5ee9eec10f3aadc0eafc0ddb020198fce858a7eba236870f143f00018f42aa3c045337c098a2d53bd04046aa4d569c379c54007df9a621f93225922d765e2b4989080e9d17a84ccc10d1c04b2e764819ade818c6961163f22f72c392846ca7a5e483a53aebf2d037a7d96ffdd82d5787b1cc1207cb78fa47744c4a422b4aecf22e5ecab7f0f9aea9943d10d281f545954bcbb59d942d1d6e2e55a13521acdb5f1e24bdfe0c4016518e56cd47a094b94a749430730460f8146ae36ed7d4093dc5cbc7cdcee0a4175cb0258000725992855981f5a9573a4c4b6557fbce493a99159bb2d8b74e8752d8a6961abced14babd9cddef4fc51f63c6f1be337b1fffc13d10549c74f6836429e1cb42cb419f17c564ed8beccd177d0d2aea5952c3cddd4bb45c7001fe9c3f99b55390aae310e655bc951e9febedf349b227cf1926237765db0fbcdebde4ce35543a749c92c3083bc439c7ab2ec704042b1ce7120602d5d9b4266bbaa820e6811d354742a8da03b84d00840721a2e7e5b9caf5fda588bbd709ced77e0d0dfdd1ee9fba965f93285f272b1feaf5dea3716136d089628a43e3cf2d96e9f88355dbc1ae5874e996549ec45685a9a1b402277b9748c696f08740d68ec2af5d204f7c131e6e7ea34b7f151048513cd5d274de5e8f970b400884160add0da0707f41926c64bdd7d8f83d88fc6def5688f4a6ba7136fcd04c417a37361aabb0c3cc7bdff4726fafb62c7bbd6e4f48738c7241ad1db5215f05c304ed114620baa92d5a5f5f0af879543ee478a829dd2a8a0ac6e35f68ed59187030a0cf606a84acbd60ec8f39c36b1b93c86cda69e1ea33c358c6c6304cc5106ebd6725b30ad6e5dc87eef028f7e9239f0fce326c020df13f300ac01d46c6955316180b74c11cb9f6eec835f065435431c0583b1a4cd1143f072ff770cd20f47aecb16725b83783329ab45321720f0faa93f1dbd7e43d0b5c85854e9530dcd1814c49227991619c71fbba00db9520e3fe88390cf8969e184777b3c85d5099c9804dad63eaf05226847c090b7f52290085addfd1b06aa1dd9ddd7ff81da9ef74a4475bbdaa5beb969f4625114e7ead65059bfecb769db021cbe0d6b3535a33a8f3f237752c1e292793def1c29db5a3b898486e7f16ef77e4e568cfa75ad941b3fd54703b80d11bb1dcd36d897a25da6dc33ddd7eaea03fa40084529ac2a4e36aecd0e8b176eed86d97fd4a82190b9e5428341244b19fc7ee52d9b2d9598bbba700eac42aa27e00aa20d8e56e50c829d77bb8c2ad2a14bcfaad4090eff5199b66dba79b57e7e8fab5e2646b6a6c1d5ff40cb6b0eb3ed0d6fe8746b5d13a437801e584582847928c5de1ed92ca95e7e9b6e5498949b680b3148457a574f6d94ab9afc591f7e466a3ac1629565382f3a02ce1ef64c883c5f620d9f5dd3febf8b4a354796cfd68aa53252369af1e40829375d9431bb23343fdafa8c6b1cc5a05159dec46727d9e15fae0614803e521d20d8f2809127fc658f3fb9c722d7169a905ac3cae533b7cb76fe73687d5346522a239f17640ee1ad75a10589744a4864a721be80a73e82a6f740c1fd078d50a626b1fd69a3f37f9ea6b5abf351affb368015169154568757c38f548a228bdc1d2effa8b7982edf7dcf80b6104285e4ba9e0aa182c782317beb17a5b99dfcab360252f2f38820539c21cce1eb92a9bb7312dcea173dc63e605b6a3867636eec913771711a3b6c42a4583cb8dfcadb0015c7d3cccfd550e1ad33ab9f34c8da5ea3a2d8c79f800ac34c58ad2a34610d710b3f81b1993468a70bb4938cb8e490eb1eb086f37465534e1a5a5bfbab8b8345f2d6414c222758543a4e07f9b52c79d618af9041625536b142c3e325815006135bb9b8dccc56d0d70288f7877a58d9cd382b98b4a0c7013a61e94fdc4b67fe2de44a756815d23fb4a066df9568da8932323af77b7e6d5ea85da913fece693cc3f4e1b5f121e0f6b4623120f29a107a8b557109999c7846c57fd612e6e085983971386ed5f0bb503cf138ed4eede9d92741617a3e7e59b26d34752c1febe34927fa6cb120007e9f8e4123fb4bb594b33a745855602c3c89e03bdf4098d394f907a84ca77f1d5de59323affa494735b0e783b33f8f58faa8f22d7dde7fa843c82bf7590f934055ff8953f8b7d371eb08cf470a7f4c1ca8e855b47b9d07f716f735239fcede39f6e9cd76df397ad5d734e1c38d4496e5b6c2c0606b964c740c7ce66ac3498d9a82d47d1b7d8545bbe789354d5e88d7d218df0c37649596e54d5699588260e04b709e8be0943c86763d4c07571ca70a99d0f674f37b616b0184a029838b19bce3a5463f070baf277e0dbc5ae3ccd3368348dd5b44a2ebe8147226151baf35d47fd02f123c7e4a7a6333cceb6495d8863afe9dfeb1923e76c338313dce631ffbe5bddc596474362a277934ef4dac6a1ac4f3fe3e35f7ceee9c658feaba896fe6b483c4e0a4cb33cbbb5f711635a8f45f184b3c6362a3660b8bcc196b858e55c156db2b23de4423971da5eefe2e4a4c031b60a89bab1fd9a2661ba67be124f5978ae3e749b11fb3046b6602896c9411e81aa5398e25b3981845b0d84aa9975a146b369870f30b0bca154e6b1f89438ae80da54620d6c8a7b9a7c9589475cf0f220b3bbfebc1caf04e7a75397449df76d5459fbeb8e63c90e711f9823edd9868c932f22531c2fb7516987a5bb8d913cd7b111a568903eb313178842117149ca99f8d5320dfe43b296540ee405f40b464d69c810a91fb8c5a95e26161b035dafdee5979b23d649128a6514c6a6478c6df9d684366390277730594643c28d1039d8bfbbaa8607056e969ff17f1e45cc4230b5efb4843b6b6b114515398e24fa47de51a68872e9b50f254f564f45bcc00cdd41b084860980a640e7b66cce96bdf6a4d82bbefeabfa66b8f361a551ad4378422d313c32328f1b78699646dabd514132e4600385c3d20fcdf4df5985cfde826b20e1328c5edd28bb30ddd7a627999d6cb3e0c2f99188d9b19a4b098a09ff51c2ccaf49174665fd1e86472ab5c1417beb0cb2f6c35981fb665be46db46cb222f4d80f5b2869c5848e9231461c67c22a168fde69872068831ec1801ba6f769c737bb86c6057447ad20eb3968798e1a194af463b0cea253712d1d22e68b8ccdde597bf4feda6b9c5fc292bf276edf09182c243af836d44b29ff21250be1ff5a43920d4d816ec025b3efedc252d0c939298a2db8e0d84c2003014471d3efd77272ab8e3b76739c0d9c6b58c27a2c3bfecfcb292f762acd5cf358b87af561a95d6fa2e4180fa25e18e9507f5c5050fa3441d39a597f467ee5cbd72e50a7aa353ca732c7a83639b00a42c87ac67601eea53a97c8e3a3606091069a859fcdca8acc69cf22ce6a8dab9f23002344a2c79c4948ca60fb23d42941a643c4f67fc17f12500d85505bd91e83137fb16969084dd25369a831965a692a8225d378e34ea09060bae0e44066e3aae41d8b671962f3e86bf7fb77857212135c84d84ec0bd1785876da4e04f3f226b61e24cb556c465135a71789e480afa12edc94a487aa4f01be0d94dd9a38875976e417773468d3bc9e44c774f5b8fa282bc07eec1c846ec1f8683523e61f08101d961376a8cd74d87515833196f5cbcae8801802f68b1a899e8a64f5f831642448d4c9efc4d7271e3361f5e9e9e16a7bcbf8941fe6aa61d4c6507c34eddbaa1da0710fc67eedc948d1af8e9502b1ffebf2f821eca0c32d1fb827c585d79bcf116e1ee40f25e5488817131eae1bd168812482671c896400b049b760bad2d566344ba0fda0bd12d12c055347d88e61fbb2e41085f1aef28e6d04d845aeacde52781d5c303bb1f1ae83e0d249bb3ddd1ffcd6c7e6884e1235245bb2897348ecbe81f31d2dbf2f491fe936084209ba398c12dd1bdc6aa69c38688082280c3b6b1d08e917ffa9064d2772a3260b7a750c3f0f8a62fd1931a3df70301afd33d44cfd74fa3a731474b5660f56a8ae7030d0453f22ee6941df619a51bd0cd4d31f3daf91c712ac0a78e47cac0c61ce1479667517c33ae71aaee4cdcc585336ceffd6e3c6b9c9d4ba4cf33df36c692b0a41729dab4eb4b82c057c64f172899346fc3c71d9b2a884488e6482191b6ab9bce883709e46f9a69465407a1e8246549fa841b2f6162c772d21990844ce825cf8ae3ac4c2f1be86081b60669ca031ceca3c2a629fde6cbdec51ccdde117806780e4b2e862e2c6b52d185a9d7420d2fe30631897112cd8fc30b4c8d6cab101c23bb18a80d9e5306d94bc473a44ea0e5e48c64c22bd49d93173fa2b7a5e9e1a064172e2fdc52a474f8dddf1562d7d51354f81e347ee5163196eaf61e2652fafd1758bf66e323d47be6020462dbf8630f7b36323f7fb5e46b9bfad25b2cff9d595b954cfdedd6e5cb734b5c7e63ab9a13e694c00bfebfbdab21b8281a06c111fc82b86fafe0f8637b6f13fbab4365ca18d12294a82ba42612b61fa7954d906f6bb293cc8075a59caaa7bd4a9ed20a48060b1ed4ca7b97210e96a6c8d5ead80772f3e8013bc7eeeab4c5ed7826dce944ab64ad359576433008505f5e4a8374c2ec6d17b3b165497ff595daf7feb9508dc063e1bb4c35680c7d5db1260e2b5883f801a01cb99bc9493f48695b5791f8111bb951117becc7ae2d02aa68e73409831e7ecaac2fe07cececae06588997e37e4c8b21fc45b1b225b83007f8b7436ffc70d722da0df1db638eb6780e4863d18b8231a624a7762506a07eda93f3063c7c939b2edf035d4173ab1605be58d325221e2d12471d7c8f56d05bd81dc398961c41cb3768c104a4ef8f4e3bf61f1d0860e539c78846ff849fa4c2ba6a5ca0ade0b11bde26f8aa5a9aba20ac295cb12e6dbc9da66eb5ace6c06d422605055fa817394d91863646bf35a2a974e3959b601b6452f1464d97547c36598511576da37c054f8bc7105a619ec2d8a815ad61bc1df74c20ded14c9fc1c48e8c1319907ffc299eec28b520a50275b3b1b8d7f64fcdcde295bb4c2afe80bc0161f9dfa48a2de096acfd6d9b08b00ebec8b0c2a137167fb24170c61dc738bbb1cac4269b0ff9e64ad6508263ee1d7889c5a1c009509fef8708ac4b20cf6b268a03057af373fdaf4d4a4e2235c92bdffc335e4841a72251100fe10ae7ead49adab8bd5432c4d596254b32237021045fbe3aed70ab7db96149d97bd7a62ad6767a344a2c720805883df92e7b6ad3f075a6c72d464513bd5be75e0da6ae8ec626a502f7464c4e77b951daa45c9c82a233a8aea478a0f9bc0dce1dad74f5f46a676ad18efa56ad6cae2cc29137360acfeb5a453064bd27cc5d37e433f2c4708444d2803d534dd117c09b08a14476e93a6981c91af523d876074873b6a44c51b3991c8c87a3bffdb2c1b5e3c1733b15b346a97998d6b8f925929ddc3273a0db11005e1d1334476423738775f2d60f8dccde96b9b98d8728c06dc7f62295ea705b7b29bfc3dd288d48918f93c248046a0ea38fe56a9773149fb6f06eb62af9d3f63e7a551a8241c4c5a12bbc2fd177d4d7729133424537b10160c82180f3d595e93457a6e230e097fe809413e77db309a99cfe888cbdfdfd9a372e5290949061746f504aba2372c1a7587ac6616ae81239dc2c536bda7b7e5ca4cba8f810ebf3630e1bc6624d1ebd4b773526deb229e583a89350f0abf2c7929665a50990cbc5bf92a5b4a1e1029de8d82b5edcde4d5f2ab4f10bdcee81ab8da57709ce4e3b47568"}, {0xa0, 0x113, 0x9, "ea9fd5381f45d0e00122313db5215b30c3168c7a75c0cdbbac0f67a350e752e64fc9cd53fade9a863ba74f0556b6fa456474f75d1524b5ab9d349fd83425f49e0bb433afce61f2ce297ca1ce65b2b373aefed369526001589b50f1190f52653edcc5133a9e2a4f73b27bbc9683487e29c724da8b090994d5569ed5521975c3718b3f4d1e31e72fa0976eb817"}, {0x18, 0xff, 0x9, "39ff3f"}], 0x12f8}}], 0x1, 0x4) ioctl$BTRFS_IOC_SYNC(0xffffffffffffffff, 0x9408, 0x0) r1 = open(&(0x7f0000000100)='./file0\x00', 0x402000, 0x91) r2 = openat$incfs(r1, &(0x7f0000000040)='.log\x00', 0x10001, 0x1a8) setsockopt$TIPC_GROUP_JOIN(r2, 0x10f, 0x87, &(0x7f0000000080)={0x43, 0x2, 0x3}, 0x10) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:39 executing program 2: r0 = socket$nl_route(0x10, 0x3, 0x0) sendmsg$nl_route(r0, &(0x7f0000000140)={0x0, 0x0, &(0x7f00000006c0)={&(0x7f0000000340)=ANY=[@ANYBLOB="380000001000010400000900000000000000a1332033981f8e3c8d9f5dbdf92106cb876b8c", @ANYRES32=0x0, @ANYBLOB="0000000000000000180012800900010069706970000000000800028004001300"], 0x38}}, 0x0) r1 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r2 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r3 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r3, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r2, 0x2405, r3) perf_event_open(&(0x7f0000000180)={0x1, 0x80, 0x21, 0x2, 0x80, 0x80, 0x0, 0x3790, 0x0, 0x2, 0x0, 0x1, 0x0, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x0, 0x2, 0x0, 0x1, 0x1, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, 0x6, 0x4, @perf_config_ext={0x3, 0x3}, 0x40020, 0x8, 0x9, 0x0, 0x100000000, 0x100, 0x11a5, 0x0, 0x73, 0x0, 0xfffffffffffffffa}, 0x0, 0xffffffffffffffff, r2, 0x8) r4 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) r5 = open(&(0x7f0000000100)='./file0\x00', 0x4000, 0x61) perf_event_open(&(0x7f0000000200)={0x3, 0x80, 0x0, 0x5, 0x3, 0x5, 0x0, 0x2, 0x4008, 0x7, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, 0x0, 0x1, 0x2, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1bc0, 0x1, @perf_config_ext={0x4, 0x4}, 0x400, 0x7, 0x4, 0x0, 0x0, 0x7fffffff, 0x2, 0x0, 0x0, 0x0, 0x4}, 0xffffffffffffffff, 0x4, r5, 0x8) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r4, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r1, 0x2405, r4) r6 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r7 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) ioctl$BTRFS_IOC_GET_SUBVOL_ROOTREF(0xffffffffffffffff, 0xd000943d, &(0x7f00000628c0)={0x6, [], 0xe, "bdd6b276e92284"}) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r7, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r6, 0x2405, r7) ioctl$BTRFS_IOC_SET_RECEIVED_SUBVOL(r0, 0xc0c89425, &(0x7f0000000000)={"1e57a8402a5abceb6d08e82adb39e645", 0x0, 0x0, {0x11f, 0x100}, {0x400, 0x1}, 0x7ff, [0x41b, 0x9, 0x9, 0x3a04bd44, 0x78, 0x16, 0x20, 0x0, 0x5, 0x4, 0x2, 0x4, 0x6, 0xffffffffffffffff, 0xfffffffffffffff9, 0x6]}) ioctl$BTRFS_IOC_SNAP_DESTROY_V2(r1, 0x5000943f, &(0x7f0000000700)={{r7}, r8, 0x2, @inherit={0x60, &(0x7f00000003c0)=ANY=[@ANYBLOB="00000000000000000300000000000000ff07000000000000060000000000000000000000000000000500000000000000de00000000000000010000000000000001f0ffffffffffff0100000000000000810000000000000000080000000000007a653cec789f3b85fc625806615cc73c4d8b40563d4ecbe149ecfc1cd63161fa5f22ea77493e9320068ffddf83e2355bbb6ec89f8f82b1ca0341edf6240968fa627e6156da77b33a13093fe781873312cb420c668bfbb846a05ca1e19c1686df79d3503e75bba61b13903dfb80b161d110e6761ac3d0ba1e4f04c3411ef99fe0d0f39fd68ab1fdeaa11af97fead044f01601b6367260eb1fafb8e85f51325926b213cd952bf2d2a3581b68786120ccc0dbfbcaf95581de421aa80489e5d3c457667b76"]}, @name="6877a7c7435066c4a998792b6b0a9d9eb8f8c670bfb120060b023a8e0b25394272483cd77410b5de8c41d2844c0e8d1d26b276dc05fb20552a42115a92b453674534bc09d6ce0f479686055209c1400f66b73177a1de09634279cc38d974550d65dab35ab9ee118b742fbbf4caf5b947fa6eb6631b65a4cb762e8283ccf6397a5cd94357a95c035366965a9c2e9c7b6e36f25008ad8a7e68accda003b1ae2d6d788c806306feb25306c71317dfd21ca37f66a1e3d9d159299a7620bef920802f2ae05b64a589c714d16364cd3111afeaface6e9e5d2f2aada93f451e39c9ee6496031ca7329684060d4dde0ee88ce83be67f262871c9f12646bc05a30bb7cf8529fd0e94758c1214eae89083ef04dd36dcb88b5710f946e6eb94258ecbcb61e891708e96a295a8356987d16789cb5d2ebabeb855de05394bef04065c124b1a7840037366684c029c588a818406479009f7565f67becdbf4050ae690cd86170952bc634d241a619d6c8bac948d6a42f5b9b13f7069b81cd8d91597be663cd4ea792f3defe30f34129f6ea00fdb27f648036ef3c90c5997a5bfba6c0b4591a09835760ce8aeef38b5fb1e9270e72911a473a96cc4263eb846e050ffd7c6af4d7c300366b69475da4f6c80e707a0de814cf44adbf813754b440847298968fc489ce9f157d52cb6662dcfe42312775934cd0627daa50a91d79bdc54e7f8e32bdd82b9e2a194d279b81d85c2ee5e4d3f8eef9efe79659d4bc86f83ffd8008d1f41381d4a792977fa638550df9b3289b818871387529739c385aceb9a7141cf9ea4c8d949d324a92b97c080035954b6d8f63f45c4a2f948eb2f19844546d1f96b3fbf8819e1ea3b8259268d9c9dad51776ff298df136f38362ac25d90248d56d10e7a2a3d8eb6c16515f59ce64dec7f5f0eb745908cfe3f951486c6b084592b105e7a9b4f2f9125fd4e110e100f9c9769a296f3b89d86f69f856ced97d210183c89f7f22eef186317477f89dc103c872233cd231b69986ceec281a244a913c70466370a9870468dd3aa81ad6de0fc6320a33bfc1f01d2bdd49ce0fa99e45e3d5a301c45ce3e1b14e5c707f85d9655e614e6058923f0df31e80c51b4f7deddf05532818d94a4c3ce29bd0585ca3cab11980df0e504245f0c7a954e1955218ecf289e61e74551d5b0a213e681b97b5fda9e226330dbac6a41484e0c2c405d9a1023d148df16adea521a0c7dc81d4d75d2473e9d7b10df52e9dfe0c7dfcfe58a5a0785e919a1c88d9892c9716acaa6ad2a0cb3ea1615b2dc971509c4f5ed5c0f01310692c78cd6f3730fceda1f6ec8c4bda410fde001459b7e01e1531bf4b0dd22be62f5536705b191582cf1f88a3c6f8a5b3233b9319f48d07fe02095218a76695c0cbcec50fb4c97910151f04254743bcd4c6995fe518ca025896a3c1979369e03c8e8a208f7a0c1e69a97ff8d1adb775efea3c5a2825449dd2ca768e8255cf523812608efea85450c2768d29bff7fac71a236cc598cc849197dc54caf43a5a76a24f7f24cd9510562a865223c6798e803e59489c1fa5c77984df04b69a26e8ba820ec45d2608ed3f955d3df1aaeaac9af036037588c4b361a79907d901dca85238f4be7e44a574d5d5541977b027f32628ea9707c38f2411e3fa50bec1c764bdec59d23f93a6c083ed599c85f3202e807604c576a861fdea219531f5640c22ffd63a907c1eb712dd7386eefa9a2024482b0fbd466d63df7bc2a8a822d07834088c55c7137e850bde6758d06d30e09d56803525d695f3ae1bc27d81274ab8f948a37d7b8b59f8779ee36877a4bb6109040aacca13f8fee405753782fd1ad3317f156f0c2a4cae56b914cb6837914ac8f38e0a43162784774178dd9bd8bbfb67412a8bccf3ca01a9be3ab2b333dabb6d65a962106f42f9735a253930f069aa4f318103b62b7dd1f423e90364dd1bf887371bdaa1036a1a266e04b0acbadf8af000c209104ec1c5a74e3200f5aba4b2f62931464401c4356c1e29b6e96c8f9c197d0c475fed241f9a45504b15e873bf7146e31f668d0637ba4463b01ea25e95226c9404f630554d829eb2fe1606ccc13195e9adec9e714c5410e9f083ed523fc19da7bda9d9cf46ed0b13d955538ca31800462eb6234148f75b7bb7b6a52e21f3adc0adaef246cc23aa0963736eb496923b58817d8fe510d995b41528c2b18d8cf03460e23a6e111466d494c025c41278e4a35002261fd9b654bb1e1d80dff8e088be5dd053cbf1fe885698e2c01fffb73b08c4ebb20c94040255dd744ac6449ba9f433829fea4f18dd03a532029e201f3f1bbd5ede51c26ec7ee5f92e633eb4bbf497b689facbf6ae9e492da6bb1d9520b242fcea91a46573e2a87cbe9e6fe289878b06a1296d58b96a57bdab0e61d1d58d655e37f93eb981e245501af0e5c7af355a77d8d95f47750a1a1a1c98d0a3013a3987a7ef408af2a37b9d817e27513698aa72c3043e6222965036733144666ea873fc46c69f358d1056497161bf0600459186d4aca01cce4b5173caac55ca16ab18523565344b7453f3a58d77bd6956875e8fe9c47f7ee4c1ca30fc2e3d6d6b8fff1a64f9e4e8dd70f7db6919df81a05396b6481ac2ab71dad8c8b4e617c4f61bee33465477a0cc005d8bf2c7819485bb9834f44ab8333e86bcc822fabd048a655be477b9ece548d1486a34dd5cfa035ae28e8aa8da77c839257972431fbdedaca8d9290242400e3c6806a9667191a7c96f02399abc40591f0ddbaa5a45363d1fb881fac0b092fb1d0d56c435a354f9e5b8c816050870f812289321da8959395cdf6abe7a7bb627c014e5b80537d0bf31cb3e63c449b56e12a2d657cc9d89f45b0cfa8f065b0054be04e6ff7d02ec37331e62ce88b0439a91d1b4c0bd68c374324bfa6748185453095d3ba9a3fe8c9356fa8b678a4d6e2694355402599ad6c7e16618770e99b08d83da0906202a4737e75a9ca75968c59a0b164d14234b6f86133f08fa5caa38632d46331b96f55290f0e6cd67a326a241523794773c20b54a0dc371335558519e8fd938f33bd38c07c0638f9b68db2352921d5ac675f4eb44385b14f078443fc38a1b0d8761d11849d379ae05e8122ad577ba8408a951f55224182a32f2eafc65a6f642881e940fd57057d280afb23e7335702d80b647a756b5cba6bd223be4efee1b56f6509f455dc11369558a712a5470edcb90d5aa5882f22eb5c01829bda8169f6174b7af27117f51ae13fc6f147aac7bbfe5514ed869ac81465c0d424235efe1fcb5a6851808ceba14d3b68f8d5e7d1369c47a570fb6ccee927ab8153011a231b6c239bad16f7264392cb560bc56ddba5d4a4a8688efbbd3a163469ee5d5f05497bed3394bb5179a13a59a696883b4a110df71610bfdb9531c22abeeaaf64507c50c24a5873c989dad35a2c43d1368b0c56720a93f0c06dad8898041a8a44a7d8664a5f7a53edafea33fc313b61a9c42cfe39f36c7242816b0028d88ee2b3303bd5b8a3dd7a0fa690c64fb261973126f194d45132e753164cf9c6d850b1fcbafa4faeda04af24934464f87a9f41e15578daa161e7ce1f6aa4c6b97da7f56bc77972212675221f20458408c6872cca5f239bbc9edec46ca015c7ed49f6a3178034ff598b638ce2274975b547e3a546e7303c73f0fbe64d829789f4f7cb75d7352cb7efc5b063181fb5256b47d8352c47899736fb3af2c6c6ce34f77b5c56a6bc4a9ca4d26bdbc0e2ea23a238a3987a7a5155517a6ad7df111f15bcdeecc61e0e04ab4ddfdf462e844baa6600a054f3ba91a2ea70b7d68a2b104abcf6351c0fd61b6f58167e12666938231e245dbb3ca8791b9a0058dc86de3e90fda0b86e350df5e66e8e1c7b81ae57e53292fda3062c77af97c3f87d5646b9c61bd4cc4995c5b525510c12aeee8b0f0286790d79d2d16762affc8e4835d6e34ce93c77d7e3922deef7b3e58505ba4a0248dc2aff7114070307407c9863a1c374b3b78ce19c2f87a585fc9c35caeac920c3103029fa1a593f63d301cee99c921c987496e187fb5796456745d8f88418ef30079c1283b3ef3912944ee085037cb6a70721599e225fd412296d52e8e1a70efae9c3061d62baa0b1925905a4d547aaf7c65b01969945acbda2faf6c3815f5b7eb4b4d49754aa4c51bddb4b1518abf62bba02bb770f27b53d9786aefdcdbddba1c8bca3f7b4abc018c0a579cfa07f6d8d0d82bdc08523664e2ebbaa56281897369428f3b9471aedfc7f4ef810b27181a41c4261f4837d3af9f037c206311a13f25fa602d4a21b272fe5fdd21c9c13a706a0045221aa37b1c22a4f7cf71f09df7e249d219b0f9067e26326270670ba72dad6bfde2fade9c0a7e4bb8b3ef3681327144fbe078dc35cf7b7e4ef4b16e38ff813c22ce4f56a071a688225622e018b9638b67837ffd6f9f72d3665429c4bd26cd8fd08dafc25106087b66d00cb88847c2f34ecb9c2be1b73f0eed9f2fea89457f08cda875162142c151f3b2dee4afdf2db6ca2e9c7d6b99db88948795a0a5452492a8b09c40c9a110221f36bca3d173d03ef2e0301a65eb177894d74cc01b556fd1e635f42515092849c665bb9c321a630a5fc3712da75e1b8069bbc763dd475235b4602bef268ccdcc67d7c5b5dd7824570351b862568aab1c7c2ed177cd70a287bb5d9f011733eaef7633b54c032cc645c40fb9ac5d1b21a06d65a35af077f3693d32e91f6fff5ffdfa7d55d56ed05d77ac60ba75c81849f6212d1f7b983e8f35ee483bdb215680966d37a5b196909068d94fd4b581903a8b0b7fb457aeac80d0f990a64eeceacddb23b208d9f93af97d76e1ce1002c51dd1f190fc4403b3c0910d01c416744180f26b8c4bc1e6ca5871a87f5e191c5e72de408d8bf0ae37288bdf39e415d1c21e29182cd92493a5bef5bad3ef9fe1e2e5fe2a7f7e881e51e5f5d8e5162d5b9871eca722f1cdafc9e19043cc51ae302e2ec8a403ba364bbe802323c967dbe9818dbafc91c1bd1bc892af7f39bad0a4426a728db95285288928400e844433b63ff3160c48fabf21d9fc6cb736a84b02934e427c704bbc24d3f4e211cc51f0114006ec55cfe73cce69ba8294d1a497ef27e44f7ef5a46dffa0a47396f4989e15671bc616943ec0bace38ef633869fe5e2fa65db826f8e03200a0d58ae3f35fc1a445325a7d70525f90f662eaba89accd032d204b8acdb007a6a6e76071c06a2a8110c685d0d77d767508cc8185ddf9d5efbfcfe72cfa84c167f67b3fe7c5fe8ab2d69534737da4ba11b2800f4f2743a554a5748d31f1865b61358f736aa63095fa6e5cde2727f6dfd14524b16510f7d49aa75f8bd70d8b131ec2bf48c8e272e0f180227b72f86a0569654a41c036d375c51a1242923276f2305b3b501b7a8471c46479b94a5d33f908b82b303e9eba1ecdb897ed4909161491bbe292bb5bbd443add04a8280c8dd687ee54b592ea094e2cd070981d23c48420af6ef2b0c0db14bcf44c1744bb71e61407b7d55f56ef18c07387e4f81c0c315d55f44cf2398122490f2c917d72fc0cf85664e53480507af354b2980dc870ca42fa3395d3c9f9ac1cf117ada1602c80552e43481ae78872748741e3a55c7fbbf5baf704bd510f5056861cf79cde911551d0cfcb149d479eb54de204f8cb1c413ae2bc10a59e043e632fc936860beac144eeac71417ab905b"}) [ 620.057294] netlink: 24 bytes leftover after parsing attributes in process `syz-executor.2'. 05:37:39 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@nameseq={0x1e, 0x1, 0x0, {0x41, 0x0, 0x3}}, 0x10, 0x0, 0x0, 0x0, 0x0, 0x24000000}, 0x0) setsockopt$SO_TIMESTAMP(0xffffffffffffffff, 0x1, 0x1d, &(0x7f0000000040)=0x4000, 0x4) 05:37:39 executing program 1: syz_emit_ethernet(0x2a, &(0x7f0000000f00)=ANY=[@ANYBLOB], 0x0) syz_emit_ethernet(0x32, &(0x7f0000000300)={@link_local, @link_local, @void, {@ipv4={0x800, @dccp={{0x5, 0x4, 0x1, 0xa, 0x24, 0x0, 0x0, 0x0, 0x21, 0x0, @initdev={0xac, 0x1e, 0x1, 0x0}, @multicast2}, {{0x0, 0x0, 0x4, 0x1, 0x6, 0x0, 0x0, 0x0, 0x0, "f0a30b", 0x0, "03175c"}}}}}}, &(0x7f0000000480)={0x0, 0x0, [0x222, 0x0, 0x405, 0xe78]}) setsockopt$inet6_tcp_int(0xffffffffffffffff, 0x6, 0x0, 0x0, 0x0) perf_event_open(&(0x7f0000000100)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, 0x8, 0x0, 0x9, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) socket$inet6_tcp(0xa, 0x1, 0x0) clone(0x80000100, 0x0, 0xfffffffffffffffe, 0x0, 0xffffffffffffffff) add_key$fscrypt_v1(&(0x7f00000000c0), &(0x7f0000000180)={'fscrypt:', @desc2}, 0x0, 0x0, 0xfffffffffffffffd) syz_emit_ethernet(0x210, &(0x7f00000005c0)=ANY=[@ANYBLOB="aaaaaaaaaaaaaaaaaaaaaaaa884800000000000000000000000000000000000000000000000000000300000000000000000065fac20601b611010000000000000000000000000000000000000000000000000000ffffac1e0001ff09000000000000072000000003066805008b000000000000000000000001000000b701000000000000"], &(0x7f0000000800)={0x0, 0x3, [0x0, 0x0, 0x32c, 0x966]}) syz_emit_ethernet(0x36, &(0x7f0000000100)={@local, @dev, @void, {@ipv4={0x800, @tcp={{0x5, 0x4, 0x0, 0x0, 0x28, 0x2000, 0x0, 0x0, 0x4, 0x0, @remote, @local}, {{0x0, 0x4e22, 0x41424344, 0x41424344, 0x0, 0x6, 0x5}}}}}}, 0x0) syz_emit_ethernet(0x0, 0x0, 0x0) syz_emit_ethernet(0x0, 0x0, 0x0) [ 620.101101] netlink: 24 bytes leftover after parsing attributes in process `syz-executor.2'. 05:37:39 executing program 1: syz_emit_ethernet(0x2a, &(0x7f0000000f00)=ANY=[@ANYBLOB], 0x0) syz_emit_ethernet(0x32, &(0x7f0000000300)={@link_local, @link_local, @void, {@ipv4={0x800, @dccp={{0x5, 0x4, 0x1, 0xa, 0x24, 0x0, 0x0, 0x0, 0x21, 0x0, @initdev={0xac, 0x1e, 0x1, 0x0}, @multicast2}, {{0x0, 0x0, 0x4, 0x1, 0x6, 0x0, 0x0, 0x0, 0x0, "f0a30b", 0x0, "03175c"}}}}}}, &(0x7f0000000480)={0x0, 0x0, [0x222, 0x0, 0x405, 0xe78]}) setsockopt$inet6_tcp_int(0xffffffffffffffff, 0x6, 0x0, 0x0, 0x0) perf_event_open(&(0x7f0000000100)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, 0x8, 0x0, 0x9, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) socket$inet6_tcp(0xa, 0x1, 0x0) clone(0x80000100, 0x0, 0xfffffffffffffffe, 0x0, 0xffffffffffffffff) add_key$fscrypt_v1(&(0x7f00000000c0), &(0x7f0000000180)={'fscrypt:', @desc2}, 0x0, 0x0, 0xfffffffffffffffd) syz_emit_ethernet(0x210, &(0x7f00000005c0)=ANY=[@ANYBLOB="aaaaaaaaaaaaaaaaaaaaaaaa884800000000000000000000000000000000000000000000000000000300000000000000000065fac20601b611010000000000000000000000000000000000000000000000000000ffffac1e0001ff09000000000000072000000003066805008b000000000000000000000001000000b701000000000000"], &(0x7f0000000800)={0x0, 0x3, [0x0, 0x0, 0x32c, 0x966]}) syz_emit_ethernet(0x36, &(0x7f0000000100)={@local, @dev, @void, {@ipv4={0x800, @tcp={{0x5, 0x4, 0x0, 0x0, 0x28, 0x2000, 0x0, 0x0, 0x4, 0x0, @remote, @local}, {{0x0, 0x4e22, 0x41424344, 0x41424344, 0x0, 0x6, 0x5}}}}}}, 0x0) syz_emit_ethernet(0x0, 0x0, 0x0) syz_emit_ethernet(0x0, 0x0, 0x0) 05:37:40 executing program 4: r0 = socket$nl_route(0x10, 0x3, 0x0) r1 = gettid() rt_sigqueueinfo(r1, 0x3c, &(0x7f0000000040)) perf_event_open(&(0x7f0000000040)={0x2, 0x80, 0x20, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x867a3, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x2, 0x4, @perf_bp={&(0x7f0000000000), 0xe}, 0x1020, 0x1, 0x7460, 0x3, 0x4, 0x20, 0x4, 0x0, 0xffffffff, 0x0, 0x1000000000000}, r1, 0xc, 0xffffffffffffffff, 0xe) sendmsg$nl_route(r0, &(0x7f0000001200)={0x0, 0x0, &(0x7f0000000180)={&(0x7f0000000140)=@ipmr_newroute={0x1c, 0x18, 0x1}, 0x1c}}, 0x0) 05:37:41 executing program 2: syz_mount_image$ext4(&(0x7f0000000000)='ext4\x00', &(0x7f0000000100)='./file0\x00', 0x200000, 0x5, &(0x7f0000000200)=[{&(0x7f0000010000)="200000000002000019000000900100000f000000000000000200000006000000000008000080000020000000dbf4655fdbf4655f0100ffff53ef010001000000daf4655f000000000000000001000000000000000b0000000004000008000000d2c200001203", 0x66, 0x400}, {&(0x7f0000010100)="00000000000000000000000082e36724c6f34caa846ed2e527703378010040", 0x1f, 0x4e0}, {&(0x7f0000010400)="02000000030000000400000019000f000300040000000000000000000f002e69", 0x20, 0x1000}, {&(0x7f0000010500)="7f000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 0x1002, 0x2000}, {&(0x7f0000012600)="ed41000010000000daf4655fdbf4655fdbf4655f00000000000004008000000000000800050000000af301000400000000000000000000000900000010", 0x3d, 0x4400}], 0x0, &(0x7f00000000c0)=ANY=[]) chdir(&(0x7f00000000c0)='./file0\x00') ioctl$DMA_BUF_IOCTL_SYNC(0xffffffffffffffff, 0x40086200, &(0x7f0000000040)) r0 = open(&(0x7f00000001c0)='./file0\x00', 0x0, 0x0) r1 = openat$sequencer(0xffffffffffffff9c, &(0x7f00000000c0), 0x802, 0x0) r2 = socket$inet6_sctp(0xa, 0x1, 0x84) r3 = fcntl$dupfd(r1, 0x0, r1) ppoll(&(0x7f0000000080)=[{r1}, {r1}, {r1}, {r2}, {r3}, {r1, 0x6085}], 0x6, 0x0, 0x0, 0x0) statx(r3, &(0x7f0000000080)='./file0\x00', 0x400, 0x400, &(0x7f0000000280)) r4 = open(&(0x7f0000000000)='./file0\x00', 0x141042, 0x0) truncate(&(0x7f0000000040)='./file0\x00', 0x208721) write$binfmt_script(r4, &(0x7f0000000280)=ANY=[], 0xab) sendfile(r4, r0, 0x0, 0xa198) 05:37:41 executing program 0: r0 = socket(0x1e, 0x4, 0x0) r1 = perf_event_open(&(0x7f000025c000)={0x400000001, 0x80, 0x2005, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8c1b1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) r2 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) mmap(&(0x7f0000ffd000/0x3000)=nil, 0x3000, 0x0, 0x11, r2, 0x0) ioctl$PERF_EVENT_IOC_SET_OUTPUT(r1, 0x2405, r2) ioctl$F2FS_IOC_GARBAGE_COLLECT(r2, 0x4004f506, &(0x7f0000000040)) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:41 executing program 1: syz_emit_ethernet(0x2a, &(0x7f0000000f00)=ANY=[@ANYBLOB], 0x0) syz_emit_ethernet(0x32, &(0x7f0000000300)={@link_local, @link_local, @void, {@ipv4={0x800, @dccp={{0x5, 0x4, 0x1, 0xa, 0x24, 0x0, 0x0, 0x0, 0x21, 0x0, @initdev={0xac, 0x1e, 0x1, 0x0}, @multicast2}, {{0x0, 0x0, 0x4, 0x1, 0x6, 0x0, 0x0, 0x0, 0x0, "f0a30b", 0x0, "03175c"}}}}}}, &(0x7f0000000480)={0x0, 0x0, [0x222, 0x0, 0x405, 0xe78]}) setsockopt$inet6_tcp_int(0xffffffffffffffff, 0x6, 0x0, 0x0, 0x0) perf_event_open(&(0x7f0000000100)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, 0x8, 0x0, 0x9, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) socket$inet6_tcp(0xa, 0x1, 0x0) clone(0x80000100, 0x0, 0xfffffffffffffffe, 0x0, 0xffffffffffffffff) add_key$fscrypt_v1(&(0x7f00000000c0), &(0x7f0000000180)={'fscrypt:', @desc2}, 0x0, 0x0, 0xfffffffffffffffd) syz_emit_ethernet(0x210, &(0x7f00000005c0)=ANY=[@ANYBLOB="aaaaaaaaaaaaaaaaaaaaaaaa884800000000000000000000000000000000000000000000000000000300000000000000000065fac20601b611010000000000000000000000000000000000000000000000000000ffffac1e0001ff09000000000000072000000003066805008b000000000000000000000001000000b701000000000000"], &(0x7f0000000800)={0x0, 0x3, [0x0, 0x0, 0x32c, 0x966]}) syz_emit_ethernet(0x36, &(0x7f0000000100)={@local, @dev, @void, {@ipv4={0x800, @tcp={{0x5, 0x4, 0x0, 0x0, 0x28, 0x2000, 0x0, 0x0, 0x4, 0x0, @remote, @local}, {{0x0, 0x4e22, 0x41424344, 0x41424344, 0x0, 0x6, 0x5}}}}}}, 0x0) syz_emit_ethernet(0x0, 0x0, 0x0) syz_emit_ethernet(0x0, 0x0, 0x0) 05:37:41 executing program 4: r0 = perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_config_ext={0x0, 0x2}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x3) ioctl$PERF_EVENT_IOC_ID(r0, 0x80082407, &(0x7f00000001c0)) sendfile(0xffffffffffffffff, 0xffffffffffffffff, &(0x7f0000000240), 0x7fff) perf_event_open(&(0x7f0000000300)={0x0, 0x80, 0x1, 0x4e, 0x6, 0x2, 0x0, 0x5, 0x84000, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, 0x1, 0x1, 0x0, 0x1, 0x0, 0x2, 0x2, @perf_config_ext={0xaf, 0xffffffffffffffdd}, 0x4184, 0x0, 0x3, 0x3, 0x9, 0x3ff, 0x7ff, 0x0, 0x80000001, 0x0, 0xc4}, 0x0, 0x6, 0xffffffffffffffff, 0xa) r1 = socket$inet(0x2, 0x4000000000000001, 0x0) setsockopt$inet_tcp_int(r1, 0x6, 0x80000000000002, &(0x7f0000000040)=0x76, 0x4) bind$inet(r1, &(0x7f0000000280)={0x2, 0x4e23, @multicast2}, 0x10) r2 = socket(0x11, 0x803, 0x8) setsockopt$inet_tcp_TCP_CONGESTION(r1, 0x6, 0xd, &(0x7f0000000000)='dctcp\x00', 0x6) bind(r2, &(0x7f0000000280)=@generic={0x11, "0000010000000000080044944eeba71a4976e252922cb18f6e2e2aba000000012e0b3836005404b0e030a86df875f2e3ff5f163ee340b7679500800000000000000101013c5811039e0c775027ec8e66fd792bbf0e5bf5ff1b0816f3f6db1c00010000000000000049740000000000000006ad8e5acc326d3a0dffc2c654"}, 0x80) setsockopt$SO_ATTACH_FILTER(r1, 0x1, 0x1a, &(0x7f0000000480)={0x1, &(0x7f0000000100)=[{0x6, 0x0, 0x0, 0xe7}]}, 0x10) sendto$inet(r1, 0x0, 0x0, 0x200007fd, &(0x7f0000e68000)={0x2, 0x4e23, @local}, 0x10) r3 = openat$hwrng(0xffffffffffffff9c, &(0x7f00000000c0), 0x50d000, 0x0) recvmsg(r3, &(0x7f0000000780)={&(0x7f0000000140)=@llc, 0x80, &(0x7f00000006c0)=[{&(0x7f00000004c0)=""/140, 0x8c}, {&(0x7f0000000400)=""/107, 0x6b}, {&(0x7f0000000580)=""/214, 0xd6}, {0x0}], 0x4, &(0x7f0000000740)=""/42, 0x2a}, 0x10001) sendmmsg(r2, &(0x7f00000057c0)=[{{0x0, 0x0, &(0x7f0000000240)=[{0x0}], 0x1, &(0x7f00000025c0)=ANY=[@ANYBLOB="f8000000000000001201000004000000b7a8840a39bb9481200fd7883e62a3ef5c6ac7f3805170a7dee99678b9f02aa80bf5552feb7cf5811a383826f57b752216ff980d4173c1973b2d81da5a9f2bf4586435e715ef4d41f187bdc2e989a675293e09514f2a1fbb0a911e63356c559e506d16216c49d911a0a8c91369cc383a6b02659fc3ef4e949e4042ff2f28de66bb5b483fb486d5d3043d7c7c0acd09f193818e08cebfc6568471aa98b4649fa57ee9fea3294dc210cb8600a0108475fb176f8376794b8ee7967a14402eb903ac7520651e1ff0f4707c920a97c55935619916f2eab9f518f2b0f84012bb4c3bd3a3b971e7cdd1fbc8101000000000000088000000630c0000250f8dead360aa60451d97b9e91ed06038cae4d2234c2d6ac838d5dbeeb3452ad59c205e588a8083c6733bffae1a394136f6f2799eb0ca09f86d6e041378b7e7e1980cec5c628bf13b06849670e438b478eefc8f8f0aa389634328bc42a96d20fb71eb70c4ef1f32e9e24b5f73ac710cd0036b35a1dbd9d2ca9c26086c88d94f89d2777a07400b6592d7514648fe0910459c79dd3d2aea74744c66a37922cc6e84587996a0e5d63b1f0445be5edcfb91eec2e027af46ab24aed8ea6c4a88354a511081a3f8cb5066687c61b96d00dfb76d5651ee8743b8b32f4faa39c1223e583842ad3a1879ef9b9621ccf720282010ee633371ab4dd8d8405ab323862ab18f42b7a9cfd4f2394d1f86ca1f34b7602ebc407d0dcf2a79ef512eef7aee674d85a63a3a7592d78501cbb4964e733d9f380c728a90a5690dabea3f5e31fade54db91012b98aaf64fdda003929991d47fdb58580c5cc9685f2825f14c49c3354a73d34c5876f2d1821f094cfad1414ce328b57d92fb474d2e81d6d93fb627662dc27d78e255cb1994c9fd72a71b5d9b7356440aecafb32d3587dab4ee50df553f7dd1dcd7a7fd9c8b7a2e134ae25e188589a069a4cad86137bbbcc649015463cf5fe2942e84c7af2b26b1aacd7245137b18794d2957826cf57f2362b02a6c0c341d9ea2e7641e0cd7ce0501f592308772e191960a068200d6c42e0c47ebb79484bca588b54d8528f6dfd744e8a51b43013d78e6d99c212954fe51538330d07502bdc31a9d39a2ab31abbca3d7f8220f5933f3fea410df0c873d7a16b7cd802a9dde362d4ead415ef79550ff2382d0b72459e6bee318a3e2ab25d65aaa6e5c0e07009963a1269f0868a5eae542e0bc73c9a545bcab35679395833db81f7cc21f3b4b58df27e8858677b8c4d6dbea86c8d1f4f412d9edd160a863b970f2800596238d376c77bb94148355ef51f749123e1e718d5f4b5e35180ab76bcd6c67b102a1e8cdc8262da7360ef17395b8422ef4a13139bcfc291ce06f4d1fe646b4a05595e05cbb7e519bddb76a7871c6f5f0e92f62281d0a6b7fdf33bd1bfbe62df73984284e6f5b1da8a2e7d08dd0a3c1eb46132981bae5a2b76c97ebc668af15625223245674a50ed3f67bfb21db6a3a25d40a3a82639e020e925f3bdac288829e3865331e65bf802851cf476fc533ff03246fd5616ee6f88370ced0a89065b49ae169425472eedd802a7f61965c26876383d6deff3725e667f3120a36631bd335369a9db5193cbe782db154472007ffee2e9b2624be832b4e6680539373bb345343d4cb253c3964e4089c775473c390c905088f13f0dbadfcadc0b271664362daa90e937f8cdd04c4435e383422aa35c79a6734586e37b0bfa37e5b1ff46c9282e41b085efb39750c71ab89e2e9e3b95bbbb23153b300883e4b90e4a0ff4c7be340c985a1a6efe643263d4b42a59b50d2c211e660092b2166aaf64a9fedb238ef700ec255a86b907029b2ab67dee2fc3ebad49019d69808befe63872f3f7a0d2189f217ff5168a0f7a1c3e6adbb541f8da4ba6609e394ccc8130863cb2b6bbcb550aa98cc41452ae1298c12d1e5084b8d360292972a8f4d356ae545c7ad842152c34260b1faf463531f41259d25810fabf3c9bd5f162163695619774516a724f294527545addcf12657354e9c6ff91db90e834ed1363878ed5a7a176be6b7774b13930e5365ab7e550d2632efa511f8b8dac1f0dc6a337c16acff0e1011a22903c9952340067d747f7a895caf1fedab11330d8ba929462d14e97e6c6fb57cb0c1b5a9678c7642ac6f204f301650c7b4a9a25180885dcf03118dacc64275e18f5912bd53aad740ec2b726476b93757689336d358759b69e05830e02d90a1477e51d28870df77d191ad938252d49a314c972733e67668dbf9f6346af751eb1b3509bce8802b5edee294e84b5812cd08d665003c6eafe496346fed5602c87a2c53b1e4fd977814527a81fa6a9eb15b59063d609639dbad1cd0ce8d4401000000000000005b1d9bf0e4ececf451dd79340ce473bca3458c1da125255a5abe71d16803b292f31da1dfc8dda1f55b81ae3a29662894bd8db4fc07a5dd71a908cda4481d9f42b502e7a09797eae136a9aec6bc65c142c3d5954e9e7c7f69b8f7d644ab2f3c82740cfdbdbae9493dc1403bdbb8ea2699b20404cbb66f00ea5539a663b890579ffe403acf3646746755d5d6f56d6d5ed601b2e20b62976039fedded8fc6a044f576d6d0bb5e4cebb2c549990043b8c7def91c695aba7466ee3e0405eee44c20667f775a09da467218aac0d78dc124f0ff0ebe76a0837ee4bb0e6af82e11018667e664fa8384e6a7dcc6118bd0d4bf42542649247b315c7e39247341752f9e461f949c63dd5b4adbafcd0847d7f94d4fa5a31e0348ac380b79990c438217a0b03bcfaba958480ce1dbab04573e13ae2e93bb7f2f73c5d1292f2c5e13468ceda88845b882185027e6020ecf89dd4f3ce65ca2cb244b0aedb162274c50d2b950b8378771b18674f6b2ce0528f1f3fdbab28b54aa4575aa156361a9a8f8b326cc7e35ed18af8221c39632d9fa4b9e1c9351477b6974b7e6e34683776778fff837038217082f578bdc21bde91ecb99a0f9add09fa01cfdd048cb57227bc549c2f8622e6b705e15c9dbc497058eccbae3129da0eedc475e1a68f2395a20a266e7d3e244aae6fe63cbf6e25a7445c160c248d5dfdc82cedbdcb4c7d56d67590a22a647b2349e1ab529c4dfd00dbfa48e0d57d22c95fd785dd490b4d201b9247ce1b635cfd001fde6dc9584648b66141ae818dd1febb342ddc73663e4a32631aaf0f7abc50cd0d2aaf4c03cc7e187b71a83ed84e164f2d552e6de6cfc32e7776e8cfd3f42793dbc0937f6e2033fa0805db72c0d5b7c148e53ac9a510c8c76f959f7b04ca5a8f68a0d534c0abee257e222194e603cc3a114b727fe34403aa79f94bbbbd5074a630a0b4ed0c57c2c262d3465ba79c657ac56ced40a46d9b5bf6277c8dd7c21dc9d5dd7e619868d98abc17e34e99215326f3c1585cac519d0abf2844aee269ce129ab7da48fcf480f30150fd445aae3f68cf261fb2b2fe03862d58800063e4cb5ad3e2d28c7678d1e06689cc2e98441cf9df8d52d8fb31dd413ad88da2ebd51a3f00752a32ea85f93d846e5a1d1b6448d47a28164c15093ce8495261c6f7fc384e537c6c46f1329f62ff70569324cd20e304b040773f9613a23fde7b9ca0c197ec8d0309cc18d3a0579bf71bbdca3e3617d86694243707b0f832397fd6867dc07256dd65f8e75fc11e3b50d0725440825d7694fdf7d7c361cf69e6f0fc2d7a5f446b965df0e00430fc485efd1a21878d26eae14f90032edc87df8e6841df101370933cbc486d84b01a6b360317a68d0cc2213086c4a7a2f3591117c4ab21e802de2f15dd81cfca20556e09161eb1247b087300e47d7c7c2eb26e47d3e1ce919ff04fb7581aed6ddecd2ab0e76f31f8908e3502a952518f0b22db3c2b1ed27b9aba1cd440f77ceac2deb4e22ba96800280350e0a0778343f2db98315602a8caa6d77461cc5d890e5576ef14e5c4652c1147a8b4481914f3919acb0e5807029e675c9e6430720deb10a3e8bf6a116f625a4c051948ff329f6a027f1ab73e45e6462fec7a8fce2239d0cb0da8752904a03340dc3721923428da505b3eb51d8f8825e0f1b445dbed410215c93a43b98c9989f434b0b332b873311ed10e592b68f78e60bdb03728d48dab01391796e16c55ce065169264c2fb00aa107e2010c7790c6655f7085d8618b32bcaabeee221429a195c0d5c3747b3b006cbeda280050f612f6226673f6dddbb95c8c19d1f6e42f4b88784f69ed9617bc452fed0b37a4aa99228fc80b8e75e628413283a4a5fee42388c7607f7659e2617333514b0d5d968f3b18adf8f339645137363670bed1deda599a6275428ae18e65eac3d03098480e9dbe1196288f9ecfc0331f2b41e69ff0f057d04181acd678b39fbdd9a911e49c9eb69b128683a0f9872dd3539ba87e0c8244f5a77807749b97b2f9e0b38c810c7a420ec68481a48f7d85185f98124fd89d1087c7f80bcbbc9ec69ac220368fa3561d18610aceaf8eeed90f346103cf8ba2a7b5612f6b1e0d7197a6e8194839cbc6edb13a348770907d0558746e830a60fe3d12e25532488c3eda151e328dba779285d516cfccca381a8e36475efb3245b2f941330bc66c440b2bac3d528a20db93e60cff8448cc1ad3ebacf9dd58d5296dca32bb549f9daad3732a8682d504c1b5489161b13afad3db269d81906b66bc9ded92a358c1d3a0623a4262bdbc3d18f1764a48dea3a255331d19a2bc282c0265824239a95348a2ad6b493f6dcfb6b2146d82381211b21a4e2d22bb0fd2c36afb9e712770307a80b85e04004606b6c325da768c81c883d60c665f5570f4015330766cfb8abc98ce55ef9dc8b53e8a17eb78234f4a7bdd2f6236799c67015109c5d31c7f955e30bc318290dbb86f660793aa38a1fe09903d8a5759ef781d277383693bd90b2a1cdffcb97b8a97fe1f436e6d61c0ebabba6603e6a8fb52a282fecfa6346e45791dde9adc17bebc533907cf32fde90918e761b0467992f363307a1799617d7d22c29da9a858373cfd1c491f44437d22b5fcb96f405f4a88de500b2cefd24a5582514caaac76aa829b1c15dcfc3b5782b55e9dd2968e6cdf046023f6dd2f96d4e88599495268a22b0b9219988d4e8769865e804748046bbf25db35380b35d36aa5c668093250ab82705239c4edffe45ad17b87ee4eed3f18e3ffb9fc8a2badb2c83942a7db40b8efe37953de1204c2d64e9cd9569dee3b86c6c4b2977a47e37269a72f15f22779e44742d2a6ac5bd0012337d9ce161f2f824381ec8b4493cfdfd1546dc49f8b0804d38c051ac06c8db5e5cc96c493d512ecdf56040b528843cf461bea7a7b0a8b52d324e03b3e152a7f6ddbc4b433d67ec1ecc2085d58758fd22c3aa8d46fd535a6e305141adbd5d3741f14fe2750d09fd4c0727b3a5b3c79b14d87abb0b53d656c01247a9093da6524092057a1dbe2a72455e5c91cbd9904dc316620376bfa58f3113ac27125d8237a3e0c8827fb16525498127316803bd92c716235f1e13fd4c5b56946853c493d1df405f423e20374cfb1db1af8531be3450b8b1b560cf12046d30a51552d7c6fc18dfcd11be5dee6245bae161ef13a34afdd5bfb4d88e91029b26a052473e54c38bd375ca7b24e7117d3cc0079d3e037d22655263906a7c701c1258853b76992455dd4d035c0f515e7f38f9024d360bffa566b1446bea01bf862375b23236d98f1e026477ce4305e16faf821559c7cc0a5f637dd41dc57ee0f10cfe66235e7bfcf7f4a49522c67c9010ea20d11f41785415e0c1d244195be3260c07c3cd13e41e57093f00a9a805b71d3b17ab2593b6fe213d05c595f711ed0902d7ecd3add0402a7cfa4969a4ef55bd08e6d851ecf807ba17af9a4711a6aa5c1cad87fcfef8c3876fa4085fd0e1fa7100afba7d1e6e5a3c886a11049bf0fa0174490799625a261b1da8f8b89f3ce5fdda7f2d6fe76cec863b90873257e6c24b7b534749f3882391b9c81d672b0e3b5fd2d0fdb9c8d179ce44fa7aee1772c710c3e9d7c01c23f25013f4925e30321f2bf73fdb1966f34d2fe3db84989af171abac9de2cfe29feae35dd31d909462a53ebd490f242395fb07bd46d8a4f8aeca9e70a4b593f6a92efc5788b5f3e579c71cee091439e2be013aba3b80df1b76fdde49ab717e250953b372aa2d1c816b89b01b6c4779f560000000000000001601000000040000891b5706e65ef5fffa5009d35efd0cd5225cc15a05cd62ed27878f66f749c4ed5a27860e4a2f49ac66920f541aa4f76443602dafc593d75fe96013b3a737bb834859c3bbc4c19bce8de42ec2c6624060fdfc65a6365d598ef24340a9d1f60de0c23e1ebb741dad53f20c0665a240b430893b65cb5fb985d62f930d565dbd3841fd99eeba465e7da6d97659a50e52044f978713a36dc3825c7d8dadcb30ceaa772e42009e75def98be05a45dab89633a78cca1bf5f5ee40d9d5991c4d09dfc93dd989c718daf53352d70a88328ebf8d97faac268046912603b23776005d271ee2daca233ccf0f274117b35ec182cff860d909e877c43674316b80411f0a4c52358ca39d0d0eecbc706f5ff6de2c4f023d8f5875c9b4102dd1904ebfc9c22c49994d57936f503e16e010327793eec21dff86260674a9dccbb8"], 0x1168}}], 0x1, 0x40010) fcntl$setownex(0xffffffffffffffff, 0xf, &(0x7f0000000080)) socket$inet_sctp(0x2, 0x5, 0x84) sendmmsg(0xffffffffffffffff, &(0x7f0000001180)=[{{&(0x7f0000000380)=@can, 0x80, &(0x7f0000000b80)=[{&(0x7f0000000800)="35e7ca958f82768e82c2af66f5e1ac1881038686726b8074509e5672db71a0078bc151d8ef2ebcc20963423f45ada6038a6954c52dd4e35306ed5b439f9b788ee95f622d29d9d7361de3d0c79ee313bcffc463296fefb1da3a99dfad75f8b470fb962e4ffad19b0c413bca642863d046ad0f62b7d1c0aa32370c3fefb4b83e66e8d0689962a5b8f6e640d355ba", 0x8d}, {&(0x7f0000000200)="b1a482bf44fb4877e41b8e620ef3654ea79541c583e27351d1982df38bbb6985a1b89a764a7978e86d03bab3ac0bc47bf97895503326dc218f2408", 0x3b}, {&(0x7f00000008c0)="fc3ca53c2c2e5dcfa50e5367bbd4ec81959a6c771110e8a48e12e5550640a4b1403ed5b0ecac78036608a681461f162f138b8d6f3c970f018cf2672dea3f75bffa3b9f174bbde72dfd0ccf1dc90460a0f98815ec049042e31f94f7c530706489e16e684d1991a4e9bcbe", 0x6a}, {&(0x7f0000000940)="f9fb62f6eb6796469454edaecaf2d64832b017875e4a2e7c11964e03115d4c6c5fa90d5c2ccb1f7db909feb4dfb9093f812bac35ea7da0f432a3bbb87dc846688621a33f409096c2b472bbda0dcdf1", 0x4f}, {&(0x7f00000009c0)="eba05998b8497aeab8852ca37533af8b4383c073cba275986ee94de82a7c78daf05b6e8604ff46565d6341bb9f4a2d25a66b5d168d160e749917821483b94fbca1c26020e7ae4f047636751f4ead3debff6ea43cece3e2", 0x57}, {&(0x7f0000000a40)="24bcf0c42c7cfd101aa47f8a9d83bcccbf6a6bc1f61640d5e5c564501915490d83ff7f02dc1ea132faf17463cefebaf7e2e4a6fa0844833c872ec4f5deee1f62e983c91b0faaa8740d7fd8132ce3e559694decf4c974cc807e587c1ce313939d8caeea54a698a26dda1c11054e95396da5d01dd46097f8a5bd4614c30b930ddc85d30db362405625dd2f51a5ef248972047d0f7c1af3cbb4c1accf", 0x9b}, {&(0x7f0000000b00)="607ec1e10b86ad33c8a6caaae45cef89550fe1fb2835ca98cf7a89b8fbe57353c2eea310743cd2929fff8384d6f51265494924e6c7d7f1718e605605b553fa17f269a57d85047391f5ec186d7945e7ce1ecb4e8f53736d07fb07aa31888011f4", 0x60}, {&(0x7f0000001340)="b5f3a4681efc3b2049bfab28dd27077f3f4a53d320e24cb7afe6450e80f70d9e57985e4cb280c6769d5fdb9b938e317a87ba32afe7e31d2c7386c596f5dbdb8607ec961c7241bfe2c35af352ad942eb6503e9d08904043e08490e9fbd171f73fbf532c997ab50a552e442994e77a9b430ef40a6ad6ac2dfb4959a81450212bd5d2ba5d4a20913445d491d1ab399019aba29d1213033adf3bc933e2e8d3441e6acaad7fe1a4d43a1c0ec5601dce1d1e77a5300581102ab40d60f179b1dc372002b8445ae5e11f2ec4b7340c7bc156d34cf07cd3e6dfefcbcaa2018ffe101929022e2649039da779def7fae8f7b5cf6f32ebe50c2517d0367caf2f2db7a3a92c983fba50ca59a854a0637b026ac97ae91091e8a330aba1bcafebec344397c774f0a9bcc32dc37b51d3bcae2c9c6be338c83ea2c683f21ddddc04b46e4f34aa1046fe4009ef50aa433d1322d6c90d2b50fad5b429811ce1e6fccea73dd1e249b8eaa6156b1a06a15ae7600f2e6cb89e3061aa804a42d94f9bcfba7f5d3fdef4fd9bc310d1290c08a61e6fad27a6ce47040f7bccc3a2cd5d196209c970c0ca9c7a9c74bdacbcbc77475e13dc60c5cd2dae6b56be76f4ad245292992ba974b06ba9cd62f9d69d237d04d11e65400fea4adcf01f8ca5f2de87dd74d97b409f889edba759a3df133d04ccfb1b48f1b488831ea611aa413ccf526825ad70df48573391513d71933feebd9ae0610c1eb60db38b28c07484e89ad3320d9b48ee562cb71df984cebb36cfab244185e1fe9a8de0ec5bb881ad34bc24d256880fa8438ed588b64e42165779df364a55499c3d6e00f8a09972ae11ea585575c69433ca867a4806ee7a1d487d570130bb7acf1bf8e9c8f835fae88bfc52580acda51dae63c53d88f909ccfcc2a0c6392f951bf0cd106f8456f6c0b90c29341aa535431d82a9ce0bfc11e835e48c3fddbdfd1c1e54f952cadb12c63dfcff57cbeffdd83236c46c6dbf8258f1aab87a81d6c2c090ee4cafb7c16c64ac4a51784e2ac77990311620afab7cd7c58312ccb106ab267a30a24a7e446bb7e24e1c3f962ffe31c5f9a6ede854918be511096e77ea0e8dad6676ab368143f3a46aa2cafbd1dbbefbee2db5436c1b5a6608c897ea41a8c4b0ac00030d7658b59a259b76c74315df0fb3b6e21a8101844bdc3602c95171065e13fe08749c5b682d27af5ce57a830040e79b99385aea3c07ba3ff9b8f0c8fffc44708bdaef92abc9e93907ec1cf0be66e26dda72b4f927ac064e2515b8fa4289919c8e7b2abf8cbf19a07ccaed9ee54f9ade566ec460e511635066483c7bfe5148d2a4a4c026930417ca890e84facefe670ce4f9e0462cccde56e6b7da1d6990d1672616ed09c532414588340134029f85ebe772c8929570b5f06fe8fb526e48d836259c7c6e1fa4239d74d67b766bf116aa3fbf3cf0277359957b53738fc3fef2a81243a7ca863909649b08a294823e180f430d3058e117216f73e96011eaa946ca1ed5d0110d39ede53c706682474d4f88a75db0566bf29ef196921034ca6792d15df4c4c23e539d445bb03930ba5e91a44f46e6309b56eac290bef298390df372c35aadded2d6dbec4c9501df1f2cb4616a10a8aac87a740e7a8ccd1b8a4b47cec992f3612ee4d0d9a4ae24613ed05f1953ddbd4116059e4febd2148adb5450937ff0e07371d069b8c52cdc704685cc91d8931fde6e105c18fa44885315c7e82f0519f3c9d1291f3760b45cf8cbcd560ef0201fb90588d2087fb7ca1c25d0aff5703e69884ca29aea0b151d3f6ff0f1a64121ae65a40331627a32d39794bfeb68751ad1022d2472b0616a504bc2fac35e15d2c6ffbc30f183e672cb6224718ac8c7047a94052b699abd9db1daa21cbf667aca52a7d7914bba96421c8dfc78f09906ebc86838ba0ede87c59041fac40e80b9b18550a74f5c0cbc46bec6dd20d43cdbd189d9d405f8b5bd6299b094273ba9b52f750845da9e72d78e3dc590cc2cb86fe1685d44ed15ead5bea2ad2a3d022ae94a9477ad0a1ad3a2f51f2abf51cf678eef38256e3eb5fb35655614cac2efe9cbd9da1d7b2c0f6371b6f5db6d8bf5576bc825caa758496305173546baf835c3a1b9131b75d877444c19ae9f825c6ae48a1be0ac791f284fd26c55af6cc0ae0663359e4f99aff2013248901c90b8c3964b0248416abbcdba71fe2ca296fbcccf625661fecf0c7a58673c88badc9362ea7503db8c31fd7679b8e7a7cd01aa5d723b8f970f05ba1cd882b9f01f237a52e402f639714cfa2fc09111b9877e12232f5843dcf0db91508a31fa555340ec6c21c4617c0b8ab1b4f8145eda4104f62f174a0b296af1f6746b9f1e748459daf2597e8641834133bfdae33d108513df55d3162037d450e3dfac7ce6f36d15bd0f601eae0dd2cb4a4f7684db25da8851f61ead741fd47b590145b927fe9022be34b24479b8adf356195bf87296150722ed5f681472ed441b66c4f0d332bf9202c7fe55941b410046b11cf3707aed6fe276bdc2475cf6b2176f1322e7f73103bc532df744a80f1f0368b82e0fb8d7a15c499c296ae1b651c7d3c8fff952416a7f2bd2e8551f3227ee43db0dc434538832a2520a95bde1140305f5318204cc9db19fcdb0a417e3b2a0a427eea0f95f1015219406b05bdd747e5da9f265a94e47697b994a2a450a144d42b1f58146174d044b82f38b60383c7b359a6bdfc1ffb28fbef61cc4a02e955a90320950f916a018406c24d02d19158ced561dffca0dfe03795cbfde886f8e5fc167710d27ed31233ec911a4feb52227560bbc42a203fa5d8ed1ef374ef4d9740ebea753d892b75d67eae2ba81fe8792c9f0ea353826e134db5c41d072b7db5a063c8293805cfd952cb048e90cc94c1a1a5312139b3a3f3e4904adfb6dca356713a47978fbc2f3f2a61f07d261233b2f66d96f24eb266297b4b4644f34880e9b2ad9df35400c399f42cd8cfc71940b9f338ff5bc63b7b0f2172c6dea4236013c52d8628731708c4cb803024ef4b193a5a1d66f7fbc8a17d3ab6c974ef2c6994239cea71e0740491439deefab2815168fa6a9ed7d3b22abb0eec185cf179236b2f5ed8212acc3a90f02f986b4d4a5e8b13313ecf9701c90f2fd43635d417a14444c7f67d68749202133d19f9bcf6300dee9f262c66067da9e45022a8eb08866d6206b6a9783a7f92975d8dd18a13fea4ee0aedd1bd8316caab7e670243dc231476dac2efaba4b063707f17c78a5c29abb0683227500951a0df64b5e56bcd7149b909e2f38ed248b355df778cdcfe92336accdcc77081e8028a5ea98c07f547a548b5e4c0539f3484ff71cc9d63d79a475601bac12f4d30f009d9862a73d71dbbdbc26006fa9d39927b0da74cae1f44e705074bf59b8352de079af47aa5e14b5fb5dcfe628565ee7616fd5d77805438d6d0b38c8f96071c075e622330ede5003596bb36e22d1c3554d02f95742b02b963ba8276f86df497549ddb29e9e9886458dd922b3e6598032b18704f4bf3ab6f871ed3fe41125ceb39cba7dfbe5a5e4b04290de74a8deae6c2520388d8bc6ec049b718c4a2b963637b820929c7d47379a7a81e9fed731784aad17dbb79e3d534f1f9d8aacf908b84f7f93c7d005e733215c2277904a6332b958d608ef5c0bdeff6ba64de0d23be78119074c2ec6c1a85e32f55320a409c07ce81387a51abe07e643457594842b1b2724ab38ed3b8d18d3abb1e3af2c6ff2693bb1e6816e71898cf511ce399baae812e32c5ed5e195175c6114c9edbb1bac28d4008181a9ce9a431bd5cdf4d14fb8f69b15d3250b0114dfb846ea6d09069a100342721ea4a3e9f036e9606fd2da82b66d7970e39978b168e9140aaea1f66c952d4cdf01924f2c2be76348a170707053de1e1e53e685d3f93140955dec526ee3ed7aaa2924fabc7456ec7e5bb0cb8a5f5ae7a607a41efc9ffa88f39ef6ef404639b2a646712330e8ce8d6de36ef4c26b48f17b39f91852989c9e0561344328da825032629f68e8120a4f843ef1b23dd0fe5b0196a0e571b520d610e4647a3511f7f1e565d006acf73ee1d36ff9d6766a34cf84abe3dcef4e53ef73704fd031522f1528b092fd28d4da2ed459afc289ff5f870f3c3d4685241d93400726bf351e6fdba52ba4cbb94e082fe041f5da9cd4cdbf994101fe48efcf7a21d22ec49808edb8dfa96285a5893fd3f2fd62dc169bae9ba41a5b167ea6ac5de9d019a673aa6747ed3bc58ec621b85ed46467d6244c0fdd948a5fa6042789b74a71f7ce57d1c2b3f596592a1341046a088fbd5d12e4c90fadb80875fe16df0a5ba12c7421d761533ee8b7d0b4384722f8797e40648923eb5045dff769bdc1f041533cee2674f24de63a73af10c486db82168603f7c495004c170884192ba3e8c42d1da01e63f137e88c5d8cea0c26ac203c7b9ab1ed32898e63ad07a1267828dfaaa0712024820f8622e9362c0eebde9c6d78071fb0e5f6e52d98c61e85f652bf1ebce27ce2d668766c471c45f0cb6a7413430e414e26bc0a6ced4d29eb445c50844ab65685e85564b3ff08e58b34450ea6fd49ebbcb426a51a377b58503b23831f6c5546514c941d138be5a273b77b96847a02b857d6c51dcfd0dcea2836824b907f13fff84c915f3e58f9ea20fd57ab1bc0b0c4f3e796d901976d0acb87efd81296586e15263b2d525bf26534ff407a2d7baf2a8e51d237d86169389d4d52d09970ead692d602ede3940b2351210a91b1c3ad42049211a1cdc047a842041b386e69f5e6e43e3f297112c4f87017214474f9a7ff794a973e8daa5a2ce5951a4a172cbce1ea9fd9d0ff86ddf070b4e50b4e9f63dd6915fd487f3a3bcec8acf140d1b0a0e2a1011859859680d929d57b91b1d0fab27b3dd7fe1652b8d165c7dc4fd98d781f38400c22da73994467cc17cb495ac1218a546c014790ef57397ba8b55d772f9c1bd1dcd73817604f337f0f7c32e2f555a6d85bd05b59100abf06f882bd44b02128327cf1c19b892bf35716c3416a1ce8ccb7e5d2603ca1e9b99b1f29d9df58b8b2acc6403b863df74a9f7aec3aefacf31db1cb558968d9991291e81194d3ef5992d63f0dfd66288bf0fb22b6376f9436e66f6b8c4d899933ad086b7c897f1b7e05b888a7faf7d388adac0dabf6cc7bd9aff3ecf732e610dad87b72c271e81a7f61cd8980f65e5f9274078d94c957904504d6f01eaff7f09ab160f539483dc5d7d0b7fb38bc2e4bff54a32f08c6d4a76577a14e306109b0ab7c1299a8ae51ee5da4b225645ba33cc5f811e719cb743e6651c2ce6fcfe214c0bc8facc26cba7be5a39ada8eea7ebcfd421718152e6596e08211b70a6ffe36e646853f2e39145fd72c0e4fc718779e01d5297b0cc6cc86fe48e43ce8df0fc5756f4fa79b0df7c0a1d0211c99d269212c1dffa9c62723cb156dd952e077b6df8d326d2299589035fe3fb1cedee06e0b4c518e286d8b968c462f57f30fded95150c17247b2364a6e8d8377cea9e54674ba3104b4863c3a440f669b91893f68029f109c841f414e3b9100eb203e52244c45da18f5a03e2013a9d1330461e16096fce0c6d82605b32e231c06c3d3b3bb1b41bbbcf2a7fdf57fca6ae158c8f804d78d0470dc9e71bcba8ba3b6cbc042260220c39e570da1565067a73cf1b30fb5d0225b135cff45875529062a92cef6acd28475a29bfa62cf98e5fba1e359c9264c85aa3358e9c5cf4738e29a6b3da1efd760bbc116f0fe33c7da14030c6619d04904c8b27954993febbf3e5407175c79", 0x1000}], 0x8, &(0x7f0000000680)}}, {{&(0x7f0000000c00)=@caif, 0x80, &(0x7f0000000700), 0x0, &(0x7f0000000c80)=[{0x68, 0x84, 0xffffffff, "bfe6e649b08af8d806120d42ea557c4de5dcd79a822937f178ca534911e6b23bb7b479ac49b5aa670444a8d836881d52333b4569492fe686302e55502e8e6695f3f7bc2cdbcc0f7c5f4c3e8a88bf0eee415842cb40aa"}, {0xb8, 0x107, 0x101, "80114102c709eb87f8027c0f969aea14928893105d4defc94a27387c2719748483f28952c0cc8d843a111cd36aed966a7e90adfea75301da9c3560c8f5bbd5b23430bce8116e48442ae8a72557d6cd59fff74942c5e64783e56adbe33727a7689cf6d9a0881526a129d93b1ebe6c34bfda31cbcd46519b54725469c541ed906b8d3a68680a56964116b0cb44c8d7a53d810dc3d6f9713a10bdee4988ab72b4bce5cfcb0de1"}, {0x80, 0x9c, 0x3, "2369db2511ea26619aa1d6f34ef4cf55d7b2383aff99b59529c570dc74934f734480def3035d61021c9807b24d2dff1755b131aa60d00e0d5383ee0a91ba6024e04f44ec810a11aa2118b2790eedff30b5200073aafd742020db185aacfa3fb5b25a05276d8b61327857d10720cefead"}, {0xd0, 0x10e, 0x7, "c36b9d21be315e22a67e97559fcf0022f498dcf391d69ee90965a7e639919e48a86b290a020fadd985f9e960c3cafcfee1280340d812d9d9b7f21149f5bfd2a45fa32a120577addb79f8d875a6f10df349725ef2ca610a1b925538a87fee771eda78f15573af10cc1d00ac6814dbb983cbf6afb358e9ab574457b05ec92895342e6b6936caaaa0b2b50d19dc63dbf60f618f790dae3c6f5731b63a15f78c7b6beadbbb006d23ef169ef87954a0ccf1a2199d1efaaf4069139a29"}, {0x68, 0x10e, 0x537, "ab711891aa8199062b8a0118d4a5b5a02e3520c31b8c3ae113917ccd58fee6e2f1d8b4ed564729cb87e05c028430c8d2048d416dd6d59018fe87ff5d71fc8c140aaa63e506fae18b451a10aa27a97e3f4c64fec1"}, {0x30, 0x10a, 0x0, "1b4acc63aee5b8283b59a7332f632b8712a647c3998c72f3d42849ed"}, {0x88, 0x10a, 0x3, "03d248809f31e4dd3c2ed9e29a71e3776823a49861f5230e94539357c6f1448a696467ffe6661ea3dafd9906e6997700a3b257a1a0cb4fdb1a8f3c21d3ffacf4a73769b1aa5ad0944372e9680de674e74aa7302248abb502cd77737e5de79d44757e6096d1012cf16cccb2ecc7bcdc7a861777c562"}, {0x68, 0x104, 0x7, "0fb80b8ea6119d5bd51beec57429e2b2112fffa12235e9d7996444c91f7c54470bea7d27dcb806e0719caed5981b2bd84ea2eb70ee3b6455f052f87449b0f8919eced9f12820b0d52d5c88513e46b50a34f3144d6579"}, {0xf8, 0x105, 0x8, "09d30db76229a6ee406fcfd23b4a400dac59d948177202e029a3e13a6cab6f3025eda46b2bf9500d7870d8ed0ba41a275a8a7f9b03430ace059c6d8dfc88190839173724c78cf9d117a06af27c602c982bc4fa02afa8519029a5eaaa728bdf83d7c36eae5582c8ce8fb42c6815d8c610f6e9660a0d114e85e29abb20c4e106bfe98e3cb5246bbb09a8cd2f818f11b21f45c363f57e714af381651bdc7e0ac768458e62d1fb90588bddb2f7ef8f303378b5d8e1a1c2d47c0791a0c58f772936fc8f740af5b183c562e448a1b32051328f5d0277f892c693c2e1dec09dec3713a42cee6fdc12"}], 0x4f0}}], 0x2, 0x4000000) setsockopt$inet_tcp_TCP_CONGESTION(r1, 0x6, 0xd, &(0x7f00000007c0)='bbr\x00', 0x4) sendto$inet(r1, &(0x7f00000012c0)="0c268a927f1f6588b93e480941ba3860ac5cf65ac618ded8974895abeaf4b4835ef922b3f1e0b02bd60da03059bcecc7a95425a3a07e758044ab4ea6f7ae56d88fecf9141a7511bf746bec66ba", 0xfe6a, 0x20c49a, 0x0, 0x27) [ 621.633418] EXT4-fs (loop2): mounted filesystem without journal. Opts: ,errors=continue 05:37:41 executing program 1: syz_emit_ethernet(0x2a, &(0x7f0000000f00)=ANY=[@ANYBLOB], 0x0) syz_emit_ethernet(0x32, &(0x7f0000000300)={@link_local, @link_local, @void, {@ipv4={0x800, @dccp={{0x5, 0x4, 0x1, 0xa, 0x24, 0x0, 0x0, 0x0, 0x21, 0x0, @initdev={0xac, 0x1e, 0x1, 0x0}, @multicast2}, {{0x0, 0x0, 0x4, 0x1, 0x6, 0x0, 0x0, 0x0, 0x0, "f0a30b", 0x0, "03175c"}}}}}}, &(0x7f0000000480)={0x0, 0x0, [0x222, 0x0, 0x405, 0xe78]}) setsockopt$inet6_tcp_int(0xffffffffffffffff, 0x6, 0x0, 0x0, 0x0) perf_event_open(&(0x7f0000000100)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, 0x8, 0x0, 0x9, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) socket$inet6_tcp(0xa, 0x1, 0x0) clone(0x80000100, 0x0, 0xfffffffffffffffe, 0x0, 0xffffffffffffffff) add_key$fscrypt_v1(&(0x7f00000000c0), &(0x7f0000000180)={'fscrypt:', @desc2}, 0x0, 0x0, 0xfffffffffffffffd) syz_emit_ethernet(0x210, &(0x7f00000005c0)=ANY=[@ANYBLOB="aaaaaaaaaaaaaaaaaaaaaaaa884800000000000000000000000000000000000000000000000000000300000000000000000065fac20601b611010000000000000000000000000000000000000000000000000000ffffac1e0001ff09000000000000072000000003066805008b000000000000000000000001000000b701000000000000"], &(0x7f0000000800)={0x0, 0x3, [0x0, 0x0, 0x32c, 0x966]}) syz_emit_ethernet(0x36, &(0x7f0000000100)={@local, @dev, @void, {@ipv4={0x800, @tcp={{0x5, 0x4, 0x0, 0x0, 0x28, 0x2000, 0x0, 0x0, 0x4, 0x0, @remote, @local}, {{0x0, 0x4e22, 0x41424344, 0x41424344, 0x0, 0x6, 0x5}}}}}}, 0x0) syz_emit_ethernet(0x0, 0x0, 0x0) syz_emit_ethernet(0x0, 0x0, 0x0) [ 621.704462] audit: type=1804 audit(1636177061.151:555): pid=31731 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=invalid_pcr cause=ToMToU comm="syz-executor.2" name="/root/syzkaller-testdir287298015/syzkaller.487DXh/50/file0/file0" dev="loop2" ino=17 res=1 05:37:41 executing program 0: r0 = socket(0x1e, 0x4, 0x0) sendmsg$nl_route_sched(r0, &(0x7f0000000180)={&(0x7f0000000040), 0xc, &(0x7f0000000080)={&(0x7f0000000100)=@delqdisc={0x58, 0x25, 0x1, 0x70bd29, 0x25dfdbfb, {0x0, 0x0, 0x0, 0x0, {0x0, 0xc}, {0xf, 0x5}, {0xb, 0xfff3}}, [@qdisc_kind_options=@q_sfb={{0x8}, {0x2c, 0x2, @TCA_SFB_PARMS={0x28, 0x1, {0xfffffffe, 0xab, 0x8, 0x1f, 0x0, 0x8000, 0xd5af, 0x9, 0xfffffffa}}}}]}, 0x58}, 0x1, 0x0, 0x0, 0x40010}, 0x8002080) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:41 executing program 2: r0 = socket$nl_route(0x10, 0x3, 0x0) sendmsg$nl_route(r0, &(0x7f0000000080)={0x0, 0x0, &(0x7f0000000140)={&(0x7f0000000280)=ANY=[@ANYBLOB="3c020000000000000000030000000000b4ecd6b8", @ANYRES32=0x0, @ANYBLOB="00000000000000000800168004000280140003006d6163766c616e310000000000000000"], 0x3c}}, 0x0) [ 621.831108] audit: type=1800 audit(1636177061.201:556): pid=31722 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=collect_data cause=failed comm="syz-executor.2" name="file0" dev="loop2" ino=17 res=0 05:37:41 executing program 1: r0 = socket$nl_route(0x10, 0x3, 0x0) r1 = socket(0x11, 0x800000003, 0x0) r2 = openat$mice(0xffffffffffffff9c, &(0x7f0000000080), 0x2000) sendmsg$nl_route_sched(r2, &(0x7f0000000280)={&(0x7f00000001c0)={0x10, 0x0, 0x0, 0x8000000}, 0xc, &(0x7f0000000240)={&(0x7f0000000200)=@gettfilter={0x3c, 0x2e, 0x800, 0x70bd28, 0x25dfdbfc, {0x0, 0x0, 0x0, 0x0, {0xe, 0x8f6a3a92e0cc3f03}, {0xa, 0xf}, {0x2, 0x6}}, [{0x8, 0xb, 0x80000000}, {0x8, 0xb, 0x1}, {0x8, 0xb, 0x1}]}, 0x3c}, 0x1, 0x0, 0x0, 0x8000}, 0x800) bind(r1, &(0x7f0000000100)=@generic={0x11, "0000010000000000080044944eeba71a4976e252922cb18f6e2e2aba000000012e0b3836005404b0e0301a4ce875f2e3ff5f163ee340b7679500800000000000000101013c5811039e15775027ecce66fd792bbf0e5bf5ff1b0816f3f6db1c00010000000000000049740000000000000006ad8e5ecc326d3a09ffc2c654"}, 0x80) r3 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r3, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r3, 0x0, 0x0) getsockopt$inet_pktinfo(r1, 0x0, 0x8, &(0x7f0000000300)={0x0, @multicast1, @loopback}, &(0x7f0000000340)=0xc) sendmsg$nl_route(r3, &(0x7f0000000400)={&(0x7f00000002c0)={0x10, 0x0, 0x0, 0x10100}, 0xc, &(0x7f00000003c0)={&(0x7f0000000380)=@ipv4_getnexthop={0x2c, 0x6a, 0x1, 0x70bd28, 0x25dfdbff, {}, [@NHA_ID={0x8}, @NHA_OIF={0x8, 0x5, r4}, @NHA_FDB={0x4}]}, 0x2c}, 0x1, 0x0, 0x0, 0x40005}, 0x4000000) r5 = openat$ubi_ctrl(0xffffffffffffff9c, &(0x7f0000000480), 0x20440, 0x0) setsockopt$inet_udp_encap(r5, 0x11, 0x64, &(0x7f00000004c0)=0x5, 0x4) getsockname$packet(r1, &(0x7f0000000000)={0x11, 0x0, 0x0, 0x1, 0x0, 0x6, @dev}, &(0x7f0000000040)=0x14) sendmsg$nl_route(r0, &(0x7f0000000180)={0x0, 0x0, &(0x7f00000000c0)={&(0x7f0000000440)=@ipv6_newaddr={0x40, 0x14, 0x121, 0x0, 0x0, {0xa, 0x0, 0x0, 0x0, r6}, [@IFA_LOCAL={0x14, 0x2, @loopback}, @IFA_CACHEINFO={0x14, 0x9, {0x2}}]}, 0x40}}, 0x0) [ 621.913924] audit: type=1800 audit(1636177061.201:557): pid=31731 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=collect_data cause=failed comm="syz-executor.2" name="file0" dev="loop2" ino=17 res=0 05:37:41 executing program 0: r0 = socket(0x1e, 0x4, 0x0) ioctl$FS_IOC_GET_ENCRYPTION_POLICY(r0, 0x400c6615, &(0x7f0000000040)={0x0, @aes256, 0x0, @desc1}) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000003, 0x0, 0x3}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:41 executing program 2: getpgid(0x0) r0 = creat(&(0x7f0000000080)='./bus\x00', 0x0) ftruncate(r0, 0x1) r1 = open(&(0x7f0000000100)='./bus\x00', 0x141042, 0x0) fallocate(r1, 0x20, 0x0, 0xfffffefe000) fallocate(r1, 0x0, 0x0, 0x10000101) r2 = open(&(0x7f00000000c0)='./bus\x00', 0x0, 0x0) sendfile(r0, r2, 0x0, 0x8400fffffffa) sendfile(0xffffffffffffffff, 0xffffffffffffffff, &(0x7f0000000240), 0x7fff) r3 = open(&(0x7f0000000040)='./file0\x00', 0x141042, 0x0) write$P9_RREADLINK(r3, &(0x7f0000002580)=ANY=[], 0x16) sendfile(r3, r3, &(0x7f0000000240), 0x7fff) ioctl$FICLONE(0xffffffffffffffff, 0x40049409, r3) ioctl$BTRFS_IOC_BALANCE_PROGRESS(0xffffffffffffffff, 0x84009422, 0x0) lseek(r0, 0x0, 0x4) sendmsg$BATADV_CMD_GET_MESH(0xffffffffffffffff, &(0x7f0000000240)={0x0, 0x0, &(0x7f0000000480)={0x0}}, 0x0) sendmsg$BATADV_CMD_GET_MESH(0xffffffffffffffff, 0x0, 0x0) [ 622.331297] audit: type=1804 audit(1636177061.781:558): pid=31756 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=invalid_pcr cause=open_writers comm="syz-executor.2" name="/root/syzkaller-testdir287298015/syzkaller.487DXh/52/bus" dev="sda1" ino=14705 res=1 05:37:41 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) mmap(&(0x7f0000ffe000/0x1000)=nil, 0x1000, 0x1, 0x11, r0, 0xb83ee000) 05:37:41 executing program 4: clone(0x83000, &(0x7f0000000000)="7f70c0ecb904a5fd01960eefcbf4a674463f55b1c313ff2d64f383a4cff8cf04645a6cb43ffaecdc07fa7ebc69b3f9ad7e75fdedf8b508002e556b0ae01d53b4f6af1badd96087db6bcf60ae51a6e0697033bbb4bee00f1151530054aae3d7b5bcb1b791f13625", &(0x7f0000000080), &(0x7f00000000c0), &(0x7f0000000100)="f7422d3af90808655a63133b13c831e7a93ef52bc111739dba36c57d270d33d5161a8fc99dfb60874880563d88aa2a63dbe590edce7eff21c21781c80cf7e50371c6e034a66cef18c38edd271fec41924c1da5114a04892e9d5e9d1e4736a52d3d5c39c7305bbc201107ef7604db630eca94f2852ead91ac64a8138d2b4466353fef32339194d77f3d503ae999ddad39166cdc5827d7d4") 05:37:41 executing program 1: perf_event_open(&(0x7f0000000040)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x50d, 0x0, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_config_ext={0x54, 0x8}, 0x40400, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb06, 0x0, 0x200000000000}, 0x0, 0xfff7ffffffffffff, 0xffffffffffffffff, 0x8) r0 = memfd_create(&(0x7f0000000240)='\x103q}2\x9a\xce\xaf\x03\x86\xe7\xc0\x14\x8f\xf8\xd28\xf4\x1c\xc0\xf9\x1c\xa6\xab\bi\xe4^\xd5\xfd\xa9\r\xac7A\x94\xeb\xcd\t\x00\x90k\xd6\x05\r\x84\x87\x1c\b\x8c`\xea\x13A\x90m\xb6&\xd0\x9daA\xc5\xb8_\xd4\x18,\f\xd4s\xb2\x99/\xc0\x9a\xf2O\xdb\xc0\x8b\x19\x17\xb7Rvd\xcb:\b', 0x0) ftruncate(r0, 0x80079a0) mmap(&(0x7f0000200000/0x400000)=nil, 0x400000, 0x0, 0x2012, r0, 0x0) ioctl$EXT4_IOC_SWAP_BOOT(0xffffffffffffffff, 0x6611) mprotect(&(0x7f0000000000/0x800000)=nil, 0x800000, 0x2) clone(0x0, 0x0, 0x0, 0x0, 0x0) bind(0xffffffffffffffff, 0x0, 0x0) r1 = gettid() process_vm_writev(r1, &(0x7f0000000000)=[{&(0x7f00008f9f09)=""/247, 0xf7}], 0x1, &(0x7f0000121000)=[{&(0x7f0000217f28)=""/231, 0xffffff4e}], 0x23a, 0x0) perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x41c1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_config_ext={0x0, 0x80000000}, 0x14040}, 0x0, 0xfdffffffffffffff, 0xffffffffffffffff, 0x0) openat$bsg(0xffffffffffffff9c, 0x0, 0x0, 0x0) bind$tipc(0xffffffffffffffff, 0x0, 0x0) dup2(0xffffffffffffffff, 0xffffffffffffffff) sendmsg$rds(0xffffffffffffffff, &(0x7f0000001680)={&(0x7f0000000100)={0x2, 0x4e23, @loopback}, 0x10, &(0x7f00000015c0)=[{&(0x7f00000002c0)=""/13, 0xd}, {&(0x7f0000000300)=""/4096, 0x1000}, {&(0x7f0000001300)=""/23, 0x17}, {&(0x7f0000001340)=""/224, 0xe0}, {&(0x7f0000001440)=""/187, 0xbb}, {&(0x7f0000001500)=""/132, 0x84}], 0x6, &(0x7f0000001640)=[@zcopy_cookie={0x18, 0x114, 0xc, 0x6b}], 0x18, 0x20000005}, 0x4c8c0) lseek(0xffffffffffffffff, 0x101, 0x0) r2 = mq_open(&(0x7f0000000140)='eth0\x00)m\xb7w`\x1c%e\xd1\n1\x94\xc0\t>C\x98\xf1\x85*a@{9z\b\x00\x18\xa0]\x19ST\x1b;)\x92sI\xbe\x02Nx\x11\x88\xc7\x93\x02\x88\x1cm\r\x1b\t\xb3$\xff\x9b\xe9\x95\xca\xd4D\x90\xbe)\x89o\xd1\x91\x8c\x12s*(\xaf\xf1\x1e\xfb+\xc9\xfc\x04\xc7\x9b\xba\x0f\x90e\xe6l\x1f\xd3\x98\xd4\xb6\xfe\xc6\xe7\x7f\xc1\xe1\xc9\xb6f31\xc9\xf3\xf7\xafed:\xbc<\xc59IP\xb3\xdb\xf0\xd6r\x94\xb4\xeb6\xe2\x0f\x06L\xd2\xa6\x11\xca\xff\xe9u\x00\xa8+\xae\x8c\x11\x93\xee\xd5\x97\xbf\xf2\v\xf0*f\xbc\xeb\x7f\xb0\xeb\xab\xa3@%\xff\xfa\x93m{{y\xf4\xf4.\x801\x17\xae\r\x11\x16\xe0\xe0\x81\xc4\x99E\xf1I\xb9#\xa0\x9e\x9a\xa7dg\\\xcbt\xe8\xee\x03\xb8vT\xbcW\xd3p\x94x\x03\x00\x86&\xa3>i\xd0\x94\x11\xf1', 0x842, 0x0, 0x0) mq_timedreceive(r2, 0x0, 0xed9fc23d, 0x0, 0x0) openat(0xffffffffffffffff, &(0x7f00000000c0)='./file0\x00', 0x0, 0x0) clone(0x0, 0x0, 0x0, 0x0, 0x0) 05:37:42 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) r1 = syz_open_dev$vcsn(&(0x7f0000000040), 0x3, 0x410003) ioctl$ifreq_SIOCGIFINDEX_team(r1, 0x8933, &(0x7f0000000080)) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:42 executing program 4: syz_genetlink_get_family_id$smc(&(0x7f0000000040), 0xffffffffffffffff) ioctl$BTRFS_IOC_GET_FEATURES(0xffffffffffffffff, 0x80189439, &(0x7f0000000000)) r0 = socket$nl_xfrm(0x10, 0x3, 0x6) sendmsg$nl_xfrm(r0, &(0x7f0000000140)={&(0x7f0000000080)={0x10, 0x0, 0x0, 0x20000}, 0xc, &(0x7f0000000100)={&(0x7f0000000200)=@newae={0xec, 0x1e, 0x100, 0x70bd27, 0x25dfdbff, {{@in=@private=0xa010100, 0x4d3, 0xa, 0x32}, @in6=@rand_addr=' \x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01', 0x6, 0x3505}, [@replay_val={0x10, 0xa, {0x70bd28, 0x70bd2a, 0x7}}, @lifetime_val={0x24, 0x9, {0x101, 0xda8, 0xd2d5, 0x2}}, @XFRMA_SET_MARK={0x8, 0x1d, 0x8}, @sec_ctx={0x55, 0x8, {0x51, 0x8, 0x0, 0x20, 0x49, "1aa8d20e8f2323129d7cb3758e78f1372f6804c5b29c416e9f8d99c564991ea3df85d5214593e05801e528c203dcf5e726cc8701b0de64ccadc70f0255f3e96b4c2738f41e50019087"}}, @etimer_thresh={0x8, 0xc, 0x8a34}, @replay_val={0x10, 0xa, {0x70bd2c, 0x70bd27, 0x61}}]}, 0xec}, 0x1, 0x0, 0x0, 0x20000040}, 0x4) sendmsg$nl_xfrm(r0, &(0x7f00000001c0)={0x0, 0x0, &(0x7f00000000c0)={&(0x7f0000000400)=ANY=[@ANYBLOB="040100001a0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cb0e87ebdeaa7d2d41710f415eecdefeb4dcf4f6372e0344dc0575dceb564378b8baae0eba7dd1a88270a07c63c33aebf3c1143a3d18330c91ebf4239e932134691ae7887c3d8f89520d94005f7fffeeebb6b2a9b18c7acc301589deb243c60664a590fe6888466b070c8ef993691484fa6abd2f6130a758a6ec59264342bb30dfbc82f9e6f26d43ffe945f31fa6110eca66a07eddde77419810183acda0b2d75b993b82871ada29a598b7ba53a863a946fe8d2d505f0899ed31086f633a39aa287ab05244e0fa41d86ad83ebca98f865e19460dd4b31c327343968d1c17f148774ea4a", @ANYRES32=0x0, @ANYRES32, @ANYBLOB="ff020000000000000000000000000001000004003c000000ac1e000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000014000e00"/188], 0x104}}, 0x0) 05:37:42 executing program 0: r0 = socket(0xb, 0x80000, 0xb) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) r1 = socket(0x1e, 0x4, 0x0) r2 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r2, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r2, 0x0, 0x0) dup2(r1, r2) r3 = socket(0x1e, 0x4, 0x0) r4 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r4, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r4, 0x0, 0x0) dup2(r3, r4) setsockopt$packet_tx_ring(r3, 0x107, 0xd, &(0x7f0000000080)=@req={0x1, 0x200, 0xfffff801, 0x23}, 0xffffffffffffffde) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name={0x1e, 0x2, 0x1}, 0x10, 0x0, 0x0, 0x0, 0x0, 0x40000}, 0x0) [ 622.727700] netlink: 20 bytes leftover after parsing attributes in process `syz-executor.4'. [ 622.758408] netlink: 20 bytes leftover after parsing attributes in process `syz-executor.4'. 05:37:42 executing program 4: r0 = bpf$PROG_LOAD(0x5, &(0x7f0000000200)={0xc, 0xe, &(0x7f0000000b80)=ANY=[@ANYBLOB="b702000003000000bfa30000000000000703000000feffff7a0af0fff8ffffff79a4f0ff00000000b7060000ffffffff2d6405000000000065040400010000000404000001007d60b7030000000000850000000d000000b70000000000000095000000000000002c3f2cc2b7954244cef7baf48e6d2885a09a87507ebf4e43bc0609b199b6ed90e0596acec976e57309ebcdac5f7a860c00269c781f6428457253e89ad528d985636a86ec0f60f5a6d1159a2c2e85d726859a919cc9548a349980d1ccdce27f94bc074c27f81070545cab415b0d7ff0575cc2727e8d974927676468ff2d86e0ffac94712ed9cf6b40b3cf252a47c05af3a30d57cc3ed67d1867b54d24e2da18568c3b0f24b52616bf84d3b042d6e432cd0e3b57239f0127473e6ba922aff649609d40b47ec331ccba3ce8f530ffff19a6471bf5abc742d9cbcfb964b13831034694a6aad86cf08a2c7b2235dc99de9aa3e6b77c7a2877261ed72da90864987f30926c9013eec3b86836ae504479f60b0ec920ae654d2b85627aa5a79f37eeae3023a8499800000000008f02712c3d8fc4e2686e21a855e823887196d4f4e91f0000000000000092be4d6852ebf81866adbbdb0015f89e9939bc424d1bafe5725c8a4047b91da3768c1ca6a4410009f95d5ba21068285afa8d3b4a68cdb887af2c85c2d9ab09b5dd7d3c4406d2d7650bf7b2ff4602aec1eea200000064881c560c371a08e051374cf05c921a06fb78183e7e68de9dabe35f1a5d50f20209eec6eb2c510b2cc8d95e4e5b365d1e1298f431432010e1004dae58b3b5b89709b0ff47b200000000000000cbefd9a6bb70f60eb9c0557c67a1d9f00e1dd2fc79a957c84f2369dcd548b3d360c4b85e4d961498f3a80131d21d856177a2189f45d011ef1da5c6da7bb8fd387ccea9c3899a914e323f9273a5d84f62d1f941f35d797e05a61e3d7976ca168e88d7a9af94b04a37387bfffab9abbb31fa8cfe000000000000000000"], &(0x7f0000000340)='syzkaller\x00', 0x0, 0x0, 0x0, 0x0, 0x0, '\x00', 0x0, 0x0, 0xffffffffffffffff, 0x8, &(0x7f0000000000), 0x8, 0x10, &(0x7f0000000000)={0x0, 0x0, 0x0, 0x3}, 0x10}, 0x78) r1 = bpf$PROG_LOAD(0x5, &(0x7f0000000080)={0x1, 0x5, &(0x7f00000017c0)=ANY=[@ANYBLOB="bf16000000000000b7070000000100004870000000020000500000000000000095000000000000002ba728041598d6fbd30cb599e83d24a3aa81d36bb3019c13bd23212fb56fa54f2641d8b02c3815e79c1414eb07eae6f071326bd917487960717142fa9ea4318123341c0a0e168c1886d0d4d94f204e345c652fbc1626e3a2a2ad35806150ae0209e62f51ee988e6e0dc8ce974a22a550d6f97080980400003e05df3ceb9f1feae5737ecaa80a666963c474c2a100c788b277beee1cbf9b0a4d3881dcc7b1b85f3c3d44aeaccd3641110bec4e90a6341965c39e4b3431abe802f5ab3e89cf6c662ed4048d3b3e22278d00031e5388ee5c867ddd58211d6ececb0cd2b6d3a02762c2951257b85802189d74005d2a1bcf9436e192e23fd275985bf31b714f000bcab6fcd610f25f5888b2a858ab3f11afc9bd08c676d2b89432fb465bc52f49129b9b6150e320c9901de2ebb9000000018e3095c4c5c7a156cec33a667dccaff950ca1e5efdd4c968dacf81e65998b9091957d1d11a5730ba430481824a3f4fddd3c643f630ba175d876defd3541772f26e27c44cfdb2d85d6d29983e830a9cdd1d0a017c100344c52a6f387a1340a1c8889464f90c2870ce1a2c02dec4cd1f570dd39877dfb2ff1ae66e1ce917474b2e650ae610afd01409d9a337ac5d580500000023257c872c5255f22bd8b325d9b76e57f041b665ab21372c8d8b7bac5b5c784d20a4a24d8dbd75062e1daef9dead619cc6e7baa72707157791c3d2a286ffb8d3545236c2a86834f7ecbd53f950ef4709f53594ef4839c6130c4c13a0cca84b9935f771fd49e480cd9d48aeb12b1d255be1ed66d9051f22614d1f62734d679039a97d2b74f9e8e97f4e8e7025123e783df8b8a17e3aa9fe1f662aef87a09c502f9a65b4dfe4f1b56e1f23128d743753a1de172d683d5892ce9414a1d98ea93e3d35dbb6c23b90cf36e83b8a434ab422d2bcd7ce6dfc06302e69d384146056d125cfa788237874dd913d033277e88d10acd06864eac44c42dae334bdc32f819a2aa24dba7945ff73940b4c4f63483026b5e34d44705b76ef29241adab0dd7d68bf975e02069f6f2425e1bc976d965ddabb01aff9f27dc1d9a4a3d588085f16bef63a06578d4f5de7bfb6aaa75f16996d020000002284cb1d3a6fb8cae87691fae365a70c3f15871565bba8dd8a8ca049f798abe646f738bebd29413afc9d8a5edd7a19ca6a57b5a8fa7e1e6c2f2a287c5278a218dbe173ec6900a13db5cfa6819eb1d39c48cfdc80d215c9e16e0c4736c819363154cca4e2f89800d18c89d7f46f679df6c9e2952ae1ebfd0ca88368ee6ce139e8b5822422cf2e9dde943d34c432e1080071792c65986146666a549092398af45ba38c41f47e0fffeac41824ca1fd0eb71aa243c88d5480e5aee9c9e5f2e5a5628995b1531bd20360d33d8f9ffffff5f912a93e34bf6ea8a1850c4f83306dbca02ee3686da707b6d85db491ba0cc98f6be92c55969a2b52a25419d1476c73132ca7ca26ce8a7e3ffb700f09e157f9bc31f09d314844051f1a642aca9ff98c9036471ccff0522903e7bcf62e18f7696bbc280b95e8e0d6fd5644b0ebde3a95b06548862de809d3dae3cccf109f7c78e8479a345e800000000000000000000009455bf417627ce723a5d9103706aba69279500bb82f6b5a3ddc0bd9856712945b70c75ce5b722578820820d010d7a37d0b92ef26ab708c0b19ed144be51c3b398f0e6bb7a300bb8b3b3fcba12953d58cff0f0378740fe66637bc63568bfc5ab87b97d8e7cdb047050d7296cd3856476a60a49ad127ba6570bafc2bbcf9ee721fd9cb467ff071e5604fbf049124f2dd226b7d932d7a6fde4c4aa433fce840aff7c47da3a4c6966d881819dfd413dd83f6bfbae29e8a6e2a889f6ef6869d82d6bdb2d876b65c7a35a54a4a6b8ad4600ed5972a0bb5971a5f16590b0a03dafa3fd1118765cc8ab9fccf3b51c41a339f200f2fa33006910a679a265f4d4da448a7a0d19c5e43eaf65731609dfa2dde267551467eb657839cc77012cc449009981f22820e57a03432cc14ee1abe724adb6b5431befedd3e22971118f0e21aed1823cb7dde8212a8531bd9691dd4cc6a370e9eb56b3d790b98f2bd0db1e5de6a146597b2cbb7103040d2a39d7965d34df524b760ab92efcce7dd1574052c735937bf6a752c015c7f5ffee9ff66e5dd2866b15b6e0d17618cb1f5c1ee4b05ebf1445ea110f40400000000000000725556351ee25fe09f69494b053678dcadcf02e063dff2fa4bef1ac3bba5be6c74d71ec3b43e29895eff1d1017024fe3e8cc759b0000000000"], &(0x7f0000000140)='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, '\x00', 0x0, 0x0, 0xffffffffffffffff, 0x8, &(0x7f0000000000), 0xfffffffffffffe89}, 0x48) r2 = socket$kcm(0x11, 0xa, 0x300) setsockopt$sock_attach_bpf(r2, 0x1, 0x32, &(0x7f0000000040)=r1, 0x4) perf_event_open(&(0x7f0000000180)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xbfffffffffffffff, 0xffffffffffffffff, 0x0) bpf$BPF_PROG_TEST_RUN(0xa, &(0x7f00000000c0)={r0, 0x20e, 0x69, 0xfd000000, &(0x7f00000004c0)="b91803b700030703009e40f086dd1fff060000000000008477fbac141434e0080001c699da153f23e0e6e380f60104f683317585d7473f1cab4439f0f570ff155bc5f73ba3f8bb99a6e8ded1ce485cf058105cd981b42493481cd659416a2e10c9119664f36eb00b333c20c9ec0c222d644bdcb178c1cc53d6960fbb842d6a33dfcde3a1e1848135214baf139753866cadcbe3ce52505e992818cc452bee339d9ab076f484020eaa348a21d7911e4c44905256ec2cc54cca47a198b00c10aff62a4bed43a2ebcad92743fb22c593f28fd4bb7c703cde9cae0569d4c8d9a823f2c12863f7a6c0cf88ed22aae4f6f084508833b61429a25773eedf63dd9f33d430f2a0a30a7761db16fe0f743b95ded898c28aac1256ce2751b3d738899b8b19d9052b7f13ff94", 0x0, 0x31, 0x6000000000000000, 0xfffffffffffffe7e, 0x1d4}, 0x28) setsockopt$kcm_KCM_RECV_DISABLE(r2, 0x119, 0x1, &(0x7f0000000280)=0x6, 0x4) 05:37:42 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001, 0x2e69, 0x5, 0x0, 0x3}, 0x1c) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f00000001c0)={&(0x7f0000000040)=@name={0x1e, 0x2, 0x3, {{0x2, 0x2}, 0x4}}, 0x10, &(0x7f00000002c0)=[{&(0x7f0000000080)="040a9dc1041ec474b349ec94d2b1e38cffc897d8cf1f22144c74b8e37e130a4c38ed41177f7d6299127be2cf", 0x2c}, {&(0x7f0000000200)="b272694cd6e1daa336a5b098f9dcfce470e5c6259c6f97b5df26b77647a67e3eb8030425922a6c5d411cb3ed10710e03d57d730a05395da846a8eed266e06d2c9cee86e2cddb86c5e162a01780701e951cd692be20d94adfe49d9fc01389484912d45b0ccbcbafe9cd2a0f0286a23c752da427b353d8f406c640e90e0c6869af79586bba", 0x84}], 0x2, &(0x7f0000000100)="fcb88a4ca6c788cafa518b42c889490f1cd52e1582e20680fafaf698637994951a15ed44dc23f58873d8092b1a5be08eece1300fea597ab4d922f4d5ff5cbeff1aacefe4fa2327eb624f7cfb34f4e63dab228f825cbea1bb8a22d8105abbd297e7d0668dc05c8215104f6b7bcb2bf94baba82b20882e703694204e13d50f08c07e2084f7fcc2e797bdd3bfe98a806dfaeec545cd44435ad3ef57fcfa060ea242965fdacd785fb900a2", 0xa9, 0x4000}, 0x4024000) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) r1 = openat$dlm_plock(0xffffffffffffff9c, &(0x7f0000000300), 0x2000, 0x0) setsockopt$TIPC_GROUP_JOIN(r1, 0x10f, 0x87, &(0x7f0000000340)={0x40, 0x4, 0x1}, 0x10) [ 623.101514] audit: type=1804 audit(1636177062.551:559): pid=31768 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=invalid_pcr cause=ToMToU comm="syz-executor.2" name="/root/syzkaller-testdir287298015/syzkaller.487DXh/52/bus" dev="sda1" ino=14705 res=1 05:37:42 executing program 0: prctl$PR_SET_MM_MAP_SIZE(0x23, 0xf, &(0x7f0000000380)) r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) ioctl$AUTOFS_DEV_IOCTL_CATATONIC(0xffffffffffffffff, 0xc0189379, &(0x7f00000003c0)={{0x1, 0x1, 0x18, r0}, './file0\x00'}) r2 = socket$inet(0x2, 0x4000000000000001, 0x0) bind$inet(r2, &(0x7f0000000040)={0x2, 0x4e23, @multicast1}, 0x10) sendto$inet(r2, 0x0, 0x10b, 0x200007fe, &(0x7f0000000100)={0x2, 0x10004e23, @dev={0xac, 0x14, 0x14, 0xa}}, 0x10) sendto$inet(r2, &(0x7f0000d7cfcb), 0xffffffffffffffef, 0x58f7, 0x0, 0x53) ioctl$LOOP_SET_FD(r1, 0x4c00, r2) bind$tipc(r0, 0x0, 0x0) sendmsg$inet(r0, &(0x7f0000000340)={&(0x7f0000000040)={0x2, 0x4e23, @local}, 0x10, &(0x7f0000000080)=[{&(0x7f0000000100)="d547b881a9fb428466438168bd84679be3f724a4d2b0b6271a4b7ec1665adf35999d98cbcc73ab7c1f9876e851657d73a28aaf8da8b60fe0f6343ff3e99e5906c91e9545280ca7c85e240937f42d3ca603bdb97f3dfa2cc0db1135c642c7eb1184444c3ab2c14725a3c2989ff44cac98663f296dd71f697c5a47ead39b6b2666290923a51e7728563d124cc6a9e0658e89961cbc526271814ba8dc4bcd10f25b45ef9a554adf8943c5359b04dcdff98a95f3e566b73659fb9f62105a1e407c71c341560fd7409bbabd9235", 0xcb}], 0x1, &(0x7f0000000200)=[@ip_ttl={{0x14, 0x0, 0x2, 0x48b2}}, @ip_tos_u8={{0x11, 0x0, 0x1, 0x7}}, @ip_retopts={{0xb4, 0x0, 0x7, {[@cipso={0x86, 0x3d, 0xffffffffffffffff, [{0x1, 0x3, "03"}, {0x5, 0x10, "d5839c96f42aaa08ff7edfc4b416"}, {0x1, 0x5, "e184c9"}, {0x0, 0x2}, {0x6, 0x11, "e56b9f888045c5fc7f74d44ab929dd"}, {0x2, 0xc, "2ae1122ce8a37420ca23"}]}, @timestamp_prespec={0x44, 0x14, 0x2c, 0x3, 0x7, [{@broadcast, 0x1ff}, {@private=0xa010102}]}, @lsrr={0x83, 0xb, 0xa0, [@multicast2, @remote]}, @rr={0x7, 0x7, 0xea, [@broadcast]}, @generic={0x86, 0x6, "e68e19c9"}, @rr={0x7, 0x2b, 0x33, [@private=0xa010100, @initdev={0xac, 0x1e, 0x0, 0x0}, @initdev={0xac, 0x1e, 0x0, 0x0}, @private=0xa010102, @loopback, @local, @dev={0xac, 0x14, 0x14, 0x40}, @empty, @loopback, @multicast1]}, @generic={0x83, 0xd, "1c78acf03ebcdf3c854d8a"}]}}}, @ip_tos_int={{0x14, 0x0, 0x1, 0x2}}, @ip_ttl={{0x14, 0x0, 0x2, 0x4}}, @ip_tos_int={{0x14, 0x0, 0x1, 0x16aa}}], 0x130}, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) [ 623.301335] audit: type=1804 audit(1636177062.751:560): pid=31802 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=invalid_pcr cause=ToMToU comm="syz-executor.2" name="/root/syzkaller-testdir287298015/syzkaller.487DXh/52/bus" dev="sda1" ino=14705 res=1 05:37:42 executing program 2: syz_open_procfs$namespace(0x0, 0x0) r0 = openat$cgroup_ro(0xffffffffffffffff, &(0x7f00000005c0)='cpuset.effective_cpus\x00', 0x0, 0x0) openat$tun(0xffffffffffffff9c, &(0x7f0000000100), 0x0, 0x0) ioctl$TUNATTACHFILTER(0xffffffffffffffff, 0x401054d5, 0x0) perf_event_open(&(0x7f0000000800)={0x1, 0x80, 0x0, 0x8, 0x0, 0x0, 0x0, 0x41c1, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, @perf_bp={0x0}, 0x92e3, 0x0, 0x0, 0x0, 0x3}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) clone(0x2000100, 0x0, 0xfffffffffffffffe, 0x0, 0xffffffffffffffff) r1 = socket$inet_sctp(0x2, 0x5, 0x84) setsockopt$ARPT_SO_SET_REPLACE(0xffffffffffffffff, 0x0, 0x60, 0x0, 0x0) setns(0xffffffffffffffff, 0x2000000) setsockopt$ARPT_SO_SET_REPLACE(r1, 0x0, 0x60, &(0x7f0000000000)={'filter\x00', 0x4, 0x4, 0x400, 0x210, 0x108, 0x210, 0x318, 0x318, 0x318, 0x4, 0x0, {[{{@arp={@multicast2, @empty, 0x0, 0x0, 0x0, 0x0, {}, {@mac=@remote}, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 'veth1_to_bridge\x00', 'ip_vti0\x00'}, 0xc0, 0x108, 0x340, {0x30030000, 0x4}}, @unspec=@IDLETIMER={0x48, 'IDLETIMER\x00', 0x0, {0x7fff, 'syz0\x00'}}}, {{@uncond, 0xc0, 0x108}, @unspec=@IDLETIMER={0x48, 'IDLETIMER\x00', 0x0, {0x28, 'syz1\x00'}}}, {{@uncond, 0xc0, 0x108}, @unspec=@IDLETIMER={0x48, 'IDLETIMER\x00', 0x0, {0x3a, 'syz0\x00'}}}], {{'\x00', 0xc0, 0xe8}, {0x28}}}}, 0x450) clone(0x100800, 0x0, 0x0, 0x0, &(0x7f0000000b00)) sendmsg$nl_route(0xffffffffffffffff, &(0x7f0000000000)={0x0, 0x0, &(0x7f0000000140)={0x0, 0x3c}}, 0x0) ioctl$ifreq_SIOCGIFINDEX_batadv_mesh(0xffffffffffffffff, 0x8933, &(0x7f0000000640)) setns(r0, 0x4000000) [ 623.393726] audit: type=1804 audit(1636177062.751:561): pid=31804 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=invalid_pcr cause=open_writers comm="syz-executor.2" name="/root/syzkaller-testdir287298015/syzkaller.487DXh/52/bus" dev="sda1" ino=14705 res=1 05:37:42 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req={0x1, 0x10000, 0x6, 0x800006}, 0x10) bind$tipc(r0, 0x0, 0x0) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name, 0x10, 0x0}, 0x0) 05:37:42 executing program 1: perf_event_open(&(0x7f000001d000)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x41c1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) r0 = socket$nl_route(0x10, 0x3, 0x0) r1 = socket$inet6_icmp_raw(0xa, 0x3, 0x3a) ioctl$sock_SIOCGIFINDEX(r1, 0x8933, &(0x7f0000000000)={'macvlan0\x00', 0x0}) r3 = socket$inet(0x2, 0x4000000000000001, 0x0) bind$inet(r3, &(0x7f0000000040)={0x2, 0x4e23, @multicast1}, 0x10) sendto$inet(r3, 0x0, 0x10b, 0x200007fe, &(0x7f0000000100)={0x2, 0x10004e23, @dev={0xac, 0x14, 0x14, 0xa}}, 0x10) sendto$inet(r3, &(0x7f0000d7cfcb), 0xffffffffffffffef, 0x58f7, 0x0, 0x53) sendmsg$nl_route(r0, &(0x7f0000000280)={0x0, 0x0, &(0x7f0000001140)={&(0x7f0000000040)=@newlink={0x48, 0x10, 0x503, 0x0, 0x0, {0x0, 0x0, 0x0, 0x0, 0x5203}, [@IFLA_LINKINFO={0x18, 0x12, 0x0, 0x1, @ppp={{0x8}, {0xc, 0x2, 0x0, 0x1, {0x8, 0x1, r3}}}}, @IFLA_LINK={0x8, 0x5, r2}, @IFLA_MASTER={0x8, 0xa, r2}]}, 0x48}}, 0x0) r4 = dup3(r3, r3, 0x80000) setsockopt$inet6_MRT6_ADD_MFC(r4, 0x29, 0xcc, &(0x7f0000000140)={{0xa, 0x4e20, 0x9, @ipv4={'\x00', '\xff\xff', @initdev={0xac, 0x1e, 0x1, 0x0}}, 0xfffffff8}, {0xa, 0x4e22, 0x6, @initdev={0xfe, 0x88, '\x00', 0x1, 0x0}, 0x80}, 0x2c2, [0x8, 0x2, 0xfff, 0xc160, 0xfffffffd, 0x9, 0x6, 0xe48]}, 0x5c) 05:37:42 executing program 2: setsockopt$ax25_int(0xffffffffffffffff, 0x101, 0xf, &(0x7f00000000c0), 0x4) setsockopt$ax25_int(0xffffffffffffffff, 0x101, 0x0, 0x0, 0x0) perf_event_open(&(0x7f0000000100)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) r0 = getpid() sched_setscheduler(r0, 0x5, &(0x7f0000000380)) r1 = openat$kvm(0xffffffffffffff9c, &(0x7f0000000080), 0x0, 0x0) r2 = ioctl$KVM_CREATE_VM(r1, 0xae01, 0x0) syz_kvm_setup_cpu$x86(r2, 0xffffffffffffffff, &(0x7f0000fe8000/0x18000)=nil, &(0x7f00000023c0)=[@text32={0x20, 0x0}], 0x1, 0x0, 0x0, 0x0) r3 = ioctl$KVM_CREATE_VCPU(r2, 0xae41, 0x0) syz_kvm_setup_cpu$x86(0xffffffffffffffff, r3, &(0x7f0000fe8000/0x18000)=nil, &(0x7f0000000240)=[@text32={0x20, &(0x7f0000000000)="66b8dc008ed866b837008ee02e0fc7bca2b4b11023230f07670f001e000167360fe169ad0f20e0c4e1ff70f1b90f22e0b9800000c035000800000f30c4e1b1dbb75813a80f0f0018", 0x48}], 0x1, 0x49, 0x0, 0x0) pipe2(&(0x7f0000000000), 0x0) sched_setattr(r0, &(0x7f0000000180)={0x38, 0x0, 0x4, 0x10000, 0x8, 0x9, 0x9, 0xae5, 0x0, 0x5}, 0x0) recvmmsg$unix(0xffffffffffffffff, 0x0, 0x0, 0x40016140, 0x0) add_key$user(0x0, 0x0, 0x0, 0x0, 0xfffffffffffffffd) r4 = syz_open_dev$usbfs(&(0x7f0000000840), 0x90f, 0x28101) ioctl$USBDEVFS_SUBMITURB(r4, 0x8038550a, &(0x7f0000000000)=@urb_type_bulk={0x3, {0x1, 0x1}, 0x9, 0x25, &(0x7f00000008c0)='o', 0x1, 0x0, 0x0, 0x83, 0x0, 0x0, 0x0}) perf_event_open(&(0x7f0000000280)={0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x41be, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @perf_bp={0x0}}, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0) ioctl$KVM_RUN(r3, 0xae80, 0x0) ioctl$BTRFS_IOC_BALANCE_CTL(0xffffffffffffffff, 0x40049421, 0x0) recvmsg$unix(0xffffffffffffffff, &(0x7f0000000200)={&(0x7f0000000300), 0x6e, &(0x7f0000001900)=[{&(0x7f00000003c0)=""/128, 0x80}, {&(0x7f0000000440)=""/121, 0x79}, {&(0x7f0000000900)=""/4096, 0x1000}, {&(0x7f0000001a80)=""/223, 0xdf}, {&(0x7f00000005c0)=""/245, 0xf5}, {&(0x7f00000006c0)=""/104, 0x68}, {&(0x7f0000000740)=""/193, 0xc1}], 0x7, &(0x7f0000001980)=[@cred={{0x1c}}, @cred={{0x1c}}, @rights={{0x30, 0x1, 0x1, [0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]}}, @rights={{0x34, 0x1, 0x1, [0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]}}, @cred={{0x1c}}], 0xc8}, 0x10000) 05:37:43 executing program 0: r0 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r0, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r0, 0x0, 0x0) shutdown(r0, 0x0) setsockopt$packet_fanout_data(r0, 0x107, 0x16, &(0x7f0000000080)={0x2, &(0x7f0000000040)=[{0x1000, 0x1, 0x8, 0x800}, {0x5, 0x1, 0xc0, 0xcd}]}, 0x10) sendmsg$tipc(r0, &(0x7f0000000480)={&(0x7f0000000000)=@name={0x1e, 0x2, 0x3}, 0x10, 0x0}, 0x0) r1 = socket(0x1e, 0x4, 0x0) r2 = socket(0x1e, 0x4, 0x0) setsockopt$packet_tx_ring(r2, 0x10f, 0x87, &(0x7f00000000c0)=@req3={0x80000001}, 0x1c) bind$tipc(r2, 0x0, 0x0) r3 = dup2(r1, r2) setsockopt$TIPC_GROUP_LEAVE(r2, 0x10f, 0x88) recvmsg$kcm(r3, &(0x7f0000000440)={&(0x7f0000000100)=@pppol2tpv3={0x18, 0x1, {0x0, 0xffffffffffffffff, {0x2, 0x0, @dev}}}, 0x80, &(0x7f0000000400)=[{&(0x7f0000000180)=""/87, 0x57}, {&(0x7f0000000200)=""/216, 0xd8}, {&(0x7f0000000300)=""/243, 0xf3}], 0x3, &(0x7f00000004c0)=""/98, 0x62}, 0x12000) setsockopt$TIPC_GROUP_JOIN(r4, 0x10f, 0x87, &(0x7f0000000540)={0x42, 0x4, 0x3}, 0x10) 05:37:43 executing program 1: prlimit64(0x0, 0xe, &(0x7f0000000280)={0x9, 0x8d}, 0x0) r0 = getpid() sched_setaffinity(0x0, 0x8, &(0x7f0000000040)=0xffffffffffff0166) sched_setattr(0x0, &(0x7f0000000140)={0x38, 0x2, 0x0, 0x0, 0x9}, 0x0) sched_setattr(r0, &(0x7f00000000c0)={0x38, 0x2, 0x0, 0x0, 0x5}, 0x0) socketpair$unix(0x1, 0x2, 0x0, &(0x7f0000000200)={0xffffffffffffffff, 0xffffffffffffffff}) r3 = gettid() sched_setattr(r3, &(0x7f00000002c0)={0x38, 0x1, 0x2, 0x80, 0xffff, 0x0, 0x0, 0x800, 0x4, 0x8001}, 0x0) connect$unix(r1, &(0x7f000057eff8)=@abs, 0x6e) sendmmsg$unix(r2, &(0x7f00000bd000), 0x318, 0x0) r4 = creat(&(0x7f0000000100)='./bus\x00', 0x0) r5 = socket$nl_route(0x10, 0x3, 0x0) sendmsg$nl_route_sched(r5, &(0x7f0000000280)={0x0, 0x0, &(0x7f0000000000)={&(0x7f0000000300)=@delchain={0x24, 0x26, 0xf31}, 0x24}}, 0x0) fallocate(r4, 0x3c, 0x0, 0x401) recvmmsg(r1, &(0x7f00000000c0), 0x10106, 0x2, 0x0) creat(&(0x7f00000001c0)='./bus\x00', 0x90) r6 = open(&(0x7f0000000080)='./bus\x00', 0x14d842, 0x0) sched_setattr(0x0, &(0x7f0000000180)={0x38, 0x1, 0x10, 0x1a, 0x2, 0x1, 0xa51, 0x100000000, 0x57c}, 0x0) r7 = openat(0xffffffffffffff9c, &(0x7f0000000000)='/proc/self/exe\x00', 0x0, 0x11a) sendfile(r6, r7, 0x0, 0x80000005) [ 623.934860] audit: type=1800 audit(1636177063.371:562): pid=31843 uid=0 auid=4294967295 ses=4294967295 subj==unconfined op=collect_data cause=failed(directio) comm="syz-executor.1" name="bus" dev="sda1" ino=14721 res=0 [ 624.539382] usb usb9: usbfs: process 31827 (syz-executor.2) did not claim interface 0 before use [ 624.587686] ================================================================== [ 624.595300] BUG: KASAN: slab-out-of-bounds in usb_hcd_poll_rh_status+0x387/0x6f0 [ 624.602837] Write of size 2 at addr ffff8880b28e7580 by task syz-executor.1/20857 [ 624.610456] [ 624.612103] CPU: 1 PID: 20857 Comm: syz-executor.1 Not tainted 4.19.211-syzkaller #0 [ 624.619983] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 [ 624.629340] Call Trace: [ 624.631925] [ 624.634086] dump_stack+0x1fc/0x2ef [ 624.637736] print_address_description.cold+0x54/0x219 [ 624.643026] kasan_report_error.cold+0x8a/0x1b9 [ 624.647964] ? usb_hcd_poll_rh_status+0x387/0x6f0 [ 624.652811] kasan_report+0x8f/0xa0 [ 624.656452] ? usb_hcd_poll_rh_status+0x387/0x6f0 [ 624.661311] memcpy+0x35/0x50 [ 624.664433] usb_hcd_poll_rh_status+0x387/0x6f0 [ 624.669109] ? usb_remove_hcd+0x650/0x650 [ 624.673269] call_timer_fn+0x177/0x700 [ 624.677160] ? usb_hcd_poll_rh_status+0x6f0/0x6f0 [ 624.682009] ? process_timeout+0x40/0x40 [ 624.686090] ? _raw_spin_unlock_irq+0x24/0x80 [ 624.690587] ? usb_hcd_poll_rh_status+0x6f0/0x6f0 [ 624.695441] ? usb_hcd_poll_rh_status+0x6f0/0x6f0 [ 624.700288] expire_timers+0x243/0x4e0 [ 624.704188] run_timer_softirq+0x21c/0x670 [ 624.708449] ? expire_timers+0x4e0/0x4e0 [ 624.712512] ? kvm_sched_clock_read+0x14/0x40 [ 624.717013] ? check_preemption_disabled+0x41/0x280 [ 624.722044] __do_softirq+0x265/0x980 [ 624.725861] irq_exit+0x215/0x260 [ 624.729321] smp_apic_timer_interrupt+0x136/0x550 [ 624.734173] apic_timer_interrupt+0xf/0x20 [ 624.738399] [ 624.740645] RIP: 0010:_raw_spin_unlock_irqrestore+0xa3/0xe0 [ 624.746430] Code: 48 c7 c0 88 82 f1 89 48 ba 00 00 00 00 00 fc ff df 48 c1 e8 03 80 3c 10 00 75 2f 48 83 3d 7c 31 d8 01 00 74 15 48 89 df 57 9d <0f> 1f 44 00 00 eb b2 e8 fb eb e6 f8 eb c0 0f 0b 0f 0b 48 c7 c7 88 [ 624.765507] RSP: 0018:ffff8880a9bd7c78 EFLAGS: 00000286 ORIG_RAX: ffffffffffffff13 [ 624.773218] RAX: 1ffffffff13e3051 RBX: 0000000000000286 RCX: 0000000000000000 [ 624.780487] RDX: dffffc0000000000 RSI: 0000000000000001 RDI: 0000000000000286 [ 624.787763] RBP: ffffffff8d3e4948 R08: 0000000000000000 R09: 0000000000000000 [ 624.795036] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000286 [ 624.802308] R13: ffff88809ff04230 R14: ffffffff8d3e4948 R15: 0000000000000000 [ 624.809602] __debug_object_init+0x410/0x9b0 [ 624.814021] ? debug_object_destroy+0x240/0x240 [ 624.818697] ? lock_downgrade+0x720/0x720 [ 624.822850] ? lock_acquire+0x170/0x3c0 [ 624.826863] hrtimer_nanosleep+0x15b/0x570 [ 624.831100] ? nanosleep_copyout+0x100/0x100 [ 624.835532] ? __might_fault+0x192/0x1d0 [ 624.839595] ? _copy_from_user+0xd2/0x130 [ 624.843807] ? get_timespec64+0xcc/0x120 [ 624.847882] ? timespec_trunc+0x190/0x190 [ 624.852028] ? __schedule+0x88f/0x2040 [ 624.855927] common_nsleep+0x23/0x30 [ 624.859645] __se_sys_clock_nanosleep+0x261/0x360 [ 624.864495] ? __se_sys_clock_adjtime+0x290/0x290 [ 624.869345] ? trace_hardirqs_off_caller+0x6e/0x210 [ 624.874365] ? do_syscall_64+0x21/0x620 [ 624.878435] do_syscall_64+0xf9/0x620 [ 624.882246] entry_SYSCALL_64_after_hwframe+0x49/0xbe [ 624.887443] RIP: 0033:0x7f5906f26811 [ 624.891161] Code: 24 0c 89 3c 24 48 89 4c 24 18 e8 aa e7 ff ff 4c 8b 54 24 18 48 8b 54 24 10 41 89 c0 8b 74 24 0c 8b 3c 24 b8 e6 00 00 00 0f 05 <44> 89 c7 48 89 04 24 e8 e3 e7 ff ff 48 8b 04 24 eb 97 66 2e 0f 1f [ 624.910064] RSP: 002b:00007ffd59ee5880 EFLAGS: 00000293 ORIG_RAX: 00000000000000e6 [ 624.917778] RAX: ffffffffffffffda RBX: 0000000000000302 RCX: 00007f5906f26811 [ 624.925055] RDX: 00007ffd59ee58c0 RSI: 0000000000000000 RDI: 0000000000000000 [ 624.932329] RBP: 00007ffd59ee594c R08: 0000000000000000 R09: 000000a0e6edacaa [ 624.939603] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000032 [ 624.946873] R13: 0000000000098773 R14: 0000000000000013 R15: 00007ffd59ee59b0 [ 624.954154] [ 624.955779] Allocated by task 31827: [ 624.959494] __kmalloc+0x15a/0x3c0 [ 624.963040] proc_do_submiturb+0x2d17/0x3b00 [ 624.967453] usbdev_do_ioctl+0x773/0x3030 [ 624.971600] usbdev_ioctl+0x21/0x30 [ 624.975232] do_vfs_ioctl+0xcdb/0x12e0 [ 624.979120] ksys_ioctl+0x9b/0xc0 [ 624.982568] __x64_sys_ioctl+0x6f/0xb0 [ 624.986455] do_syscall_64+0xf9/0x620 [ 624.990257] entry_SYSCALL_64_after_hwframe+0x49/0xbe [ 624.995435] [ 624.997058] Freed by task 30845: [ 625.000427] kfree+0xcc/0x210 [ 625.003533] apparmor_task_free+0x143/0x1e0 [ 625.007856] security_task_free+0x3e/0x70 [ 625.012003] __put_task_struct+0xea/0x340 [ 625.016150] delayed_put_task_struct+0x1dc/0x320 [ 625.020904] rcu_process_callbacks+0x8ff/0x18b0 [ 625.025566] __do_softirq+0x265/0x980 [ 625.029356] [ 625.030981] The buggy address belongs to the object at ffff8880b28e7580 [ 625.030981] which belongs to the cache kmalloc-32 of size 32 [ 625.043462] The buggy address is located 0 bytes inside of [ 625.043462] 32-byte region [ffff8880b28e7580, ffff8880b28e75a0) [ 625.055074] The buggy address belongs to the page: [ 625.060002] page:ffffea0002ca39c0 count:1 mapcount:0 mapping:ffff88813bff01c0 index:0xffff8880b28e7fc1 [ 625.069445] flags: 0xfff00000000100(slab) [ 625.073593] raw: 00fff00000000100 ffffea0002caa548 ffffea0002947208 ffff88813bff01c0 [ 625.081472] raw: ffff8880b28e7fc1 ffff8880b28e7000 0000000100000039 0000000000000000 [ 625.089340] page dumped because: kasan: bad access detected [ 625.095039] [ 625.096661] Memory state around the buggy address: [ 625.101587] ffff8880b28e7480: fb fb fb fb fc fc fc fc fb fb fb fb fc fc fc fc [ 625.108938] ffff8880b28e7500: fb fb fb fb fc fc fc fc fb fb fb fb fc fc fc fc [ 625.116298] >ffff8880b28e7580: 01 fc fc fc fc fc fc fc fb fb fb fb fc fc fc fc [ 625.123647] ^ [ 625.127007] ffff8880b28e7600: fb fb fb fb fc fc fc fc 00 02 fc fc fc fc fc fc [ 625.134361] ffff8880b28e7680: 00 02 fc fc fc fc fc fc fb fb fb fb fc fc fc fc [ 625.141716] ================================================================== [ 625.149066] Disabling lock debugging due to kernel taint [ 625.154511] Kernel panic - not syncing: panic_on_warn set ... [ 625.154511] [ 625.161876] CPU: 1 PID: 20857 Comm: syz-executor.1 Tainted: G B 4.19.211-syzkaller #0 [ 625.171139] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 [ 625.180491] Call Trace: [ 625.183065] [ 625.185216] dump_stack+0x1fc/0x2ef [ 625.188852] panic+0x26a/0x50e [ 625.192050] ? __warn_printk+0xf3/0xf3 [ 625.195942] ? lock_downgrade+0x720/0x720 [ 625.200093] ? print_shadow_for_address+0xb8/0x114 [ 625.205014] ? trace_hardirqs_off+0x64/0x200 [ 625.209424] kasan_end_report+0x43/0x49 [ 625.213400] kasan_report_error.cold+0xa7/0x1b9 [ 625.218070] ? usb_hcd_poll_rh_status+0x387/0x6f0 [ 625.222902] kasan_report+0x8f/0xa0 [ 625.226521] ? usb_hcd_poll_rh_status+0x387/0x6f0 [ 625.231363] memcpy+0x35/0x50 [ 625.234480] usb_hcd_poll_rh_status+0x387/0x6f0 [ 625.239154] ? usb_remove_hcd+0x650/0x650 [ 625.243307] call_timer_fn+0x177/0x700 [ 625.247193] ? usb_hcd_poll_rh_status+0x6f0/0x6f0 [ 625.252031] ? process_timeout+0x40/0x40 [ 625.256095] ? _raw_spin_unlock_irq+0x24/0x80 [ 625.260590] ? usb_hcd_poll_rh_status+0x6f0/0x6f0 [ 625.265436] ? usb_hcd_poll_rh_status+0x6f0/0x6f0 [ 625.270282] expire_timers+0x243/0x4e0 [ 625.274168] run_timer_softirq+0x21c/0x670 [ 625.278485] ? expire_timers+0x4e0/0x4e0 [ 625.282546] ? kvm_sched_clock_read+0x14/0x40 [ 625.287040] ? check_preemption_disabled+0x41/0x280 [ 625.292061] __do_softirq+0x265/0x980 [ 625.295860] irq_exit+0x215/0x260 [ 625.299304] smp_apic_timer_interrupt+0x136/0x550 [ 625.304151] apic_timer_interrupt+0xf/0x20 [ 625.308375] [ 625.310642] RIP: 0010:_raw_spin_unlock_irqrestore+0xa3/0xe0 [ 625.316348] Code: 48 c7 c0 88 82 f1 89 48 ba 00 00 00 00 00 fc ff df 48 c1 e8 03 80 3c 10 00 75 2f 48 83 3d 7c 31 d8 01 00 74 15 48 89 df 57 9d <0f> 1f 44 00 00 eb b2 e8 fb eb e6 f8 eb c0 0f 0b 0f 0b 48 c7 c7 88 [ 625.335592] RSP: 0018:ffff8880a9bd7c78 EFLAGS: 00000286 ORIG_RAX: ffffffffffffff13 [ 625.343298] RAX: 1ffffffff13e3051 RBX: 0000000000000286 RCX: 0000000000000000 [ 625.350659] RDX: dffffc0000000000 RSI: 0000000000000001 RDI: 0000000000000286 [ 625.357918] RBP: ffffffff8d3e4948 R08: 0000000000000000 R09: 0000000000000000 [ 625.365190] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000286 [ 625.372459] R13: ffff88809ff04230 R14: ffffffff8d3e4948 R15: 0000000000000000 [ 625.379747] __debug_object_init+0x410/0x9b0 [ 625.384151] ? debug_object_destroy+0x240/0x240 [ 625.388820] ? lock_downgrade+0x720/0x720 [ 625.392969] ? lock_acquire+0x170/0x3c0 [ 625.396959] hrtimer_nanosleep+0x15b/0x570 [ 625.401244] ? nanosleep_copyout+0x100/0x100 [ 625.405658] ? __might_fault+0x192/0x1d0 [ 625.409726] ? _copy_from_user+0xd2/0x130 [ 625.413871] ? get_timespec64+0xcc/0x120 [ 625.417924] ? timespec_trunc+0x190/0x190 [ 625.422075] ? __schedule+0x88f/0x2040 [ 625.425964] common_nsleep+0x23/0x30 [ 625.429681] __se_sys_clock_nanosleep+0x261/0x360 [ 625.434521] ? __se_sys_clock_adjtime+0x290/0x290 [ 625.439363] ? trace_hardirqs_off_caller+0x6e/0x210 [ 625.444418] ? do_syscall_64+0x21/0x620 [ 625.448406] do_syscall_64+0xf9/0x620 [ 625.452205] entry_SYSCALL_64_after_hwframe+0x49/0xbe [ 625.457389] RIP: 0033:0x7f5906f26811 [ 625.461097] Code: 24 0c 89 3c 24 48 89 4c 24 18 e8 aa e7 ff ff 4c 8b 54 24 18 48 8b 54 24 10 41 89 c0 8b 74 24 0c 8b 3c 24 b8 e6 00 00 00 0f 05 <44> 89 c7 48 89 04 24 e8 e3 e7 ff ff 48 8b 04 24 eb 97 66 2e 0f 1f [ 625.480022] RSP: 002b:00007ffd59ee5880 EFLAGS: 00000293 ORIG_RAX: 00000000000000e6 [ 625.487724] RAX: ffffffffffffffda RBX: 0000000000000302 RCX: 00007f5906f26811 [ 625.494991] RDX: 00007ffd59ee58c0 RSI: 0000000000000000 RDI: 0000000000000000 [ 625.502260] RBP: 00007ffd59ee594c R08: 0000000000000000 R09: 000000a0e6edacaa [ 625.509529] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000032 [ 625.516898] R13: 0000000000098773 R14: 0000000000000013 R15: 00007ffd59ee59b0 [ 625.524432] Kernel Offset: disabled [ 625.528050] Rebooting in 86400 seconds..