import java.io.* ;
import java.util.* ;
public class TaskD {
private final InputReader reader;
private final OutputWriter writer;
public TaskD( InputReader reader, OutputWriter writer) {
this .reader = reader;
this .writer = writer;
}
public static void main
( String [ ] args
) { InputReader reader
= new InputReader
( System .
in ) ; OutputWriter writer
= new OutputWriter
( System .
out ) ; new TaskD( reader, writer) .run ( ) ;
writer.writer .flush ( ) ;
}
int [ ] A, B, L;
List< Integer> [ ] E;
int n, m;
long [ ] dij( int s) {
long [ ] D = new long [ n] ;
D[ s] = 0 ;
boolean [ ] was = new boolean [ n] ;
long last = - 1 ;
int pt = 0 ;
for ( int i = 0 ; i < n; i++ ) {
int mni = - 1 ;
for ( int j = 0 ; j < n; j++ )
if ( ! was[ j] && ( mni == - 1 || D[ mni] > D[ j] ) )
mni = j;
if ( mni == - 1 )
throw new AssertionError( ) ;
if ( D[ mni] != last) {
last = D[ mni] ;
pt++;
}
for ( int e : E[ mni] ) {
int y = mni ^ A[ e] ^ B[ e] ;
if ( was[ y] )
continue ;
D
[ y
] = Math .
min ( D
[ y
] , D
[ mni
] + L
[ e
] ) ; }
D[ mni] = pt;
was[ mni] = true ;
}
return D;
}
long [ ] [ ] V;
short [ ] [ ] cnt;
long [ ] [ ] SV;
short [ ] [ ] Scnt;
long get_sum( int x1, int y1, int x2, int y2) {
x2++;
y2++;
return SV[ x2] [ y2] - SV[ x2] [ y1] - SV[ x1] [ y2] + SV[ x1] [ y1] ;
}
int get_cnt( int x1, int y1, int x2, int y2) {
x2++;
y2++;
return Scnt[ x2] [ y2] - Scnt[ x2] [ y1] - Scnt[ x1] [ y2] + Scnt[ x1] [ y1] ;
}
public void run( ) {
n = reader.nextInt ( ) ;
m = reader.nextInt ( ) ;
int s = reader.nextInt ( ) - 1 ;
int t = reader.nextInt ( ) - 1 ;
long [ ] W = new long [ n] ;
for ( int i = 0 ; i < n; i++ )
W[ i] = reader.nextInt ( ) ;
A = new int [ m] ;
B = new int [ m] ;
L = new int [ m] ;
for ( int i = 0 ; i < n; i++ )
E[ i] = new ArrayList< Integer> ( 1 ) ;
for ( int i = 0 ; i < m; i++ ) {
A[ i] = reader.nextInt ( ) - 1 ;
B[ i] = reader.nextInt ( ) - 1 ;
L[ i] = reader.nextInt ( ) ;
E[ A[ i] ] .add ( i) ;
E[ B[ i] ] .add ( i) ;
}
long [ ] Ds = dij( s) ;
long [ ] Dt = dij( t) ;
int mxs = - 1 , mxt = - 1 ;
for ( long d : Ds)
mxs
= ( int ) Math .
max ( d, mxs
) ; for ( long d : Dt)
mxt
= ( int ) Math .
max ( d, mxt
) ; long [ ] [ ] DS = new long [ mxs + 1 ] [ mxt + 1 ] , DT = new long [ mxs + 1 ] [ mxt + 1 ] ;
V = new long [ mxs + 1 ] [ mxt + 1 ] ;
cnt = new short [ mxs + 1 ] [ mxt + 1 ] ;
for ( int i = 0 ; i < n; i++ ) {
V[ ( int ) Ds[ i] ] [ ( int ) Dt[ i] ] += W[ i] ;
cnt[ ( int ) Ds[ i] ] [ ( int ) Dt[ i] ] ++;
}
SV = new long [ mxs + 2 ] [ mxt + 2 ] ;
Scnt = new short [ mxs + 2 ] [ mxt + 2 ] ;
for ( int i = 0 ; i < mxs + 1 ; i++ )
for ( int j = 0 ; j < mxt + 1 ; j++ ) {
SV[ i + 1 ] [ j + 1 ] = SV[ i + 1 ] [ j] + SV[ i] [ j + 1 ] - SV[ i] [ j] + V[ i] [ j] ;
Scnt[ i + 1 ] [ j + 1 ] = ( short ) ( Scnt[ i + 1 ] [ j] + Scnt[ i] [ j + 1 ] - Scnt[ i] [ j] + cnt[ i] [ j] ) ;
}
for ( int i = 0 ; i <= mxs; i++ )
for ( int j = 0 ; j <= mxt; j++ )
DS[ i] [ j] = DT[ i] [ j] = ( long ) - 1e15;
int [ ] posS = new int [ mxt + 1 ] ;
long [ ] curmnS = new long [ mxt + 1 ] ;
int [ ] posT = new int [ mxs + 1 ] ;
long [ ] curmnT = new long [ mxs + 1 ] ;
Arrays .
fill ( curmnS,
( long ) - 1e15
) ; Arrays .
fill ( curmnT,
( long ) - 1e15
) ; for ( int i = mxs; i >= 0 ; i-- )
for ( int j = mxt; j >= 0 ; j-- ) {
if ( get_cnt( i + 1 , j + 1 , mxs, mxt) == 0 ) {
DS[ i] [ j] = DT[ i] [ j] = 0 ;
continue ;
}
if ( get_cnt( i + 1 , j + 1 , i + 1 , mxt) != 0 ) {
while ( posS[ j] > i + 1 ) {
posS[ j] --;
curmnS
[ j
] = Math .
max ( curmnS
[ j
] , get_sum
( 0 , j
+ 1 , posS
[ j
] , mxt
) - DT
[ posS
[ j
] ] [ j
] ) ; }
}
if ( get_cnt( i + 1 , j + 1 , mxs, j + 1 ) != 0 ) {
while ( posT[ i] > j + 1 ) {
posT[ i] --;
curmnT
[ i
] = Math .
max ( curmnT
[ i
] , get_sum
( i
+ 1 ,
0 , mxs, posT
[ i
] ) - DS
[ i
] [ posT
[ i
] ] ) ; }
}
DS
[ i
] [ j
] = Math .
max ( DS
[ i
] [ j
] ,
- get_sum
( 0 , j
+ 1 , i, mxt
) + curmnS
[ j
] ) ; DT
[ i
] [ j
] = Math .
max ( DT
[ i
] [ j
] ,
- get_sum
( i
+ 1 ,
0 , mxs, j
) + curmnT
[ i
] ) ; }
long val = DS[ 0 ] [ 0 ] ;
if ( val > 0 )
writer.printf ( "Break a heart\n " ) ;
else if ( val < 0 )
writer.printf ( "Cry\n " ) ;
else
writer.printf ( "Flowers\n " ) ;
}
static class InputReader {
tokenizer = null ;
}
while ( tokenizer == null || ! tokenizer.hasMoreTokens ( ) ) {
try {
}
}
return tokenizer.nextToken ( ) ;
}
public int nextInt( ) {
}
public double nextDouble( ) {
return Double .
parseDouble ( next
( ) ) ; }
public long nextLong( ) {
return Long .
parseLong ( next
( ) ) ; }
}
static class OutputWriter {
}
}
}
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIFRhc2tEIHsKICAgIHByaXZhdGUgZmluYWwgSW5wdXRSZWFkZXIgcmVhZGVyOwogICAgcHJpdmF0ZSBmaW5hbCBPdXRwdXRXcml0ZXIgd3JpdGVyOwoKICAgIHB1YmxpYyBUYXNrRChJbnB1dFJlYWRlciByZWFkZXIsIE91dHB1dFdyaXRlciB3cml0ZXIpIHsKICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRlcjsKICAgICAgICB0aGlzLndyaXRlciA9IHdyaXRlcjsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgSW5wdXRSZWFkZXIgcmVhZGVyID0gbmV3IElucHV0UmVhZGVyKFN5c3RlbS5pbik7CiAgICAgICAgT3V0cHV0V3JpdGVyIHdyaXRlciA9IG5ldyBPdXRwdXRXcml0ZXIoU3lzdGVtLm91dCk7CiAgICAgICAgbmV3IFRhc2tEKHJlYWRlciwgd3JpdGVyKS5ydW4oKTsKICAgICAgICB3cml0ZXIud3JpdGVyLmZsdXNoKCk7CiAgICB9CgogICAgaW50W10gQSwgQiwgTDsKCiAgICBMaXN0PEludGVnZXI+W10gRTsKICAgIGludCBuLCBtOwoKICAgIGxvbmdbXSBkaWooaW50IHMpIHsKICAgICAgICBsb25nW10gRCA9IG5ldyBsb25nW25dOwogICAgICAgIEFycmF5cy5maWxsKEQsIChsb25nKSAxZTE4KTsKICAgICAgICBEW3NdID0gMDsKICAgICAgICBib29sZWFuW10gd2FzID0gbmV3IGJvb2xlYW5bbl07CiAgICAgICAgbG9uZyBsYXN0ID0gLTE7CiAgICAgICAgaW50IHB0ID0gMDsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBpbnQgbW5pID0gLTE7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKQogICAgICAgICAgICAgICAgaWYgKCF3YXNbal0gJiYgKG1uaSA9PSAtMSB8fCBEW21uaV0gPiBEW2pdKSkKICAgICAgICAgICAgICAgICAgICBtbmkgPSBqOwogICAgICAgICAgICBpZiAobW5pID09IC0xKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCk7CiAgICAgICAgICAgIGlmIChEW21uaV0gIT0gbGFzdCkgewogICAgICAgICAgICAgICAgbGFzdCA9IERbbW5pXTsKICAgICAgICAgICAgICAgIHB0Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChpbnQgZSA6IEVbbW5pXSkgewogICAgICAgICAgICAgICAgaW50IHkgPSBtbmkgXiBBW2VdIF4gQltlXTsKICAgICAgICAgICAgICAgIGlmICh3YXNbeV0pCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICBEW3ldID0gTWF0aC5taW4oRFt5XSwgRFttbmldICsgTFtlXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgRFttbmldID0gcHQ7CiAgICAgICAgICAgIHdhc1ttbmldID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEQ7CiAgICB9CgogICAgbG9uZ1tdW10gVjsKICAgIHNob3J0W11bXSBjbnQ7CiAgICBsb25nW11bXSBTVjsKICAgIHNob3J0W11bXSBTY250OwogICAgbG9uZyBnZXRfc3VtKGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MikgewogICAgICAgIHgyKys7CiAgICAgICAgeTIrKzsKICAgICAgICByZXR1cm4gU1ZbeDJdW3kyXSAtIFNWW3gyXVt5MV0gLSBTVlt4MV1beTJdICsgU1ZbeDFdW3kxXTsKICAgIH0KCiAgICBpbnQgZ2V0X2NudChpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIpIHsKICAgICAgICB4MisrOwogICAgICAgIHkyKys7CiAgICAgICAgcmV0dXJuIFNjbnRbeDJdW3kyXSAtIFNjbnRbeDJdW3kxXSAtIFNjbnRbeDFdW3kyXSArIFNjbnRbeDFdW3kxXTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAgbiA9IHJlYWRlci5uZXh0SW50KCk7CiAgICAgICAgbSA9IHJlYWRlci5uZXh0SW50KCk7CiAgICAgICAgaW50IHMgPSByZWFkZXIubmV4dEludCgpIC0gMTsKICAgICAgICBpbnQgdCA9IHJlYWRlci5uZXh0SW50KCkgLSAxOwogICAgICAgIGxvbmdbXSBXID0gbmV3IGxvbmdbbl07CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgIFdbaV0gPSByZWFkZXIubmV4dEludCgpOwogICAgICAgIEEgPSBuZXcgaW50W21dOwogICAgICAgIEIgPSBuZXcgaW50W21dOwogICAgICAgIEwgPSBuZXcgaW50W21dOwogICAgICAgIEUgPSBuZXcgTGlzdFtuXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgRVtpXSA9IG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oMSk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgICAgICAgICAgQVtpXSA9IHJlYWRlci5uZXh0SW50KCkgLSAxOwogICAgICAgICAgICBCW2ldID0gcmVhZGVyLm5leHRJbnQoKSAtIDE7CiAgICAgICAgICAgIExbaV0gPSByZWFkZXIubmV4dEludCgpOwogICAgICAgICAgICBFW0FbaV1dLmFkZChpKTsKICAgICAgICAgICAgRVtCW2ldXS5hZGQoaSk7CiAgICAgICAgfQogICAgICAgIGxvbmdbXSBEcyA9IGRpaihzKTsKICAgICAgICBsb25nW10gRHQgPSBkaWoodCk7CiAgICAgICAgaW50IG14cyA9IC0xLCBteHQgPSAtMTsKICAgICAgICBmb3IgKGxvbmcgZCA6IERzKQogICAgICAgICAgICBteHMgPSAoaW50KU1hdGgubWF4KGQsIG14cyk7CiAgICAgICAgZm9yIChsb25nIGQgOiBEdCkKICAgICAgICAgICAgbXh0ID0gKGludClNYXRoLm1heChkLCBteHQpOwogICAgICAgIGxvbmdbXVtdIERTID0gbmV3IGxvbmdbbXhzICsgMV1bbXh0ICsgMV0sIERUID0gbmV3IGxvbmdbbXhzICsgMV1bbXh0ICsgMV07CiAgICAgICAgViA9IG5ldyBsb25nW214cyArIDFdW214dCArIDFdOwogICAgICAgIGNudCA9IG5ldyBzaG9ydFtteHMgKyAxXVtteHQgKyAxXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBWWyhpbnQpIERzW2ldXVsoaW50KSBEdFtpXV0gKz0gV1tpXTsKICAgICAgICAgICAgY250WyhpbnQpIERzW2ldXVsoaW50KSBEdFtpXV0rKzsKICAgICAgICB9CiAgICAgICAgU1YgPSBuZXcgbG9uZ1tteHMgKyAyXVtteHQgKyAyXTsKICAgICAgICBTY250ID0gbmV3IHNob3J0W214cyArIDJdW214dCArIDJdOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbXhzICsgMTsgaSsrKQogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG14dCArIDE7IGorKykgewogICAgICAgICAgICAgICAgU1ZbaSArIDFdW2ogKyAxXSA9IFNWW2kgKyAxXVtqXSArIFNWW2ldW2ogKyAxXSAtIFNWW2ldW2pdICsgVltpXVtqXTsKICAgICAgICAgICAgICAgIFNjbnRbaSArIDFdW2ogKyAxXSA9IChzaG9ydCkoU2NudFtpICsgMV1bal0gKyBTY250W2ldW2ogKyAxXSAtIFNjbnRbaV1bal0gKyBjbnRbaV1bal0pOwogICAgICAgICAgICB9CgogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG14czsgaSsrKQogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8PSBteHQ7IGorKykKICAgICAgICAgICAgICAgIERTW2ldW2pdID0gRFRbaV1bal0gPSAobG9uZyktMWUxNTsKICAgICAgICBpbnRbXSBwb3NTID0gbmV3IGludFtteHQgKyAxXTsKICAgICAgICBsb25nW10gY3VybW5TID0gbmV3IGxvbmdbbXh0ICsgMV07CiAgICAgICAgaW50W10gcG9zVCA9IG5ldyBpbnRbbXhzICsgMV07CiAgICAgICAgbG9uZ1tdIGN1cm1uVCA9IG5ldyBsb25nW214cyArIDFdOwogICAgICAgIEFycmF5cy5maWxsKHBvc1MsIG14cyArIDEpOwogICAgICAgIEFycmF5cy5maWxsKHBvc1QsIG14dCArIDEpOwogICAgICAgIEFycmF5cy5maWxsKGN1cm1uUywgKGxvbmcpLTFlMTUpOwogICAgICAgIEFycmF5cy5maWxsKGN1cm1uVCwgKGxvbmcpLTFlMTUpOwogICAgICAgIGZvciAoaW50IGkgPSBteHM7IGkgPj0gMDsgaS0tKQogICAgICAgICAgICBmb3IgKGludCBqID0gbXh0OyBqID49IDA7IGotLSkgewogICAgICAgICAgICAgICAgaWYgKGdldF9jbnQoaSArIDEsIGogKyAxLCBteHMsIG14dCkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgIERTW2ldW2pdID0gRFRbaV1bal0gPSAwOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGdldF9jbnQoaSArIDEsIGogKyAxLCBpICsgMSwgbXh0KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBvc1Nbal0gPiAgaSArIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zU1tqXS0tOwogICAgICAgICAgICAgICAgICAgICAgICBjdXJtblNbal0gPSBNYXRoLm1heChjdXJtblNbal0sIGdldF9zdW0oMCwgaiArIDEsIHBvc1Nbal0sIG14dCkgLSBEVFtwb3NTW2pdXVtqXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGdldF9jbnQoaSArIDEsIGogKyAxLCBteHMsIGogKyAxKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBvc1RbaV0gPiBqICsgMSkgewogICAgICAgICAgICAgICAgICAgICAgICBwb3NUW2ldLS07CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cm1uVFtpXSA9IE1hdGgubWF4KGN1cm1uVFtpXSwgZ2V0X3N1bShpICsgMSwgMCwgbXhzLCBwb3NUW2ldKSAtIERTW2ldW3Bvc1RbaV1dKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBEU1tpXVtqXSA9IE1hdGgubWF4KERTW2ldW2pdLCAtZ2V0X3N1bSgwLCBqICsgMSwgaSwgbXh0KSArIGN1cm1uU1tqXSk7CiAgICAgICAgICAgICAgICBEVFtpXVtqXSA9IE1hdGgubWF4KERUW2ldW2pdLCAtZ2V0X3N1bShpICsgMSwgMCwgbXhzLCBqKSArIGN1cm1uVFtpXSk7CiAgICAgICAgICAgIH0KICAgICAgICBsb25nIHZhbCA9IERTWzBdWzBdOwogICAgICAgIGlmICh2YWwgPiAwKQogICAgICAgICAgICB3cml0ZXIucHJpbnRmKCJCcmVhayBhIGhlYXJ0XG4iKTsKICAgICAgICBlbHNlIGlmICh2YWwgPCAwKQogICAgICAgICAgICB3cml0ZXIucHJpbnRmKCJDcnlcbiIpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgd3JpdGVyLnByaW50ZigiRmxvd2Vyc1xuIik7CiAgICB9CgoKICAgIHN0YXRpYyBjbGFzcyBJbnB1dFJlYWRlciB7CiAgICAgICAgcHVibGljIEJ1ZmZlcmVkUmVhZGVyIHJlYWRlcjsKICAgICAgICBwdWJsaWMgU3RyaW5nVG9rZW5pemVyIHRva2VuaXplcjsKCiAgICAgICAgcHVibGljIElucHV0UmVhZGVyKElucHV0U3RyZWFtIHN0cmVhbSkgewogICAgICAgICAgICByZWFkZXIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKHN0cmVhbSksIDMyNzY4KTsKICAgICAgICAgICAgdG9rZW5pemVyID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBTdHJpbmcgbmV4dCgpIHsKICAgICAgICAgICAgd2hpbGUgKHRva2VuaXplciA9PSBudWxsIHx8ICF0b2tlbml6ZXIuaGFzTW9yZVRva2VucygpKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIocmVhZGVyLnJlYWRMaW5lKCkpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0b2tlbml6ZXIubmV4dFRva2VuKCk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgaW50IG5leHRJbnQoKSB7CiAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyLnBhcnNlSW50KG5leHQoKSk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZG91YmxlIG5leHREb3VibGUoKSB7CiAgICAgICAgICAgIHJldHVybiBEb3VibGUucGFyc2VEb3VibGUobmV4dCgpKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBsb25nIG5leHRMb25nKCkgewogICAgICAgICAgICByZXR1cm4gTG9uZy5wYXJzZUxvbmcobmV4dCgpKTsKICAgICAgICB9CiAgICB9CgogICAgc3RhdGljIGNsYXNzIE91dHB1dFdyaXRlciB7CiAgICAgICAgcHVibGljIFByaW50V3JpdGVyIHdyaXRlcjsKCiAgICAgICAgT3V0cHV0V3JpdGVyKE91dHB1dFN0cmVhbSBzdHJlYW0pIHsKICAgICAgICAgICAgd3JpdGVyID0gbmV3IFByaW50V3JpdGVyKHN0cmVhbSk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgdm9pZCBwcmludGYoU3RyaW5nIGZvcm1hdCwgT2JqZWN0Li4uIGFyZ3MpIHsKICAgICAgICAgICAgd3JpdGVyLnByaW50KFN0cmluZy5mb3JtYXQoTG9jYWxlLkVOR0xJU0gsIGZvcm1hdCwgYXJncykpOwogICAgICAgIH0KICAgIH0KfQo=