# Auto-generated by lucicfg.
# Do not modify manually.
#
# For the schema of this file, see ProjectConfig message:
#   https://luci-config.appspot.com/schemas/projects:luci-notify.cfg

notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "archive"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "archive_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-4.0.4"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-4.0.4_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-4.4.4"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-4.4.4_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-5.1.1"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-5.1.1_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-6.0.1"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-6.0.1_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-7.0.0"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android-7.0.0_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android=10.0.0"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android=10.0.0_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android=8.1.0"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android=8.1.0_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android=9.0.0"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-android=9.0.0_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-d8_jctf"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-d8_jctf_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-dex_default"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-dex_default_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-internal"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-internal_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-jdk11"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-jdk11_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-jdk8"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-jdk8_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-jdk9"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-jdk9_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-none"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-none_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-r8cf_jctf"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "linux-r8cf_jctf_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "windows"
    repository: "https://r8.googlesource.com/r8"
  }
}
notifiers {
  notifications {
    on_failure: true
    on_new_failure: true
    notify_blamelist {}
  }
  builders {
    bucket: "ci"
    name: "windows_release"
    repository: "https://r8.googlesource.com/r8"
  }
}
