272LZTVTE66SQ4BYDORDIBSQFKG3357ZYIUNPVOGUC47VFXOAKVQC
QEKHTVB7CH754NUMHJ3AKVGRNKW3KOAKMALS7B3ZNKCUEH6GP4HQC
5Y7ZXB53EMG34VZI5VQIZ77TZKBB4V6BGIILFZ5ZY73QYK4V2YHQC
LLFG625ISXV7P2LUOFUMFIM5V5RJDKWCL47XX43X2CGILVAUQPVQC
LPVC545KD6R5KNOTDPFDOD5FVA3KFBZARKVOLLXJXW3YK3RMNZKQC
HMOBTVJ4FEPZWMUV2JDPZYH3EFCW6ED5M6KKNKQJQZVKTDAKTVFQC
G5YNDTPHPYRZZIGWLX2ZLVFRJ3B2NGAPVESSMTO7YEABDFIIE66AC
KUANIPWFDXDFKJ2LH4FQ6APYOPLNYJ5LVGLSBSC75WUUZPFHILCAC
YCWYAX6K2DJKT7FO4IAYL6HJOIJLYFKAPGLFJ5XMYSYAS42LP3FQC
stderr.execute(cursor::Hide)?;
terminal::enable_raw_mode()?;
let (mut input, _done) = events();
let mut comparator = CompareContext {
db,
events: &mut input,
out: &mut stderr,
needs_newline: false,
};
let mut comparator = CompareContext::new(&db, &mut stderr)?;
match pick::pick(&db, args.count, args.gather).await {
Ok(r) => Ok(r),
Err(e) => {
use crossterm::ExecutableCommand;
let mut stderr = std::io::stderr();
stderr.execute(crossterm::cursor::Show).ok();
crossterm::terminal::disable_raw_mode().ok();
Err(e)
}
}?;
pick::pick(&db, args.count, args.gather).await?;