ELF>`@!@8 @ЦЦQtdPtdȅȅȅ33M]]77RtdM]]PP0$$0xx00]]XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,[ ui U[K[ui U[]]]]@@H@X@___ _y__W__n_` `(`0`8`@`H`P`X` `` h` p` x` ````````````````aa a!a" a#(a$0a%8a&@a'Ha(Pa)Xa*`a+ha,pa-xa.a/a0a1a2a3a4a5a6a7a8a9a:a;a<a=a>b?b@bAbB bC(bD0bE8bF@bGHbHPbIXbJ`bKhbLpbMxbNbObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^c_c`cacb cc(cd0ce8cf@cgHchPciXcj`ckhclpcmxcncocpcqcrcsctcucvcwcxcyczc{c|c}c~dddd d(d0d8d@dHdPdXd`dhdpdxdddddddddddddddddeeee e(e0e8e@eHePeXe`ehepexeeeeeeeeeeeeeeeeeffff f(f0f8f@fHfPfXf`fhfpfxfffffffffffffffffgggg g(g0g8g@gHgPgXg`ghgpgxggggggggggggggggghhhh h(h0h8h@hHhPh Xh `h hh phxhhhhhhhhhhhhhhhhhi i!i"i# i$(i%0i&8i'@i(Hi)Pi*Xi+`i,hi-pi.xi/i0i1i2i3i4i5i6i7i8i9i:i;i<i=i>i?j@jAjBjC jD(jE0jF8jG@jHHjIPjJXjK`jLhjMpjNxjOjPjQjRjSjTjUjVjWjXjYjZj[j\j]j^j_k`kakbkc kd(ke0kf8kg@khHkiPkjXkk`klhkmpknxkokpkqkrksktkukvkwkxkzk{k|k}k~kkllll l(l0l8l@lHlPlXl`lhlplxlllllllllllllllllmmmm m(m0m8m@mHmPmXm`mhmpmxmmmmmmmmmmmmmmmmmnnnn n(n0n8n@nHnPnXn`nhnpnxnnnnnnnnnnnnnnnnnoooo o(o0o8o@oHoPoXo`ohopoxooooooooooooooooopppp p(p0p8p @p Hp Pp Xp `phpppxpppppppppppppppp p!q"q#q$q% q&(q'0q(8q)@q*Hq+Pq,Xq-`q.hq/pq0xq1q2q3q4q5q6q7q8q9q:q;q<q=q>q?q@qArBrCrDrE rF(rG0rH8rI@rJHrKPrLXrM`rNhrOprPxrQrRrSrTrUrVrXrYrZr[r\r]r^r_r`rarbscsdsesf sg(sh0si8sj@skHslPsmXsn`sohsppsqxsrssstsusvswsxsyszs{s|s}s~sssstttt t(t0t8t@tHtPtXt`thtptxtttttttttttttttttuuuu u(u0u8u@uHuPuXu`uhupuxuuuuuuuuuuuuuuuuuvvvv v(v0v8v@vHvPvXv`vhvpvxvvvvvvvvvvvvvvvvvwwww w(w0w8w@wHwPwXw`whwpwxwwwwwwwwwwwwwwwwwxxxx x(x0x 8x @x Hx Px Xx`xhxpxxxxxxxxxxxxxxxxx x!x"y#y$y%y& y'(y(0y)8y*@y+Hy,Py-Xy.`y/hy0py1xy2y3y4y5y6y7y8y9y:y;y<y=y>y?y@yAyBzCzDzEzF zG(zH0zI8zJ@zKHzLPzMXzN`zOhzPpzQxzRzSzTzUzVzWzXzYzZz[z\z]z^z_z`zazb{c{d{e{f {g({h0{i8{j@{kH{lP{mX{o`{ph{qp{rx{s{t{u{v{w{x{y{z{{{|{}{~{{{{{|||| |(|0|8|@|H|P|X|`|h|p|x|||||||||||||||||}}}} }(}0}8}@}H}P}X}`}h}p}x}}}}}}}}}}}}}}}}}~~~~ ~(~0~8~@~H~P~X~`~h~p~x~~~~~~~~~~~~~~~~~ (08@HPX`hpx ( 0 8 @ H PX`hpxȀЀ؀ !"#$%&' (()0*8+@,H-P.X/`0h1p2x3456789:;<ȁ=Ё>؁?@ABCDEFG H(I0J8K@LHMPNXO`PhQpRxSTUVWXYZ[\Ȃ]Ђ^؂_`abcdefg h(i0j8k@lHmPnXo`phqprxstuvwxyz{|ȃ}Ѓ~؃ (08@HPX`hpxȄЄ؄ (08@HPX`hpxȅЅ؅ (08@HPX`hpxȆІ؆ (08@HPX`hpxȇЇ؇  ( 0 8 @ HPX`hpxȈЈ؈ !"#$%&'( )(*0+8,@-H.P/X0`1h2p3x456789:;<=ȉ>Љ?؉@ABCDEFGH I(J0K8L@MHNPOXP`QhRpSxTUVWXYZ[\]Ȋ^Њ_؊`abcdefgh i(j0k8l@mHnPoXp`qhrpsxtuvwxyz{|}ȋ~Ћ؋ (08@HPX`hpxȌЌ، (08@HPX`hpxȍЍ؍ (08@HPX`hpxȎЎ؎ (08@HPX`hpxȏЏ؏  ( 0 8 @ HPX`hpxȐАؐ !"#$%&'( )(*0+8,@-H.P/X0`1h2p3x456789:;<=ȑ>Б?ؑ@ABCDEFGH I(J0K8L@MHNPOXP`QhRpSxTUVWXYZ[\]Ȓ^В_ؒ`abcdefgh i(j0k8l@mHnPoXp`qhrpsxtuvwxyz{|}ȓ~Гؓ (HHHt; H5%@%h%گh%үh%ʯh%¯h%h%h%hp%h`%h P%h @%h 0%h %zh %rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h %ڮh!%Үh"%ʮh#%®h$%h%%h&%h'p%h(`%h)P%h*@%h+0%h, %zh-%rh.%jh/%bh0%Zh1%Rh2%Jh3%Bh4%:h5%2h6%*h7p%"h8`%h9P%h:@% h;0%h< %h=%h>%h?%h@%ڭhA%ҭhB%ʭhC%­hD%hE%hF%hGp%hH`%hIP%hJ@%hK0%hL %zhM%rhN%jhO%bhP%ZhQ%RhR%JhS%BhT%:hU%2hV%*hWp%"hX`%hYP%hZ@% h[0%h\ %h]%h^%h_%h`%ڬha%Ҭhb%ʬhc%¬hd%he%hf%hgp%hh`%hiP%hj@%hk0%hl %zhm%rhn%jho%bhp%Zhq%Rhr%Jhs%Bht%:hu%2hv%*hwp%"hx`%hyP%hz@% h{0%h| %h}%h~%h%h%ګh%ҫh%ʫh%«h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڪh%Ҫh%ʪh%ªh%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%کh%ҩh%ʩh%©h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڨh%Ҩh%ʨh%¨h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڧh%ҧh%ʧh%§h%h%h%hp%h`%h P%h @%h 0%h  %zh %rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h %ڦh!%Ҧh"%ʦh#%¦h$%h%%h&%h'p%h(`%h)P%h*@%h+0%h, %zh-%rh.%jh/%bh0%Zh1%Rh2%Jh3%Bh4%:h5%2h6%*h7p%"h8`%h9P%h:@% h;0%h< %h=%h>%h?%h@%ڥhA%ҥhB%ʥhC%¥hD%hE%hF%hGp%hH`%hIP%hJ@%hK0%hL %zhM%rhN%jhO%bhP%ZhQ%RhR%JhS%BhT%:hU%2hV%*hWp%"hX`%hYP%hZ@% h[0%h\ %h]%h^%h_%h`%ڤha%Ҥhb%ʤhc%¤hd%he%hf%hgp%hh`%hiP%hj@%hk0%hl %zhm%rhn%jho%bhp%Zhq%Rhr%Jhs%Bht%:hu%2hv%*hwp%"hx`%hyP%hz@% h{0%h| %h}%h~%h%h%ڣh%ңh%ʣh%£h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڢh%Ңh%ʢh%¢h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڡh%ҡh%ʡh%¡h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڠh%Ҡh%ʠh% h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڟh%ҟh%ʟh%Ÿh%h%h%hp%h`%h P%h @%h 0%h  %zh %rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h %ڞh!%Ҟh"%ʞh#%žh$%h%%h&%h'p%h(`%h)P%h*@%h+0%h, %zh-%rh.%jh/%bh0%Zh1%Rh2%Jh3%Bh4%:h5%2h6%*h7p%"h8`%h9P%h:@% h;0%h< %h=%h>%h?%h@%ڝhA%ҝhB%ʝhC%hD%hE%hF%hGp%hH`%hIP%hJ@%hK0%hL %zhM%rhN%jhO%bhP%ZhQ%RhR%JhS%BhT%:hU%2hV%*hWp%"hX`%hYP%hZ@% h[0%h\ %h]%h^%h_%h`%ڜha%Ҝhb%ʜhc%œhd%he%hf%hgp%hh`%hiP%hj@%hk0%hl %zhm%rhn%jho%bhp%Zhq%Rhr%Jhs%Bht%:hu%2hv%*hwp%"hx`%hyP%hz@% h{0%h| %h}%h~%h%h%ڛh%қh%ʛh%›h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ښh%Қh%ʚh%šh%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڙh%ҙh%ʙh%™h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ژh%Ҙh%ʘh%˜h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڗh%җh%ʗh%—h%h%h%hp%h`%h P%h @%h 0%h  %zh %rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h %ږh!%Җh"%ʖh#%–h$%h%%h&%h'p%h(`%h)P%h*@%h+0%h, %zh-%rh.%jh/%bh0%Zh1%Rh2%Jh3%Bh4%:h5%2h6%*h7p%"h8`%h9P%h:@% h;0%h< %h=%h>%h?%h@%ڕhA%ҕhB%ʕhC%•hD%hE%hF%hGp%hH`%hIP%hJ@%hK0%hL %zhM%rhN%jhO%bhP%ZhQ%RhR%JhS%BhT%:hU%2hV%*hWp%"hX`%hYP%hZ@% h[0%h\ %h]%h^%h_%h`%ڔha%Ҕhb%ʔhc%”hd%he%hf%hgp%hh`%hiP%hj@%hk0%hl %zhm%rhn%jho%bhp%Zhq%Rhr%Jhs%Bht%:hu%2hv%*hwp%"hx`%hyP%hz@% h{0%h| %h}%h~%h%h%ړh%ғh%ʓh%“h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڒh%Ғh%ʒh%’h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڑh%ґh%ʑh%‘h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڐh%Ґh%ʐh%h%h%h%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zh%Rh%Jh%Bh%:h%2h%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڏhп%ҏh%ʏh鰿%h頿%h鐿%h逿%hp%h`%h P%h @%h 0%h  %zh %rh%jh%bh%Zhо%Rh%Jh鰾%Bh頾%:h鐾%2h逾%*hp%"h`%hP%h@% h0%h %h%h%h%h %ڎh!н%Ҏh"%ʎh#鰽%Žh$頽%h%鐽%h&逽%h'p%h(`%h)P%h*@%h+0%h, %zh-%rh.%jh/%bh0%Zh1м%Rh2%Jh3鰼%Bh4頼%:h5鐼%2h6逼%*h7p%"h8`%h9P%h:@% h;0%h< %h=%h>%h?%h@%ڍhAл%ҍhB%ʍhC鰻%hD頻%hE鐻%hF逻%hGp%hH`%hIP%hJ@%hK0%hL %zhM%rhN%jhO%bhP%ZhQк%RhR%JhS鰺%BhT頺%:hU鐺%2hV逺%*hWp%"hX`%hYP%hZ@% h[0%h\ %h]%h^%h_%h`%ڌhaй%Ҍhb%ʌhc鰹%Œhd頹%he鐹%hf逹%hgp%hh`%hiP%hj@%hk0%hl %zhm%rhn%jho%bhp%Zhqи%Rhr%Jhs鰸%Bht頸%:hu鐸%2hv逸%*hwp%"hx`%hyP%hz@% h{0%h| %h}%h~%h%h%ڋhз%ҋh%ʋh鰷%‹h頷%h鐷%h逷%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zhж%Rh%Jh鰶%Bh頶%:h鐶%2h逶%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڊhе%Ҋh%ʊh鰵%Šh頵%h鐵%h逵%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zhд%Rh%Jh鰴%Bh頴%:h鐴%2h逴%*hp%"h`%hP%h@% h0%h %h%h%h%h%ډhг%҉h%ʉh鰳%‰h頳%h鐳%h逳%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zhв%Rh%Jh鰲%Bh頲%:h鐲%2h進%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڈhб%҈h%ʈh鰱%ˆh頱%h鐱%h週%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%Zhа%Rh%Jh鰰%Bh頰%:h鐰%2h逰%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڇhЯ%҇h%ʇh鰯%‡h頯%h鐯%h逯%hp%h`%h P%h @%h 0%h  %zh %rh%jh%bh%ZhЮ%Rh%Jh鰮%Bh頮%:h鐮%2h逮%*hp%"h`%hP%h@% h0%h %h%h%h%h %چh!Э%҆h"%ʆh#鰭%†h$頭%h%鐭%h&逭%h'p%h(`%h)P%h*@%h+0%h, %zh-%rh.%jh/%bh0%Zh1Ь%Rh2%Jh3鰬%Bh4頬%:h5鐬%2h6逬%*h7p%"h8`%h9P%h:@% h;0%h< %h=%h>%h?%h@%څhAЫ%҅hB%ʅhC鰫%…hD頫%hE鐫%hF逫%hGp%hH`%hIP%hJ@%hK0%hL %zhM%rhN%jhO%bhP%ZhQЪ%RhR%JhS鰪%BhT頪%:hU鐪%2hV逪%*hWp%"hX`%hYP%hZ@% h[0%h\ %h]%h^%h_%h`%ڄhaЩ%҄hb%ʄhc鰩%„hd頩%he鐩%hf逩%hgp%hh`%hiP%hj@%hk0%hl %zhm%rhn%jho%bhp%ZhqШ%Rhr%Jhs鰨%Bht頨%:hu鐨%2hv逨%*hwp%"hx`%hyP%hz@% h{0%h| %h}%h~%h%h%ڃhЧ%҃h%ʃh鰧%ƒh頧%h鐧%h逧%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%ZhЦ%Rh%Jh鰦%Bh頦%:h鐦%2h逦%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڂhХ%҂h%ʂh鰥%‚h頥%h鐥%h逥%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%ZhФ%Rh%Jh鰤%Bh頤%:h鐤%2h逤%*hp%"h`%hP%h@% h0%h %h%h%h%h%ځhУ%ҁh%ʁh鰣%h頣%h鐣%h連%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%ZhТ%Rh%Jh鰢%Bh頢%:h鐢%2h逢%*hp%"h`%hP%h@% h0%h %h%h%h%h%ڀhС%Ҁh%ʀh鰡%€h頡%h鐡%h逡%hp%h`%hP%h@%h0%h %zh%rh%jh%bh%ZhР%Rh%Jh鰠%Bh頠%:h鐠%2h造%*hp%"h`%hP%h@% h0%h %h%h%h%h%hП%h%h鰟%h頟%h鐟%h速%hp%h`%h P%h @%h 0%h  %zh %rh%jh%bh%ZhО%Rh%Jh鰞%Bh頞%:h鐞%2h逞%*hp%"h`%hP%h@% h0%h %~h%~h%~h%~h %~h!Н%~h"%~h#鰝%~h$頝%~h%鐝%~h&逝%~h'p%~h(`%~h)P%~h*@%~h+0%~h, %z~h-%r~h.%j~h/%b~h0%Z~h1М%R~h2%J~h3鰜%B~h4頜%:~h5鐜%2~h6逜%*~h7p%"~h8`%~h9P%~h:@% ~h;0%~h< %}h=%}h>%}h?%}h@%}hAЛ%}hB%}hC鰛%}hD頛%}hE鐛%}hF逛%}hGp%}hH`%}hIP%}hJ@%}hK0%}hL %z}hM%r}hN%j}hO%b}hP%Z}hQК%R}hR%J}hS鰚%B}hT頚%:}hU鐚%2}hV通%*}hWp%"}hX`%}hYP%}hZ@% }h[0%}h\ %|h]%|h^%|h_%|h`%|haЙ%|hb%|hc鰙%|hd頙%|he鐙%|hf這%|hgp%|hh`%|hiP%|hj@%|hk0%|hl %z|hm%r|hn%j|ho%b|hp%Z|hqИ%R|hr%J|hs鰘%B|ht領%:|hu鐘%2|hv逘%*|hwp%"|hx`%|hyP%|hz@% |h{0%|h| %{h}%{h~%{h%{h%{hЗ%{hH=}H}H9tH^GHt H=|H5|H)HH?HHHtH%GHtfD=|u/UH=GHt H=D]h|]{f.H1HHifAWAVAUATUSHHxD$XD$dt$hD$lHYIH'Dwd$8fA~Dt$<~D$8fJ.H,LdKEMEL$0D$4~D$0f.A $AD$L$(D$,~D$(}f.1HH?HH)‰D$\T$`HcHFHL4H)LH tAA,H t1A0L|$pB>H tA4BHu A8(HLHH9H$xH$H)$HHH tAA,H t1A0L|$pB>H tA4BHu A8(HLHH9H$H$H)$XH4H$IH$HH$RHH$H$L$HH$H$H$(H$H$H$L$H$I9(L$H$LLD$HHLHLD$LH)LH$HIH$HDH$HH$L$HlH$H[H$HD$HLT$8H\$@HLL$PL\$XHH$Hl$`Ld$hLl$pHABHABHA BHABHAHABHt~ABHtmA H t]A$.H tMA(B&H t<A,BH t+A0B.H tA4Hu A8(HLHH9H$H$H)$0HH tBAX(H t2A`L|$8B>H tAhBHu ApB HLHH9H$xH$H)$(H4H$IH$HH$/HH$H$HH$H$8H$PH$H$H$0L$0H$8I9)H$L$LL$HHHLgL$LH)LH$0HHDH$IDH$HH$8HvH$0HeH$HD$hLT$xLL$@HL\$HH\$pHH$Hl$PLd$XHABHABHAHA BHA(HA0.HA8BHtzA@BH tiAHB&H tXAPL|$`B>H tBAX(H t2A`L|$8B>H tAhBHu ApB HLHH9H$H$H)$XHH tAh(Hu ApB HLHH9H$H$H)$8H4H$IH$HH$,H$HHH$hH$H$H$H$H$H$L$H$I9:L$H$LL$HHLHML$LH)LH$HIH$HDH$HH$HH$HwH$HD$hL$LL$xHH\$@Hl$HHH$LT$pL\$PLd$XLt$`L|$8HABHABHABHA HA(HA0BHA8BHtrA@.H tbAHB&H tQAPB6H t@AXBH t/A`B>H tAh(HuApB HLHH9H$hH$H)$HA4BD>HA8BAA4BD>HA8BAAdBD>H t2Ah(AlD(HuApB(AtBD(HLHH9(H$H$ H)$HHBBDHu0D0LIIHHHL;$@HĘ[]A\A]A^A_H$8HHH$pH$H$0H$H$`H$H$HL$HH$I9H$L$LLL$HLT$HHLL$L$LLT$H)LL$LH$HHHIL$HHHH$jH$AIH5HD$0JTHLHl$(Ld$81H JGCIGGBIG B;G(BD;IG0B:G8BD:IqG@GHAITGPGX@I7G`B GhBD IGpB8GxBD8I+D+I B#BD#I B"BD"I BBDI t_)D)I t>(D(IuB BD LHHHHHH;$H$pH)$@HHH$8HIHH$0vH$HLT$@HLL$HH$xH$H$H$XH$HH$H$PL$PH$XI9H$L$LL$HHHL;L$LH)LH$PHHIL$HHH$HL$XLT$@LL$HMEHH9H|$0JDI1Hl$(Ld$8H 8H$JAGACHGG@HG C;G(CD;HG0B8G8BD8HsG@GHAHVGPGXBH9G`C GhCD HGpB:GxBD:HA+AD+H C#CD#H B BD H B BD H t_)D)H t>*D*HuB"BD"HLIHHHL9H$xH)$HHH$HIHH$~H$HL|$xHH$H$(H$H$H$PH$ H$L$H$I9L$(H$ LL$HHLHL$LH)LH$HHHH$ HIL$(HH$L|$xH^H$HMHHD$`LLT$@HL\$XH\$(LLHl$0LL$HH$ Ld$8Ll$hLt$pAFHABABDHA B>A(BD>HA0.A8D.HwA@BAHBDHVAPAX@H9A`BAhBDHApB8AxBD8HDH B&BD&H B.BD.H BBDH taB6BD6H t>DHuB BD HLHH9H$H)$XHHH$HIHH$wH$(HHH$H$H$ H$H$H$H$L$H$I9L$H$LL$HHLHlL$LH)LH$HHHH$HIL$HH$HcH$HRHHD$`LLT$@HLL$xH\$XLLLd$(L\$0H$Hl$HLl$8Lt$hL|$pAFHABABDHA BA(BDHA0BA8BDHuA@AHDHVAPAX@H9A`.AhD.HApBAxBDHB&BD&H B.BD.H B6BD6H (D(H tcB>BD>H t@B BD HuB(BD(HLHH9H$H)$HHH$(HIHH$ hHH$L$HH$hH$H$H$H$L$L$H$I90L$H$LL$HHLHL$LH)LH$HHHH$HIL$HH$IHHHtHHD$`LLl$@HL\$xH\$XLLHl$(H|$0LT$HLd$8Lt$hL|$pfDAAAAHAAB)AABD)HAA BAA(BDHAA09AA8D9HAA@AAHDHrAAPAAX@HSAA`BAAhBDH0AApBAAxBDH A)AD)H AB!ABD!H AB1ABD1H ABABDH toAB9ABD9H tJA(AD(Hu'AB ABD HMHH9H$hH)$HHH$HIHH$HHH$L$HH$HD$PH$H$HD$ L$HD$ Ll$PL9)IIL$$HH$H$MHHHfM9MHHMILLM)JLIILHHIHMHHM^MUIHD$`Lt$@JT-L\$xHt$XH|$(HL$0HLT$HLL$8Ll$hL|$pECEICBD5CBD5IC BDC(BDIC0D C8D IC@D5CHD5I_CPCX@IBC`BDChBDI CpBCxBDID=D=I BD BD I BD-BD-I BBDI tfBD=BD=I tB8D8Iu!BBD@HLHH9H<$H)|$ Ht$ HIHH$HHH$HH|$PL$HHwHHD$`Lt$@H$HL\$xH\$XHl$(LT$0H|$HHHLd$8Ll$hL|$p@AAAAHAAB1AABD1HAA BAA(BDHAA0BAA8BDHAA@AAHDHpAAPAAX@HQAA`9AAhD9H0AApBAAxBDH A)AD)H AB!ABD!H AB)ABD)H A8AD8H tqAB9ABD9H tLA(AD(Hu)AB ABD f.HMHH9H$H)$HHH$HIHH$wDMLHHIMLM)LMHHIL LL$L$HH$HD$HD$ Ll$H$Ld$H$LT$L9QIIL$H H\$Hl$MMMIM9LHLMHLHI)LHHIHHILMMMM^MUHD$`ILt$@JLLl$xLL$XHTL\$(HD$0L|$HHt$8H|$hLT$pECEICBD5CBD5IC BD-C(BD-IC0DC8DIC@BD CHBD I]CPCXBI@C`BD=ChBD=ICpB*CxBD*IBDBDI D5D5I D=D=I B:BD:I tfBDBDI tBBBDIu2D2@HLHH9H$H)$H<$HHHD$IHHT$HHH|$Ll$Ld$HHHt$`HLt$@HL\$xH|$XIT5LL$(Ht$0LLT$HH\$8Hl$hL|$p@A$AEAD$AEHAD$CD5AD$CD5HAD$ CDAD$(CDHAD$0AD5AD$8AD5HAD$@AD=AD$HAD=HAD$PAD$XBHdAD$`CDAD$hCDH>AD$pBAD$xBDHA$CD A$CD H A$ADA$ADH A$AD-A$AD-H A$BA$BDH tnA$CD=A$CD=H tFA$B A$BD HuA$A$DIMHI9H$H)|$PHHH$HIHH$sLLHLHMHI)HIHHHIfLL$$H\$MHHl$H$MIIM9LHLMHLHI)LHHIHHILMMMMfM]HD$`ILt$@JLLl$xLL$XHTL\$(HD$0L|$HHt$8H|$hLT$pfECEICBD5CBD5IC BD-C(BD-IC0DC8DIC@BD CHBD I]CPCXBI@C`BD=ChBD=ICpB*CxBD*IBDBDI D5D5I D=D=I B:BD:I tfBDBDI tBBBDIu2D2@HLHH9H$H)D$HIHHT$HHHT$fDLLHLHMHI)HIHHHIH|$9Hl$H\$H|$PH$H$DDHSLLVHfLNE1H<Du?Et.zquoOY/vaE1HAI94HHLL9tJO.{Eu7HA(AI9~HH9 fHH9t.z/t1[ø[øf.HSLLVHfLNE1H>DuBEtf.zzuxOYf/viE1HAI96HHLL9tROf.{Eu>HAf(AI9~HH9fDHH9tf.zf/t1[ø[øATH= UH-XIH!H5'LHHI$xHI$9HHH9Eo1HgHUH*xHHUH=HhHaH=}XIHHI7HHto11H=iLHHHtPH5dHCu=HL]A\@HH8A&uUPHiH5H8[E1HL]A\@L(VHVH@3WH=|VIHZfH)H5H8z[HEaHHESHUFH5HܲH81" HƲH5H8[HH5<H8ZHH5H81x"HlH5H8ZAWAVAUATUSHhHGAH$HcGH$Hw HHH$H$HPL\HG(H$0L$L$H$H$HD$HH$~"SHHTfHHH9uH$H$@E11DŽ$4D\$8HHIH$@H=DŽ$@DŽ$DD$HL\$DŽ$LDŽ$P?DŽ$TH$<H$hPjH$TH$PH$dPVH5jjjH$H$P萖$HPL$t H$Hh[]A\A]A^A_,$DLL$IH,?$<HNdH$J<`HL$HH$"H$HLH4HH$H|$PHH4H$HH$H$ H4JH|$(Ht$0H$x CH$L$J<$DHT$PJ ALKH|$@L$HH$HM{H$(K[$ JI4L$H$HLHLL$XH$H<H$LHL<$H$J<H H$H H$H H$H H$HHH$PLLIHH$HLHHHH$H$LH)H,LAHHN$I1H$xHL$NH$H H$HLL$H$HHH$L$$HD$M LDI9L$M9ALHD MFHHD!O,IL$$HHIL$M,L$M, L$ML$ML$xH$LMLL$MH$`MLH$hLL$pML$HML$0ML$8IH$H$@H$HIH$HHHL$H$HHHH$HHLH$HLH$LH$HLH$HH$H$HLH$LH$LH$LHMHH$(HH$H$ HCH$PHCH$XHCH$LHH$@H$HH$D$<HDŽ$DŽ$HD$XHD$fDHD$$H3HcH|$HH$E1DHHLL$hOLODDYA9A0EYE\D(DYEXD(DYWYE D(LT$hEYDYEXD(DYEXE E(D(DYYE\D(DY\YEXXEA H9H| D(D(HMDI|E'MLILA91DYEYE\D(DYEXD(EYDYED(DYWYEXD(DYEXDE(D(DYYE\D(DY\YEXXE!AH\$ CD Dd$EpMgHL$`HD(D(DW5DW-HH)H $ H<$ H$A(D(D(D(E(D(HJ (H$ EEEEHf.y)A(H `H xYA(YXA(YAYD(DqA(YDIYX(hpH9uH$(A((A(H$H|HH LA )YYXA0(YAYtA(YAYX!lH$PI9*H|A((HH LA )YYXA0(YAYtA(YAYX!lH$XI9H|A((HH LA )YYXA0(YAYtA(YAYX!lH$I9~PHHA(H H) YYYYAYAYXX TdH\$ HH;$LLLRDt$$4EFH$H\$XtH$HD$DD$H8LMAVMLH5ԲAUH=JUAV$AVS>$tH@H$L$LIISLJ H4HLALNIMnIIAUf.{L .H$Ht$(MgKDL$HLL$x,JH$HHD$ $ HD$pHT$`\l$hT$XL$5T$Xf(5HD$pHT$`L9l$hT$XDf(LL$xH$\D^L$H$L$$^^~IfE(f(fDW >fW=6J3IPf(f(YYX(f(AYYhf(YAYXP@HL9uMIf(IIIfA(f(J#fAffJ3N|8 DffDHHf(fD(ffDfWfYfYfD(fA(fYfE(fD\fAXAfE(fDYfAXRfA(fAfEfYfDYfD(fDXf\AfAX@L9[fMA}Dl$E[HRID$ fE(fD(fDW%I9IF fDW-I9 I„pLL)HH\HD$8f(fE(fE(fE(ffEIfEfEIH$LfDfAfA$f(fD(I I fAVfAD$fDYfYfAXfE(fDYfAYfD(fAfEAvf(fYE~fAYfXf(ffAT$At$L9oH$HL$8f(f(L,M$LLHHHHYYX*fA(KT-YAY,f(YAYXKD$H$H9~fHIf(HLHHHHYYDYYAYAYXX HT6DKD MIM93IHH$hHHLH$HHT8H@HH@HH9uE1Ht$8LHIIHf(f(IIAVAD$YYXAnfA(YAYAnf(YAYXAD$AT$L9uHL8$tH$D$0 D|$EH$HHL5$LH$ H$AWAVAUATUHSHXHGHw H$HcGH$IHH$HXH$H$H\HG(L$H$HD$(HL$pA~AT$HHTHHH9uHL$p H$4DŽ$(HI1$@HȗE1Ht$pH=\DŽ$4DŽ$8$<$@$D$L$P$TH$0H$PjjH$PH$PH$`PVH5\jjH$tH$0P($xHPt H$HX[]A\A]A^A_,$8IL$0M,HJ„tuD*D.rp(TD.rdf(f*%u*TTV(TT(V(YYYYX\AYAYl$D$~D$Ð(D(^DY((Y(YDXX\A^A^DWE.E.1A.f-((TT(*1TV(YTA.f*T(YVYYX\YY.{ .8T+VYY((fD(~=fD(f(fDTfDTfE/f(fD(f(^DYYYDXXf(\A^A^f.{^f.{XfEۺfA.E„fA.E„t|f.{f.zpfTpfVYYf(f(f(f(fD(^DYf(f(Yf(YDXX\A^A^RfD%fD(fDTfD.wfD(fDTfD.fA.fA.1ff(~-fD. If(fTfT*1f.,f(fTf(fTfVf*YfT fVf(YYYX\YY@fD.fD.„tfA.fD(fDTfA.ff(f~% **fTfTfVf(fTfTf(fVf(YYYYX\AYAY!HHNnumpy._core._multiarray_umathnumpy.core._multiarray_umath_ARRAY_API_ARRAY_API is NULL pointer_matfuncs_schur_sqrtm.errorVCTO!Niii_matfuncs_schur_sqrtmrecursive_schur_sqrtm_ARRAY_API is not PyCapsule objectmodule compiled against ABI version 0x%x but this version of numpy is 0x%xmodule was compiled against NumPy C-API version 0x%x (NumPy 1.23) but the running NumPy has C-API version 0x%x. Check the section C-API incompatibility at the Troubleshooting ImportError section at https://numpy.org/devdocs/user/troubleshooting-importerror.html#c-api-incompatibility for indications on how to solve this problem.FATAL: module compiled as unknown endianFATAL: module compiled as little endian, but detected different endianness at runtimenumpy._core.multiarray failed to importInput must be nD array of type float32, float64, complex64, or complex128.Last two dimensions of the input must be the same.Memory allocation failed in scipy.linalg.sqrtm.Unsupported input data type to scipy.linalg.sqrtm C function.Memory reallocation failed in scipy.linalg.sqrtm.scipy.linalg.sqrtm: Failed to create numpy array from data.scipy.linalg.sqrtm: Failed to create capsule.??????;3zX*3X 4x8445h46آ6,7|77#8X$@8(%d8'8L:Xfd;hsl<xt=X=h >x >4>H>\>p>Ȇ>؆>>>>>(>8?H$?X8?hL?x`?t????ȇ?؇??@@(@(<@8P@Hd@Xx@h@x@@@@@ȈA؈A,A@ATAhA(|A8AHAXAhAxAABB0BȉDB؉XBlBBBB(B8BHBXBh Cx C4CHC\CpCȊC؊CCCCC(C8DH$DX8DhLDx`DtDDDDȋD؋DDEE(E(8>9>$9>89>L9>`9>t9>9>9>9>9>9>9>:>:>(:><:>P:>d:>x:>:>:>:>:>:>:>;>;>,;>@;>T;>h;|>|;x>;t>;p>;l>;h>;d>;`><\><X>0<T>D<P>X<L>l<H><D><@><<><8><4><0><,> =(> =$>4= >H=>\=>p=>=>= >=>=>=>====>=$>=8>=L>=`>=t>=>=>=>=>=>=>=?=?=(?=m!%:K$\Z/1P-.a $ 08Mr7@e1<pd #0=<KU`  8@ `[ @'@R#8V?v4a50#>T   :i@0G`R @C[|=0>W@(SC BgO`P,5&("{GL@`l0@"Pf;f7.#KkD`O;p0y"$ K/;0J/@-" 9KP'[O CZ fH5mAVOpHyBt0(L`2l$BnXP-_03P9 -C0J .h-67pD* /)Z!p] !E7ZI BjHTtWYQ? 1A0;Fm]@P,[>rAkK0MMV>`HT,p poF%F$=K:K0$=@)pBaI&9D`[E'Bp=NN0N2``' D>+p,:6Kp+#f5=@&<; 0E3p%}5V[k `JGPpED>bGUH<PXz90+0owD0w903NiFP&mkCYa,^P()U`^f @ _\=e pJ@jU`bm3,u$?  c!ff:0c>I$p`W _  ,p&>3ppI2@7Pg%"jfZ TUW1= P  Q.2A+'J1U'S0ZD@$L11 >p(06! J$nV\p/m#@A!@Z[<ZX\0d/29U `Vp-F@#0 0CHd `pV2 @SIAXX8l4M@4$<g$ BN`L"4a] 0S NPb  n.]:W /L$XSz(0)AMDB*:JPU.-&"pV=JMpPp%PU0P>DQANZ!T5>21_ ]`hNLYPbMOZK *OFq60; 4,R 25)!06Li@ gJNVP+L 3@IO0 ȅbP  Pe]P*$ eQ rIL#<V2@PjZ,=$YZI 6P/G^8?@<*,APp+cCG0*L4)&K+%yH_[`P0=Wo04i Np4^pBJ@#@2, \`@a5P6 MO@D 'pU SP:JX ^1pa< 7I-*H&JD*@%  C02?[SrK-oC1(@rW CE>8O4:SYD dO&@pM00B08J#8[dK_R-V'/O"@@4o3 `" b.I<r  O"?k3F 3QHj8g*/pr-k%G`;"O c/.SZ- [ P`0<@U()\P!OpF)/]{:i}00_<2`rILiSXRs]'#0WJn`V670G80/H'^FMR^65>q XD8@_;@mHp6-CBG 43&*?a#/ N ^$"@FPgR0 =MPe" ? /5PPSY. /0`(aPcFpT.)XV[Y`?O >p23105)R1ND pJV 5O dH`<RBpGu)`(.M%pQY$0e(=U_H K' lpD`NT+3 VI2%(E, %Y2Y@ %+p:48JZ/0 (O:EZ0fPjP[=]_WXW71;)T+[YR'P`+d 1QXB0.m:E;@MOBP En=)n*gJ[Z{3X#H3h20T0-@.%W Hk#d-`D]0mGW k] WOZlUFPT"Q0-C&C 8pX J7GC`IP Yf\*=<~[@1PJ`ihnHK0]J09M0q4 m8, @p)rYx&[WL.DTp^Hw@" @90@T*0TL0@)|,0geImF=0Re,E SK)X6`f;<H"*]GP@]S6OM`.`GED=`%-'#F#(PH?YG I, 'B- KpC7=[l0@WPG Z (`0-60V\XIPcR%d'c1fyF-PW4Bp7T%^jS`C @;q'?g;"e`-)~MA'14J`A 60Q*%oE:{8PR_!`u0[g`F*'[kDEU o-+!'7Bn 0n+ .pP! `&Y`P]P5xZPJK6Y+ZE0X6p@Hp1>1%0!R0YW$3p;(@G0 F%&gph*mS`Z\mp1EXcpMU 3?D/0 O'W)  8peM?E:0L ,A i:5AY`[q l!@!/b(a6P%qc#+Q20mTP +F'xFPI#  SDZ( S>@@2pNGp"3p=04U?>1pZb%`$@T)AQoPdJ {S+[. &207D:H03$@p.Li`9MC8@N8/AIN%F$0,n0 (F*Pq?<0DJq AHc&`6%p J+q] @6b?KX`>8Dp<$PrF( h?A^(8uOP5 M6Q <b`5VJ 9OI 8u.=5_S`@7U`$#IYP;]@;MfEdP7Gi{X.),9@qF*h(~? %=@GPMOh:@V|Q0% =p k : i'kU(=^U ap(*V:PRTQ,PZ.{X92@`g Q+0r9l( h! NpYg)!T@YIL@ @T:;# G`F[m[ ]TC(8)U/ b* ( 8 C7 VK`k(Q&TU`4@ZK.PA D RPN EC`B=D0`]QY)< @ du;p7R^QbRV@0 $`$H Q~%"fc%-o+wY<0.~ l<` 16&]>nY)p'#U(@`k"9TP3*Ee7 qGRFa. M:F(7,,PN%O/P8(@.\ *NA7j\UpOK*a`X2X2xS~0BBX;Pt5B# OdLfy0V`X=6 ]O`G[S Z'Q VxVp P#;pV'$K P#R:.', *]iJ0b>-_j&c pcY'L3;G X<g?e):0b[rB`7R&(P7Y;" " j[4`Vf0Y#- bY`dN G7:P0\I]X] -:C!6pQIDPmVp3@8G^@&(`E6CpR='A![AX3P(R)63>4kK@D0e 7q?DpL54URBS`q@q? 2pS;'kN@H\qP0c\p?r>k'3"WSR WGP!3+pb,@j@*|BwUPPfD %PLF{HhX oRW|V0:7\8*`m1YV<8h4:C :;0J0H@@+7: hQ+pp9H9`WRp9]9I@O@_8@?P1KWgMYfA%` c68 /@230=.2B0a#J8M+@?9.pk/at@4`oH0j,6PG,0^o66%DPk.*v#>]Xh-@h+Fip00&*;X@Kt N+9 pEWz>,9vKGVy AO2GT'@Q~/mu7]95I VyJ]**>@pKSg$P]X200"S$DCPOUo%*PVF? LnA@kT39@*6 I Q(@bS K}#=RPocEZUE_ 1o#/&H@E6dPpR2)!F}*`@{`! (lJ4(CKpWII0lGF@"Z@M @9D7 @:H,,) # P?ZaRQ@l0FK@=;@/S#I !: 6g6@oP=p?&;@^J`>q`I\SiY )0##G/06BpA?@\]M@3`Y4`\P2`BP[nB/9plRD8%@f  kXpjKCp\{!08LWP33`%aZeHPI5!0 Bj?8/G.AOUnQ0IW]53pW;>? I@JH0h*e20PcN@0i!qE@,ANN$9:G% ]*@d>9'G0D"Z`2 `jm8p#? M`3Zpo,L9KRT r6&< 94%p8Qd@(`3\p55U0 `#qR@>,  H.[$1"}CA]DIUPC5p._Kpn5jg7jS3\Z7M@i+e`MON8D-.rL0  0WU@M'PdAP&FFF1 W[pg/PlJ\Rg.`K0RURP)#"5- P1Y =2p?Mw1PQP^6X GN`?@n@](C ;T*P4 .\_,l4qVh<@\1/5`768 $YW0'i<p"?!.Lp>6PL,0S_pp[ !P+N10?L@7 Y+ :`*MjMS`_-9Ak #HP`QHHa>bik-pCS`)cSZ4`njQSp*sPR]>pf<ADpiF5GC40+A ZB` K; f%N` LEP%`:ET< pM14aX '!4PB Ou+6QI?pB]  zT Q ?4G]090m30)X 9R / B`U=;P"+lL`:>n;P\?"9>09BPjL-!<4MP;2%0&}6NYpX ><hm! `=Sw`! U!L+WI4%TPD-)&8U7`]P`,B!E?=,NNgZGP&L#)]W >mpm && $1OJ1\o*mA&7@g)$X%0A9pT!5Se0\<d'oJ4;(P;OCW@IV@c 2T[o%n=@:#p!"`*\@ `8@1 2h6b.9PE Cn<Is/b)T]"bA A`T 00kB(`FLp# 0$#$ 3]`aNUF5 pTMBQ `+LA &_AZ \</P01!#\ HETp["&`Q` @D8 +H K/PW*7@E.%LRh=4* V`'0qT?;>8[`0]Nc`SRW+pg+by dkV6pR8/E "Yj\>N6 \@^&O'QDRPn U45`=O%ZP.[OPC`ct\PKR0OP_?UPhL2O<3"P<J2l3^6=3]^ .\`1CPa lBP"w :DX5 56bVA@mj0K5TL+RY0P@<FP9FHED-@Xv-PV.QqG]j1P  H33Dd\`e P0CT%`"i WE\20p@3:'E"A"M (P$" S- ,f2V S4]nJ`/Npo nZh`Tdr (7IWes(6DR_t)6DR`n{,:HVdr %3AO]ky .<JXes  & 4 B P ^ l z             , : H W e s             ( 6 D R ` n |            $ 1 > L Z h x             - ; I W e s         *8FTbp~ (7ETbp~"0>M[s '5CQ_m{-w3AN\jx-;IWes*8FTao}"0?S`n| .=KYgv*8FTbp~#0=KYgu-;IWdr %3AO]kx!/<JXft %3?M[iw+9GUcq &4BO\jx !/>LZhu   + 9 G U c q ~         !!!!/!0L0Z0h0w0000000000111,1:1H1V1d1q11111111111 22(262D2R2`2n2222222222333*383F3T3g3u3333333333444*484F4T4b4p4~4444444444 55&545B5R5`5n5|555555555566#616?6M6[6i6w666666666677"707?7M7a7o7}777777777788"808>8L8Y8g8u8888888888999*989F9T9q99999999999::#:1:>:L:Z:g:u::::::::::;;;);7;E;S;a;o;};;;;;;;;;<<<+<9<G<U<c<q<<<<<<<<<<<=="=0=>=L=Z=h=v==========>>>+>9>G>^>l>z>>>>>>>>>>??$?2?@?N?\?j?x??????????@@@,@:@H@V@c@q@@@@@@@@@@@ AA(A5ACAPA^AlAyAAAAAAAAAABB!B0B>BLBZBhBvBBBBBBBBBBCC"C0C>CMC[CiCwCCCCCCCCCCDDD-D;DIDWDeDqD~DDDDDDDDDD EE&E4EBEOE]EkEyEEEEEEEEEEFF%F3FAFOF]FkFyFFFFFFFFFFGGG.GQLQZQhQvQQQQQQQQQQQ RR&R3RAROR]RkRzRRRRRRRRRRSS!S/S=SKSYSgSuSSSSSSSSSSS TT)T>TLTZTgTtTTTTTTTTTTUUU+U9UHUVUdUqUUUUUUUUUUUVV$V2V@VLVZVhVvVVVVVVVVVVWWW*W7WEWSW`WnW{WWWWWWWWWWXX#X0X?XMX[XhXuXXXXX+HXXXXXYYY,Y9YGYUYcYqYYYYYYYYYYZZZ-Z;ZIZVZdZrZZZZZZZZZZZ [[%[2[@[N[\[j[x[[[[[[[[[[\\#\1\D\R\`\n\|\\\\\\\\\\\E ]](]5]C]Q]_]m]{]]]]]]]]]]^crtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.0__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry_matfuncs_sqrtm.ccapsule_destructorsqrtm_recursion_csqrtm_recursion_ssqrtm_recursion_zsqrtm_recursion_dswap_cf_sswap_cf_dswap_cf_cswap_cf_zPyArray_APImoduledefsqrtm_errorrecursive_schur_sqrtmsqrtm_module_methodsdoc_sqrtmblas_lapack_wrappers.c__FRAME_END____divdc3matrix_squareroot_sisschur__GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___divsc3matrix_squareroot_d__TMC_END__isschurf__dso_handlematrix_squareroot_z_DYNAMICmatrix_squareroot_cscipy_zlapmt_scipy_cgbtrf_scipy_dgelsy_scipy_zgemm_scipy_dlantp_scipy_ztrcon_scipy_zpocon_scipy_dlaqr4_scipy_sspcon_scipy_slarrb_scipy_zpptrf_scipy_sdisna_scipy_cgemqrt_scipy_zher2k_scipy_slartgp_PyExc_ImportErrorscipy_zlarnv_scipy_clantb_scipy_ssbgvd_scipy_dtpqrt_scipy_slaqge_scipy_icamax_scipy_zhetrs2_scipy_cgesvd_scipy_zlartv_scipy_cptrfs_scipy_zbdsqr_scipy_dgelq2_scipy_cgebd2_scipy_slasd6_scipy_zposv_scipy_ztrsv_scipy_csptrs_scipy_zlaqr5_scipy_dggqrf_scipy_ssfrk_PyDict_SetItemStringscipy_dormhr_scipy_dppequ_scipy_strevc_scipy_slaed7_scipy_dggrqf_scipy_chseqr_scipy_zgeqrt_scipy_dormtr_scipy_dpotri_scipy_cunm2r_scipy_checon_scipy_dlasdq_scipy_dtrmm_scipy_crotg_scipy_slamch_scipy_dsytrd_scipy_srotmg_scipy_sgbcon_scipy_dtrsm_scipy_dlaed6_scipy_dggesx_scipy_csyrk_scipy_cheevr_scipy_ztrtri_scipy_zpotri_scipy_dpotf2_scipy_cher_scipy_zhpr2_scipy_clarfb_scipy_cspcon_scipy_dpotrf_scipy_csymv_scipy_dlasda_scipy_ctrsen_scipy_ztpqrt_scipy_dlarrb_scipy_slagtm_scipy_spbcon_scipy_cgbequ_scipy_crot_scipy_strexc_scipy_cpbsvx_scipy_sormtr_scipy_dgeql2_scipy_cstemr_scipy_dlasyf_scipy_shsein_scipy_slauum_scipy_dsygv_scipy_sorm2l_scipy_strrfs_scipy_dlaqsb_scipy_ssbgvx_scipy_ztprfb_scipy_cpotrs_scipy_shgeqz_scipy_dlaln2_scipy_slasd0_scipy_ssbgst_scipy_cggglm_scipy_zlansp_scipy_sgsvj0_scipy_dspcon_scipy_dsbevx_scipy_sgelq2_scipy_ssymv_scipy_ztfttr_scipy_dlaqr1_scipy_sggglm_scipy_ssyr2k_scipy_clatrz_scipy_sorglq_scipy_ztbsv_scipy_iladlc_scipy_sgeql2_scipy_ccopy_scipy_sgebrd_scipy_sorgql_scipy_dlasq4_scipy_slaexc_scipy_zlantb_scipy_clarrv_scipy_slag2d_scipy_dsterf_scipy_drot_scipy_zlatrd_scipy_dpocon_scipy_cungrq_scipy_zgtrfs_scipy_slals0_scipy_dlarre_scipy_dlagtf_scipy_cgecon_scipy_zher_scipy_slarre_scipy_dtpsv_scipy_sptts2_scipy_zscal_scipy_sspgvx_scipy_izamax_scipy_clascl_scipy_cgghrd_scipy_cgesdd_scipy_dlaswp_scipy_clag2z_scipy_slaic1_scipy_sormqr_scipy_spftri_scipy_sgeqrfp_scipy_cher2k_scipy_slaed5_scipy_dtgsja_scipy_ctrrfs_scipy_sgbtrf_scipy_ztrti2_scipy_zlapll_scipy_dgeqrfp_scipy_zpotrf_scipy_zlarzt_scipy_ctbsv_scipy_zppsvx_scipy_zhpevx_scipy_cgbcon_scipy_csysv_scipy_slaqr5_scipy_zdscal_scipy_dgerqf_scipy_ztptri_scipy_claqr4_scipy_slarrj_scipy_dsytrf_scipy_dgebak_scipy_sopmtr_scipy_sggbak_scipy_dormql_scipy_slacn2_scipy_slasrt_scipy_zuncsd_scipy_dlanhs_scipy_slaln2_scipy_slar1v_scipy_dtrtri_scipy_chegv_scipy_ztrmm_scipy_zlaed0_scipy_sstedc_scipy_ilazlr_scipy_zsytri2x_scipy_zsprfs_scipy_dgetrs_scipy_dsgesv_scipy_dtzrzf_scipy_zsytri2_scipy_dlae2_scipy_dlanv2_scipy_dggbak_scipy_dpbcon_scipy_cgbsv_scipy_slaqr2_scipy_zhptri_scipy_zgecon_scipy_sspevd_scipy_stgsen_scipy_zhpgst_scipy_dlaruv_scipy_cpotrf_scipy_zlacon_scipy_zhfrk_scipy_dlaqps_scipy_dtpqrt2_scipy_cpoequb_scipy_cgeev_scipy_zpbtrf_scipy_slanv2___gmon_start__scipy_cptts2_scipy_dorgr2_scipy_zhecon_scipy_cunmr3_scipy_dgerq2_scipy_chegst_scipy_cbbcsd_scipy_slags2_scipy_ctrexc_scipy_zlasyf_scipy_zlartg_scipy_dlaeda_scipy_dgehd2_scipy_dlaqr2_scipy_dlauu2_scipy_stbcon_scipy_sgeequb_scipy_spttrf_scipy_zlaqps_scipy_zgeqr2p_scipy_sormr3_scipy_slarzt_scipy_zgeqrt2_scipy_slalsd_scipy_dsytri2_scipy_zlahr2_scipy_dlasd3_scipy_cgelss_scipy_zsptrs_scipy_zsyconv_scipy_dlartgp_scipy_zlaev2_scipy_zspmv_scipy_slatps_scipy_zgbsv_scipy_sasum_scipy_zhpev_scipy_dpbstf_scipy_chpsv_scipy_stpsv_scipy_zhegvx_scipy_cgetri_scipy_dgeqr2p_scipy_ssytrs__PyArg_ParseTuple_SizeTscipy_ssymm_scipy_dstev_scipy_dlarfgp_scipy_cpotri_scipy_clar2v_scipy_zgesv_scipy_zhetf2_scipy_zherfs_scipy_zggev_scipy_dorg2r_scipy_dsyevx_PyCapsule_Typescipy_ssyrfs_scipy_zposvx_scipy_cbdsqr_scipy_clagtm_scipy_ssyevx_scipy_dgeqlf_scipy_sorghr_scipy_dlargv_scipy_sstein_scipy_zlaesy_scipy_dgeesx_scipy_dgsvj1_scipy_chbgv_scipy_ctrmm_scipy_zpptrs_scipy_dsbgv_scipy_dgbbrd_scipy_chpev_scipy_zlaqp2_scipy_dtftri__finiscipy_dsygvx_scipy_sgemm_scipy_dpttrs_scipy_claqr5_scipy_clacrm_scipy_dtbsv_scipy_chegvd_scipy_ilauplo_scipy_cunghr_scipy_clalsa_scipy_ssyevr_scipy_slasd5_scipy_claswp_scipy_dgetf2_scipy_ssbevx_scipy_cgtts2_scipy_sgees_scipy_clarnv_scipy_clansp_scipy_slatrd_scipy_dormlq_scipy_sspgvd_scipy_dlapy3_scipy_cgelq2_scipy_ctpttr_scipy_slaed0_scipy_sgbtrs_scipy_ssyswapr_scipy_dlaqge_scipy_dpprfs_scipy_zgttrf_scipy_ssygvx_scipy_zhpsv_scipy_slabrd_scipy_sggrqf_scipy_zlanht_scipy_sgejsv_scipy_dorcsd_scipy_dormrz_scipy_sgesv_scipy_chprfs_scipy_stprfs_scipy_sptsvx_scipy_zlarfx_scipy_zcopy_scipy_ctpttf_scipy_sgtsvx_scipy_dlasd6_scipy_sgels_scipy_spocon_scipy_zhptrd_scipy_zungql_scipy_zggevx_scipy_cgemm_scipy_dlasdt_scipy_csytri2_malloc@@GLIBC_2.2.5scipy_cgtsv_scipy_zhpgvd_scipy_ctprfb_scipy_cgeru_scipy_dlansy_scipy_zdrscl_scipy_cgetrf_scipy_ssyrk_scipy_dlalsa_scipy_cgesv_scipy_sorgr2_scipy_dlarrk_scipy_dlacpy_scipy_sopgtr_scipy_spbsv_scipy_dlarrv_scipy_ztpmqrt_scipy_zhbgst_scipy_zhetrf_scipy_zgbbrd_scipy_sgemqrt_scipy_spotrf_scipy_slansy_scipy_sgesvd_scipy_dsygvd_scipy_csteqr_scipy_dsptrs_scipy_dlatbs_scipy_strsna_scipy_ztrttp_PyExc_ModuleNotFoundErrorscipy_slartv_scipy_claqr2_scipy_cheevx_scipy_sladiv_scipy_chbgvd_scipy_zlar2v_scipy_zsytrf_scipy_slamrg_scipy_zheev_scipy_zgeevx_scipy_sporfs_scipy_dggev_scipy_dpptrf_scipy_dgtsvx_scipy_clansb_scipy_dpotrs_scipy_dgbequ_scipy_cppequ_scipy_dnrm2_scipy_sptrfs_scipy_dswap_scipy_ssbev_scipy_zgebrd_scipy_slacon_scipy_dlaed5_scipy_chegvx_scipy_ssteqr_scipy_cung2l_scipy_stpttr_scipy_sorgbr_scipy_ssytri2_scipy_chetd2_scipy_dlartgs_scipy_clags2_scipy_sbdsdc_scipy_spstrf_scipy_dtrsyl_scipy_zsyr2k_scipy_cpbtf2_scipy_ztrtrs_scipy_zpotrs_scipy_sgelss_scipy_ztfsm_scipy_slaqsy_scipy_zhpmv_scipy_dsptrd_scipy_zhbevx_scipy_cupgtr_scipy_slargv_scipy_zhemm_scipy_sgbequ_scipy_ctrsv_scipy_zgbequb_scipy_zlauum_scipy_claed7_scipy_cppcon_scipy_zgees_scipy_slantb_scipy_dlasq3_scipy_dlaed0_scipy_cgglse_scipy_ilaclc_scipy_sstev_scipy_dtprfs_scipy_zsytrs2_scipy_sgetf2_scipy_sgeev_scipy_zhetri2_scipy_dsyevr_scipy_sstevd_scipy_zgeqp3_scipy_zlaqr1_scipy_sgesdd_scipy_cpftrf_scipy_cpbtrs_scipy_dlaexc_scipy_ctrmv_scipy_zpbtf2_scipy_zgeqlf_scipy_clangb_scipy_clarzt_scipy_dspgv_scipy_cptsv_scipy_dtrevc_scipy_zgerqf_scipy_slantr_scipy_dger_scipy_ctrtri_scipy_sgesvj_scipy_cgeevx_scipy_sspsvx_scipy_chptrd_scipy_dorm2r_scipy_chpr2_scipy_zunmrq_scipy_sger_scipy_scsum1_scipy_dormrq_scipy_zggbak_scipy_zlabrd_scipy_dlarrf_scipy_dcabs1_scipy_zpftrf_scipy_ssygvd_scipy_dgeqrf_scipy_zgeqrfp_scipy_dsyrfs_scipy_cgerfs_scipy_ztrsyl_scipy_drotg_scipy_cpoequ_scipy_csyr_scipy_claqsy_scipy_dlarfx_scipy_dlatrz_scipy_zlagtm_scipy_dlabrd_scipy_dorgql_scipy_zggrqf_scipy_slaqr1_scipy_dlar2v_scipy_zlansy_scipy_dlanst_scipy_dgglse_scipy_dpbrfs_scipy_zgbtrs_scipy_sstevx_scipy_zlarcm_scipy_clalsd_scipy_dzsum1_scipy_zsymm_scipy_zgelqf_scipy_sgeqr2_scipy_zpbsv_PyErr_Formatscipy_dlarra_scipy_dhseqr__ITM_deregisterTMCloneTablescipy_sgeevx_scipy_dgghrd_scipy_zgeqrt3_scipy_sppsvx_scipy_csyswapr_scipy_stgex2_scipy_cppsvx_scipy_chpgvd_scipy_sdot_scipy_dgelss_scipy_ztgsen_scipy_dgeqrt3_scipy_clahr2_scipy_slartg_scipy_dlabad_scipy_dsymm_scipy_clartv_scipy_dlatps_scipy_clatrd_scipy_claqsb_scipy_ztbtrs_scipy_zlaqr0_scipy_sorg2r_scipy_claed0_scipy_slae2_scipy_dspevd_scipy_slasv2_scipy_zgeequb_scipy_csyr2k_scipy_dspgvd_scipy_cgesc2_scipy_dorgl2_scipy_ctftri_scipy_ssptri_scipy_zhemv_scipy_zptrfs_scipy_dstevx_scipy_slasq6_PyErr_ExceptionMatchesscipy_dsptri_scipy_dlaed3_scipy_dlaebz_scipy_slaed6_scipy_ctrsna_scipy_ddisna_scipy_sgehrd_scipy_claqhp_scipy_dtrmv_scipy_sgeesx_scipy_ztpqrt2_scipy_clacrt_scipy_csptri_scipy_dgtts2_scipy_cherk_scipy_zlanhb_scipy_zgebd2_free@@GLIBC_2.2.5scipy_dlapll_scipy_stfttp_scipy_ctgsen_scipy_spprfs_scipy_dlartv_scipy_zpbstf_scipy_sgelqf_scipy_ssbgv_scipy_dpptrs_scipy_slaqsb_scipy_dsteqr_scipy_zhetrd_scipy_dorgrq_scipy_clange_scipy_sormlq_scipy_clanhf_scipy_cunmhr_scipy_dsysvx_scipy_stptri_scipy_chptri_scipy_clarf_scipy_cggev_scipy_slatrs_scipy_dtfttp_scipy_strtri_scipy_chbev__ITM_registerTMCloneTablescipy_chesv_scipy_chgeqz_scipy_dgtrfs_scipy_dgsvj0_scipy_drscl_scipy_slarrv_scipy_dlaic1_scipy_cpotf2_scipy_shseqr_scipy_slaed9_scipy_cungbr_scipy_clarz_scipy_chegs2_scipy_zlacp2_scipy_sgsvj1_scipy_zgebak_scipy_chbmv_scipy_stbmv_scipy_ssytrd_scipy_zcposv_scipy_zlag2c_scipy_cggesx_scipy_dsygst_scipy_dgebrd_scipy_dlaed4_scipy_dptts2_scipy_dtrcon_scipy_dorml2_scipy_zgghrd_scipy_zunmtr_scipy_clapll_PyCapsule_Newscipy_zunmlq_scipy_dgbtf2_scipy_dsbmv_scipy_ztpttr_scipy_zlanhs_scipy_sgeqrf_scipy_clauu2_scipy_claqp2_scipy_spptrf_scipy_cpbequ_scipy_ctpmqrt_scipy_slatdf_scipy_cgerc_scipy_zheequb_scipy_sgeqp3_scipy_slarzb_scipy_csscal_scipy_dlatrd_scipy_cunmql_scipy_stpmv_scipy_chpmv_scipy_zlaqr3_scipy_cgehrd_scipy_dlasd7_scipy_ztrsna_scipy_sptsv_scipy_zhpgvx_scipy_strcon_scipy_zsymv_scipy_dlarzb_scipy_cunmr2_scipy_slascl___cxa_finalize@@GLIBC_2.2.5scipy_slatbs_scipy_slapmr_scipy_cgges_scipy_slasy2_scipy_slassq_scipy_stpqrt2_scipy_cposv_scipy_claqgb_scipy_zgeqr2_scipy_cptcon_scipy_zhpgv_scipy_dsygs2_scipy_ilaver_scipy_zpstrf_scipy_clapmt_scipy_sspgv_scipy_dlapmt_scipy_cgeqr2_scipy_spptrs_scipy_cgtrfs_scipy_slaein_scipy_zptsv_scipy_cgeqr2p_scipy_cgerq2_scipy_sgebal_scipy_ilaslr_scipy_sgelsd_scipy_cung2r_scipy_dlasy2_scipy_clansy_scipy_ctrttf_scipy_sgerfs_scipy_sggesx_scipy_dgesv_scipy_cpptrs_scipy_dpoequ_scipy_zgeru_scipy_zunmrz_scipy_zhbgvx_scipy_cpbsv_scipy_spbtf2_scipy_csytrf_scipy_cpftri_scipy_csytri2x_scipy_ztgevc_scipy_ssyevd_scipy_ctgevc_scipy_chptrf_scipy_ctptrs_scipy_claqr1_scipy_dtptri_scipy_dgebal_scipy_dgtcon_scipy_sorgrq_scipy_dgeev_scipy_stgsy2_scipy_spbtrf_scipy_cpttrf_scipy_cgehd2_scipy_dlasq2_scipy_dlaqr3_scipy_dstegr_scipy_zsycon_scipy_zungqr_scipy_cggrqf_scipy_dgbmv_scipy_zsyrfs_scipy_dsytd2_scipy_slas2_scipy_srot_scipy_zlar1v_scipy_csprfs_scipy_clarfg_scipy_sgglse_scipy_zhseqr_scipy_dlasd0_scipy_zlange_scipy_zlalsa_scipy_zunm2l_scipy_zpteqr_scipy_ztgsy2_scipy_dgees_scipy_cgttrf_scipy_dormqr_scipy_zhetd2_scipy_dlasd2_scipy_sgetrf_scipy_chetrs_scipy_zhesvx_scipy_dgesc2_scipy_zung2l_scipy_idamax_scipy_cggbak_scipy_dstevr_scipy_dormbr_scipy_zspcon_scipy_ctpsv_scipy_dorgtr_scipy_dtgsen_scipy_ctbmv_scipy_clarfgp_scipy_cswap_scipy_zgehd2_scipy_zgerc_scipy_zlaqhp_scipy_slarrc_scipy_clahqr_scipy_sormql_scipy_slarft_scipy_sppsv_scipy_zlaqsb_scipy_zpbsvx_scipy_stfttr_scipy_csysvx_scipy_ztgsja_scipy_zgesvd_scipy_zhegv_scipy_cgebak_scipy_zgetc2_scipy_clarfx_scipy_stprfb_scipy_dlartg_scipy_slaset_scipy_zung2r_scipy_sbbcsd_scipy_dgebd2_scipy_sstevr_scipy_sspsv_scipy_zlarfg_scipy_dgbsvx_cabs@@GLIBC_2.2.5scipy_iladlr_scipy_zpprfs_scipy_ctrti2_scipy_slapy2_scipy_sormhr_scipy_dlagv2_scipy_dtfttr_scipy_clacon_scipy_slahqr_scipy_dsbev_scipy_slaqgb_scipy_dgels_scipy_stpqrt_scipy_zheevd_scipy_cstedc_scipy_cunmtr_scipy_csyequb_scipy_claqps_scipy_cgetrs_scipy_zsysvx_scipy_slasd1_scipy_zpttrs_scipy_zupmtr_scipy_cgeqrt3_scipy_chetf2_scipy_dscal_PyModule_GetDictscipy_zhegst_scipy_dlagts_scipy_chbtrd_scipy_dlatdf_scipy_dlarrj_scipy_sgesvx_scipy_dlag2_scipy_zhbtrd_scipy_cheev_scipy_dgemqrt_scipy_zhegs2_scipy_clangt_scipy_dgeqrt_scipy_cgbrfs_scipy_dposvx_scipy_zlaein_scipy_dsbevd_scipy_zptts2_scipy_ctpqrt2_scipy_zgerfs_scipy_strtrs_scipy_dspsv_scipy_ssprfs_scipy_ssytrf_scipy_cgbtrs_scipy_ctrttp_scipy_zunmbr_scipy_dtbcon_scipy_dorm2l_scipy_chbgvx_scipy_dsbtrd_scipy_cpbtrf_scipy_zgetrs_scipy_dlahqr_scipy_dstevd_scipy_dgttrf_scipy_srotm_scipy_slasyf_scipy_slarf_scipy_zhbgvd_scipy_zgbrfs_scipy_dlasd5_scipy_ssytrs2_scipy_dlaqp2_scipy_zlantp_scipy_ssytri2x_scipy_clasr_scipy_cungqr_scipy_ztrsen_scipy_sormrq_scipy_dtgsna_scipy_zupgtr_scipy_zsptrf_scipy_clacp2_scipy_spttrs_PyExc_RuntimeErrorscipy_dsytrs2_scipy_slasd7_scipy_spftrf_scipy_zsptri_scipy_chetri2_scipy_cgesvx_scipy_zggglm_scipy_zher2_scipy_dlarfg_scipy_sgttrs_scipy_dporfs_scipy_dsbgvx_scipy_dorglq_scipy_cgtsvx_scipy_cgelsy_cabsf@@GLIBC_2.2.5scipy_dgeevx_scipy_ssygs2_scipy_zgglse_scipy_cgeql2_scipy_zlargv_scipy_dsyr2_scipy_ctptri_scipy_zgeqrf_scipy_csptrf_scipy_ssytd2_scipy_dhgeqz_scipy_slapy3_scipy_dtptrs_scipy_zheevx_scipy_zlatrs_scipy_zpstf2_scipy_clanhe_scipy_ztbcon_scipy_dpbsvx_scipy_zheevr_scipy_ztptrs_scipy_zstegr_scipy_dbdsdc_scipy_zbbcsd_scipy_dorbdb_scipy_cgbtf2_scipy_dpbequ_scipy_zggqrf_scipy_zunghr_scipy_clanht_scipy_cpftrs_scipy_spotri_scipy_csytf2_scipy_dtgsyl_scipy_zsyswapr_scipy_dlarft_scipy_dspgst_scipy_dtrsen_scipy_cgerqf_scipy_dsbgvd_scipy_ssytri_scipy_dlarfb_scipy_dlarz_scipy_cgeqrf_scipy_zggbal_scipy_ztrrfs_scipy_zporfs_scipy_dstemr_scipy_slaswp_scipy_slansp_scipy_dlaqgb_scipy_dlatrs_scipy_zlacrm_scipy_slarrk_scipy_cgetf2_scipy_dlascl_scipy_slarnv_scipy_cgbequb_scipy_sgerq2_scipy_classq_scipy_cgelsd_scipy_zlaqr4_scipy_zheswapr_scipy_dsytf2_scipy_zlansb_scipy_ztgsyl_scipy_zunm2r_scipy_zgbcon_scipy_dgelqf_scipy_sgeqrt3_scipy_stgsna_hypotf@@GLIBC_2.2.5scipy_zpoequ_scipy_zgbsvx_scipy_zpftri_scipy_chpr_scipy_claein_scipy_dtrexc_scipy_dggbal_scipy_snrm2_scipy_zungl2_scipy_zlags2_scipy_dspevx_scipy_zgebal_scipy_zlahqr_scipy_sptcon_scipy_cungl2_scipy_dggevx_scipy_zgerq2_scipy_dgtsv_scipy_dsyr2k_scipy_cporfs_scipy_dtrsv_scipy_slaqsp_scipy_dbbcsd_scipy_cscal_scipy_dggglm_scipy_ztzrzf_scipy_slarrr_scipy_slarfgp_scipy_zspsvx_scipy_zlaqhb_scipy_dtpcon_scipy_cgttrs_scipy_dstebz_scipy_zstein_scipy_ctgsyl_scipy_slalsa_PyInit__matfuncs_schur_sqrtmscipy_cgeqlf_scipy_lsame_scipy_dsysv_scipy_sgetrs_scipy_dsfrk_scipy_spteqr_scipy_cgeequb_scipy_sgebak_scipy_zrot_scipy_sspr2_scipy_cgeqrt2_scipy_zlascl_scipy_sgetc2_scipy_claic1_scipy_zlarf_scipy_sgetri_scipy_dgetrf_scipy_sgbsv_scipy_sgecon_scipy_zlatps_scipy_zaxpy_scipy_slansb_scipy_dlas2_scipy_slaev2_scipy_dpftrf_scipy_zhgeqz_scipy_ssbevd_scipy_ilatrans_scipy_clanhb_scipy_slasq2_scipy_dlamch_scipy_ddot_scipy_slaed2_scipy_slasd4_scipy_zlanhf_scipy_cpbstf_scipy_cpbcon_scipy_dlasq1_scipy_isamax_scipy_cgtcon_scipy_ctgex2_scipy_clantp_scipy_dlacn2_scipy_xerbla_array_scipy_dsytri2x_scipy_zlantr_scipy_drotm_scipy_dspmv_scipy_dlaqsp_scipy_ssbtrd_scipy_zlacn2_scipy_ilazlc_scipy_dsytri_scipy_stbtrs_scipy_clauum_scipy_slar2v_scipy_ztrsm_scipy_dposv_scipy_chemm_scipy_zlaed8_scipy_dgemv_scipy_clacn2_scipy_sggqrf_scipy_dopmtr_scipy_strmm_scipy_dlasd8_scipy_claqsp_scipy_chetrd_scipy_spstf2_scipy_dlansf_scipy_cspsvx_scipy_ctgsja_scipy_sormrz_scipy_dormr3_scipy_dsposv_scipy_slaeda_scipy_zgemqrt_scipy_dptrfs_scipy_zlaic1_scipy_slarrd_scipy_dlasd1_scipy_dladiv_scipy_dlaqsy_scipy_sgbmv_scipy_dgejsv_scipy_sggev_scipy_zgeequ_scipy_dlaein_scipy_dlag2s_PyObject_GetAttrStringscipy_cgetc2_scipy_zpotf2_scipy_zstedc_scipy_cgeqrfp_scipy_sspmv_scipy_ztgex2_scipy_zhetri2x_scipy_spotf2_scipy_zhetri_scipy_zsytri_scipy_dlauum_scipy_zsytrs_scipy_dtpttr_scipy_clarcm_scipy_cgebal_scipy_dpptri_scipy_slanhs_scipy_dpbtrs_scipy_slangb_scipy_csycon_scipy_cspmv_scipy_dtgsy2_scipy_dlaed8_scipy_sbdsqr_scipy_cgelqf_scipy_slaqtr_scipy_cherfs_scipy_zlalsd_scipy_stzrzf_scipy_dspev_scipy_cuncsd_scipy_scasum_scipy_dgesvx_scipy_dlasq6_scipy_dlangb_scipy_zlassq_scipy_cher2_scipy_zlaqhe_scipy_cpbrfs_scipy_chbevx_scipy_stpmqrt_scipy_cheevd_scipy_dlacon_scipy_dgeequ_scipy_spoequb_scipy_slahr2_scipy_dpteqr_scipy_dbdsqr_scipy_sspevx_scipy_zlasr_scipy_claqhe_scipy_slarz_scipy_slaed8_scipy_ssyev_scipy_zstemr_scipy_csyrfs_scipy_zppsv_scipy_ssygst_scipy_slaqr3_scipy_dsyrk_scipy_dpftrs_scipy_clar1v_scipy_dtfsm_scipy_zunmql_scipy_cheswapr_scipy_claset__Py_NoneStructscipy_zpftrs_scipy_sgemv_scipy_dgeqrt2_scipy_dtgex2_scipy_cunmrq_scipy_sgesc2_scipy_stptrs_scipy_chptrs_scipy_scopy_scipy_dgemm_scipy_zhbevd_PyErr_NewExceptionscipy_ssyequb_scipy_dlat2s_scipy_dlaset_scipy_spptri_scipy_ztrttf_scipy_dgesdd_scipy_dlahr2_scipy_zhpevd_scipy_dpftri_scipy_ztrevc_scipy_slartgs_scipy_dtprfb_scipy_cungql_scipy_dlags2_scipy_dtpmqrt_scipy_claed8_scipy_dtpttf_scipy_csyconv_scipy_stgsyl_scipy_chemv_scipy_ztftri_scipy_clarft_scipy_ssyr2_scipy_dlaed1_scipy_sorg2l_scipy_dpstrf_scipy_zppcon_scipy_zhptrf_scipy_zlatbs_scipy_dsprfs_scipy_slabad_scipy_dsyr_scipy_chpgv_scipy_zsteqr_scipy_dgttrs_scipy_sorgqr_scipy_clatdf_scipy_dlassq_scipy_slarfx_scipy_cpptri_scipy_zggesx_scipy_stpttf_scipy_dpbtf2_scipy_ztgexc_scipy_sstegr_scipy_cggqrf_scipy_zgesdd_scipy_sposv_scipy_chpcon_scipy_stpcon_scipy_dgecon_scipy_zgbequ_scipy_cspsv_scipy_clatps_scipy_ctbrfs_PyErr_Printscipy_ztfttp_scipy_dstedc_scipy_zlangt_csqrtf@@GLIBC_2.2.5scipy_chpgvx_scipy_sgeqr2p_scipy_dlaev2_scipy_ctbcon_scipy_sgtcon_scipy_clatrs_scipy_spftrs_scipy_spoequ_scipy_cunmrz_scipy_dlarrc_scipy_zgbmv_scipy_zsysv_scipy_dlansp_scipy_cpocon_scipy_zlauu2_scipy_sgtts2_scipy_cungr2_scipy_ctrsyl_scipy_zunmhr_scipy_chetri_scipy_sorgl2_scipy_dpoequb_scipy_zgeesx_scipy_dlaqr0_scipy_stfsm_scipy_dsyswapr_scipy_ssptrs_scipy_slapmt_scipy_sposvx_scipy_ztrexc_scipy_zgeql2_scipy_zlatrz_scipy_cunm2l_scipy_slaqr0_scipy_ztrmv_scipy_iladiag_scipy_sgbsvx_scipy_zgttrs_scipy_dpstf2_scipy_dtpmv_csqrt@@GLIBC_2.2.5scipy_zlacrt_scipy_zpbrfs_scipy_slagtf_scipy_dlarzt_scipy_zlarz_scipy_clapmr_scipy_zgesvx_scipy_spotrs_scipy_zhpsvx_scipy_dptsv_scipy_chetrf_scipy_zptcon_scipy_dlapmr_scipy_zlarfb_scipy_strsm_scipy_slarrf_scipy_cggbal_scipy_dptcon_scipy_dasum_scipy_zptsvx_scipy_dlar1v_scipy_cgels_scipy_slange_scipy_slangt_scipy_slaed3_scipy_slasq3_scipy_slasr_scipy_dlamrg_scipy_csytrs_scipy_clanhs_scipy_clargv_scipy_srscl_scipy_dgeqr2_scipy_cpttrs_scipy_zhegvd_scipy_sgbrfs_scipy_dtgevc_scipy_cgbbrd_scipy_zlat2c_scipy_dspsvx_scipy_strmv_scipy_zgeev_scipy_claev2_scipy_stgsja_scipy_dorghr_scipy_zungtr_scipy_dlaqtr_scipy_claqge_scipy_sggbal_scipy_dorgbr_scipy_cposvx_scipy_cunmlq_scipy_ilaclr_scipy_ieeeck__Py_Deallocscipy_cpptrf_scipy_zgbtrf_scipy_zppequ_scipy_zgetrf_scipy_dgelsd_scipy_dsbgst_scipy_ssptrd_scipy_slaqp2_PyImport_ImportModulescipy_dgbcon_scipy_ztbrfs_scipy_ctfttp_scipy_zpptri_scipy_cgbsvx_scipy_ztpsv_scipy_chbgst_scipy_dgbtrf_scipy_cpprfs_PyErr_Clearscipy_zlatdf_scipy_dgges_scipy_zlanhe_scipy_claqr3_scipy_dlagtm_scipy_dznrm2_scipy_sormbr_PyModule_Create2scipy_dgbrfs_scipy_dsytrs_scipy_zsyequb_scipy_zgtsv_scipy_sgeqlf_scipy_dsyev_scipy_dtrtrs_scipy_slasdq_scipy_cggevx_scipy_zunmqr_scipy_clanhp_scipy_dtrrfs_scipy_slasd2_scipy_sppcon_scipy_dtgexc_scipy_cgeesx_scipy_zlapmr_scipy_slasd3_scipy_sspev_scipy_zlaswp_scipy_cgeequ_scipy_zunglq_scipy_zlacpy_scipy_dgesvj_scipy_dlaqr5_scipy_ssytf2_scipy_zgtsvx_scipy_zpbcon_scipy_slarra_scipy_dopgtr_scipy_zhetrs_scipy_sgges_scipy_slansf_scipy_slanst_scipy_sspr_scipy_zlaqsp_scipy_dtbtrs_scipy_dlasd4_scipy_sgbtf2_scipy_slapll_scipy_zswap_scipy_slarfg_scipy_daxpy_scipy_slaebz_scipy_chla_transtype_scipy_dptsvx_scipy_zrotg_scipy_dtrti2_scipy_dspr_scipy_slasda_scipy_dlarnv_scipy_zdrot_scipy_dspgvx_scipy_sggevx_scipy_zhpr_scipy_zgelsd_scipy_ilaprec_scipy_slacpy_scipy_zhptrs_scipy_dlalsd_scipy_sgerqf_scipy_dtrttp_scipy_chetrs2_PyErr_SetStringscipy_strttp_scipy_sgtrfs_scipy_cupmtr_scipy_dlasr_scipy_sdsdot_scipy_claesy_scipy_sgebd2_scipy_sormr2_scipy_clahef_scipy_dsdot_scipy_dgeequb_scipy_zlaqr2_scipy_strsen_scipy_zpoequb_scipy_sorcsd_scipy_clacgv_scipy_cpstrf_scipy_csytri_scipy_dppsvx_scipy_dtbrfs_scipy_zpttrf_scipy_sgghrd_scipy_sgttrf_scipy_cspr_scipy_zungbr_scipy_dgbsv_scipy_dlange_scipy_zgges_scipy_dppsv_scipy_sswap_scipy_zhbmv_scipy_zlaed7_scipy_dsyequb_scipy_zlangb_scipy_ztpcon_scipy_zgehrd_scipy_caxpy_scipy_claqr0_scipy_sgehd2_scipy_dtrsna_scipy_cstegr_scipy_cheequb_scipy_sspgst_scipy_cstein_scipy_ctzrzf_scipy_dorgqr_scipy_ssysv_scipy_sgbbrd_scipy_sstemr_scipy_dgerfs_scipy_claqhb_scipy_csytrs2_scipy_dsptrf_scipy_dlarf_scipy_stftri_scipy_zlals0_scipy_cunbdb_scipy_cunml2_scipy_scnrm2_scipy_stgevc_scipy_ctrsm_scipy_dlapy2_scipy_zlaqge_scipy_saxpy_scipy_cppsv_scipy_zungr2_scipy_sgbequb_scipy_slarfb_scipy_zgesc2_scipy_icmax1_scipy_dlantb_scipy_slantp_scipy_ssysvx_realloc@@GLIBC_2.2.5scipy_zgelsy_scipy_zunmr3_scipy_ztbmv_scipy_csrot_scipy_chpsvx_scipy_sppequ_scipy_dlarrd_scipy_ilaslc_scipy_clasyf_scipy_csrscl_scipy_slatrz_scipy_dgbequb_scipy_izmax1_scipy_dlansb_scipy_dlaed2_scipy_ctpqrt_scipy_ctrevc_scipy_chsein_scipy_zlarfgp_scipy_sgelsy_scipy_slaruv_scipy_zhesv_scipy_slasd8_scipy_cgeqrt_scipy_zhbev_scipy_cpstf2_scipy_zgelss_scipy_ztgsna_scipy_cgemv_scipy_ztpmv_scipy_slaqps_scipy_ssptrf_scipy_dlantr_scipy_ctfttr_scipy_chpevd_scipy_dpbtrf_scipy_dsyevd_scipy_ssyr_scipy_disnan_scipy_dgeqp3_scipy_zcgesv_scipy_dormr2_scipy_ctgsy2_scipy_ssycon_scipy_stbsv_scipy_strti2_scipy_zhpcon_scipy_zlarzb_scipy_chbevd_scipy_zgemv_scipy_dgetri_scipy_ctprfs_scipy_dppcon_scipy_sorml2_scipy_slag2_scipy_ztprfs_scipy_zlaqsy_scipy_ctfsm_scipy_zungrq_scipy_zherk_scipy_chpgst_scipy_cgebrd_scipy_stgexc_scipy_dtrttf_scipy_dlasrt_scipy_cptsvx_scipy_clabrd_scipy_slasq1_scipy_clals0_scipy_strsyl_scipy_drotmg_scipy_slaed1_scipy_csymm_scipy_sgeqrt2_scipy_zhprfs_scipy_sorgtr_scipy_ctpmv_scipy_cgees_scipy_dgetc2_scipy_zgelq2_scipy_dcopy_scipy_zlarrv_scipy_dlangt_scipy_chetri2x_scipy_zpbtrs_scipy_slagts_scipy_dlaneg_scipy_spbstf_scipy_cunglq_scipy_ssyconv_scipy_ssbmv_scipy_cgbmv_scipy_sgeqrt_scipy_zlaqgb_scipy_dsycon_scipy_ctrtrs_scipy_dpttrf_scipy_zpbequ_scipy_zlacgv_PyCapsule_GetPointerscipy_ctpcon_scipy_zgtcon_scipy_sorm2r_scipy_dgbtrs_scipy_slasdt_scipy_slasq4_scipy_ctgsna_scipy_chfrk_scipy_dgesvd_scipy_zunbdb_scipy_strttf_scipy_zspsv_scipy_dlasv2_scipy_dgehrd_scipy_slaed4_scipy_sgeequ_scipy_spbtrs_scipy_ctrcon_scipy_clarzb_scipy_dlals0_scipy_cgeqp3_scipy_zgtts2_scipy_zlanhp_scipy_sgtsv_scipy_spbrfs_scipy_zspr_scipy_ctbtrs_scipy_sscal_scipy_chesvx_scipy_zsytf2_scipy_ztpttf_scipy_zunmr2_scipy_clatbs_scipy_dlaed7_scipy_chpevx_scipy_zunml2_scipy_srotg_scipy_zgbtf2_scipy_zsyrk__Py_BuildValue_SizeTscipy_stbrfs_scipy_spbequ_scipy_zsyr_scipy_zgels_scipy_dsyconv_scipy_clartg_hypot@@GLIBC_2.2.5scipy_sorbdb_scipy_zhsein_scipy_cunmqr_scipy_slagv2_scipy_zgetri_scipy_dzasum_scipy_zlahef_scipy_dspr2_scipy_spbsvx__initscipy_dstein_scipy_dlaed9_scipy_ssygv_scipy_cungtr_scipy_zlaset_scipy_slauu2_scipy_zlarft_scipy_dpbsv_scipy_clacpy_scipy_ssterf_scipy_dlarrr_scipy_cunmbr_scipy_ctgexc_scipy_dorg2l_scipy_slaqr4_scipy_dhsein_scipy_sstebz_scipy_zgetf2_scipy_dtbmv_scipy_dsymv_scipy_strsv_scipy_clantr_scipy_zhbgv_scipy_cpteqr_.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.got.plt.data.bss.commentHo Uo@dnB  Hxs  @h~``G_ww ȅȅ3@]M]M]M_OH`P04@@@ 0/< ^ 0$.o((008 XX0P0@2[GNUu y ?'U xa@عQ #XYT$B;*U39 ]<R\B0:M+ RGOM /=T| Q B.)y+G68 V&J**O+ a'r[9n/03"- l,^YT3+yA+sS'}X%80@ m+G"@+$(I7>.z?9G$BXe;7#<B P6,,q42W$x6X&?. >24@34?'8P*8,.blS*K19%"i x;eOBEC}  ((9?@(58m03PYPTRUN :]XJ<|/>&6)7=Y##97;1dU 8OC2bWV,1SW!$ 8* :NHC;FN&INM$0 T: _X)nLtOV 8&SRL"%$(E43BhQI?<4JM9/O& WVVW&~OUT>fHMb*Lq E%:.v%WJNMM>K(.DT DD ?%CpO  FU,ZQ 0 /qI,XKq2D!=Bx 4@b>)7C_$ |73E{$+KDYNs76Pc4(*5F%BdRn7)'4@tNZKKZo'A /N6#Hc f+# P?&!>h@;&nX)LjMH49A95.9-@(UGYC{<.:7 R7Wi9L6IA; + 2]+U BjBH7"C\G>tEf&62A1 lYT4W;-L;^>3IHSsI9'! 2D0W5,4M.#DIQ5v"TIo@-(A1nJ:I5 nC)Z3*KN&/TDJ/ BYn%(O_!<)K:?%P#r T*H?DR1nI4S%5! 94d CJAFJX2nO<Q!F\(fWvQ>7->H^M-  )bCkUc.=]-!!(8U44X !BPHv'$EAu&S4B+:.\Mf)? 4/F, p>0G 8 U  e,A<#;W7R8xTHO6HsJEHO .!W,31)gK[ZbXzP5$AN F>t|L4<6j(JQ 7'4YB=NGV&f<R"8>;: >=F I"N.2bU*CC$r A3 n8U  3w24j(Nc5O6*DZRLx@WD` 0 ^? eF@C '$-V"Z "VR/<Q6N&&POZZ~UDX\ )@M&5+"MkY U.)Ut)_0yDDI7LQ;`?;AQSF(XJL1 JFI&=Y21DaC9RTL2UW:?"'08r,s:kFLd  W<U[  L" N(&5"`LL %+bO,U'RJG-SCXE# $vZ/) ,J"G. *>S;DLXH'E$PE&Y@{0[;VAB/==@IV 9 YKh%7 +,.)N + {DuKH rRR J.E!e: 1LzSTUW}*LXsVG( F*KY$GA0W%2-k1 ,fEZ%& KYT.>9m$x(O%<U &; q5 Q0M`/PRXhZ-H]T5WFgTsH=TO1 YO$-HOAH `J # ;V Y3<|;-V0Q0j -V?9V '/6,A 3U  R5|R 6i33^S9&|8*MwB2=G#7=^Pj@'% jm!G/P{%BN2/E2E;o +TO<6(E'tA#@*i-`8I,O;&!%dA]6HZ""G TeV WM+AxMEW(rW%1? +9*w9G00"2 ); PG -N!'q# S>Q\ F{!@9,CR<D8yDVUD:1*/Z$KT~#C05F:=/ LjD2(}'AzYy"M*Xl<0"01UsFWK!>+TNBSw-e7 V B?';0KF* XC JAyF;H9tW-4P 5h"+6@@%V#S-7Z?*I$EB/CI:A YIS:b /2v3K+X*OS8&RJUAfN ,pU5$+R < +U1% 997==U#]BQL[350 4S-)IIF)LZ#%46)-<!22HTJx,|C:Wp8U H  pPS PP<"?9/VK4.1g= Z]1<cAQ0 P=BSw ZO$r+/U67YG##K+QFO.P`XRI3G4y1C2J)E"3CA-M%EO@./FQ$"Q0ZL3`;|J1#:EIZ! )qA%i2~>*2#!HGR4<MK= LI6Xg; :C $~*.?C!G)MDqGMR *Dk+?8XQU>Z[ -F1'5d=cG7QE5KNl? `I R#!T8c#Z@[DM75Qq.;,SNaK?~u==HYG V'3 83@a#d KlP6L@VG)WXZ""ZH E>@V|I.8>NX8JOu@.>"DR>VRp*D-&(:'!CJ>x7L wXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX[,[[K[  w]]o(X [ `H  oooo__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizePyCapsule_GetPointerfreecabsfcsqrtfhypotfcabscsqrthypotPyInit__matfuncs_schur_sqrtmPyImport_ImportModulePyObject_GetAttrStringPyCapsule_TypePyModule_Create2PyModule_GetDictPyErr_NewExceptionPyDict_SetItemStringPyExc_ModuleNotFoundErrorPyErr_ExceptionMatchesPyErr_PrintPyExc_ImportErrorPyErr_SetString_Py_DeallocPyErr_ClearPyExc_RuntimeErrorPyErr_Formatmalloc_PyArg_ParseTuple_SizeT_Py_BuildValue_SizeTreallocPyCapsule_New_Py_NoneStructscipy_caxpy_scipy_ccopy_scipy_cgbmv_scipy_cgemm_scipy_cgemv_scipy_cgerc_scipy_cgeru_scipy_chbmv_scipy_chemm_scipy_chemv_scipy_cher_scipy_cher2_scipy_cher2k_scipy_cherk_scipy_chpmv_scipy_chpr_scipy_chpr2_scipy_crotg_scipy_cscal_scipy_csrot_scipy_csscal_scipy_cswap_scipy_csymm_scipy_csyr2k_scipy_csyrk_scipy_ctbmv_scipy_ctbsv_scipy_ctpmv_scipy_ctpsv_scipy_ctrmm_scipy_ctrmv_scipy_ctrsm_scipy_ctrsv_scipy_dasum_scipy_daxpy_scipy_dcabs1_scipy_dcopy_scipy_ddot_scipy_dgbmv_scipy_dgemm_scipy_dgemv_scipy_dger_scipy_dnrm2_scipy_drot_scipy_drotg_scipy_drotm_scipy_drotmg_scipy_dsbmv_scipy_dscal_scipy_dsdot_scipy_dspmv_scipy_dspr_scipy_dspr2_scipy_dswap_scipy_dsymm_scipy_dsymv_scipy_dsyr_scipy_dsyr2_scipy_dsyr2k_scipy_dsyrk_scipy_dtbmv_scipy_dtbsv_scipy_dtpmv_scipy_dtpsv_scipy_dtrmm_scipy_dtrmv_scipy_dtrsm_scipy_dtrsv_scipy_dzasum_scipy_dznrm2_scipy_icamax_scipy_idamax_scipy_isamax_scipy_izamax_scipy_lsame_scipy_sasum_scipy_saxpy_scipy_scasum_scipy_scnrm2_scipy_scopy_scipy_sdot_scipy_sdsdot_scipy_sgbmv_scipy_sgemm_scipy_sgemv_scipy_sger_scipy_snrm2_scipy_srot_scipy_srotg_scipy_srotm_scipy_srotmg_scipy_ssbmv_scipy_sscal_scipy_sspmv_scipy_sspr_scipy_sspr2_scipy_sswap_scipy_ssymm_scipy_ssymv_scipy_ssyr_scipy_ssyr2_scipy_ssyr2k_scipy_ssyrk_scipy_stbmv_scipy_stbsv_scipy_stpmv_scipy_stpsv_scipy_strmm_scipy_strmv_scipy_strsm_scipy_strsv_scipy_zaxpy_scipy_zcopy_scipy_zdrot_scipy_zdscal_scipy_zgbmv_scipy_zgemm_scipy_zgemv_scipy_zgerc_scipy_zgeru_scipy_zhbmv_scipy_zhemm_scipy_zhemv_scipy_zher_scipy_zher2_scipy_zher2k_scipy_zherk_scipy_zhpmv_scipy_zhpr_scipy_zhpr2_scipy_zrotg_scipy_zscal_scipy_zswap_scipy_zsymm_scipy_zsyr2k_scipy_zsyrk_scipy_ztbmv_scipy_ztbsv_scipy_ztpmv_scipy_ztpsv_scipy_ztrmm_scipy_ztrmv_scipy_ztrsm_scipy_ztrsv_scipy_cbbcsd_scipy_cbdsqr_scipy_cgbbrd_scipy_cgbcon_scipy_cgbequ_scipy_cgbequb_scipy_cgbrfs_scipy_cgbsv_scipy_cgbsvx_scipy_cgbtf2_scipy_cgbtrf_scipy_cgbtrs_scipy_cgebak_scipy_cgebal_scipy_cgebd2_scipy_cgebrd_scipy_cgecon_scipy_cgeequ_scipy_cgeequb_scipy_cgees_scipy_cgeesx_scipy_cgeev_scipy_cgeevx_scipy_cgehd2_scipy_cgehrd_scipy_cgelq2_scipy_cgelqf_scipy_cgels_scipy_cgelsd_scipy_cgelss_scipy_cgelsy_scipy_cgemqrt_scipy_cgeql2_scipy_cgeqlf_scipy_cgeqp3_scipy_cgeqr2_scipy_cgeqr2p_scipy_cgeqrf_scipy_cgeqrfp_scipy_cgeqrt_scipy_cgeqrt2_scipy_cgeqrt3_scipy_cgerfs_scipy_cgerq2_scipy_cgerqf_scipy_cgesc2_scipy_cgesdd_scipy_cgesv_scipy_cgesvd_scipy_cgesvx_scipy_cgetc2_scipy_cgetf2_scipy_cgetrf_scipy_cgetri_scipy_cgetrs_scipy_cggbak_scipy_cggbal_scipy_cgges_scipy_cggesx_scipy_cggev_scipy_cggevx_scipy_cggglm_scipy_cgghrd_scipy_cgglse_scipy_cggqrf_scipy_cggrqf_scipy_cgtcon_scipy_cgtrfs_scipy_cgtsv_scipy_cgtsvx_scipy_cgttrf_scipy_cgttrs_scipy_cgtts2_scipy_chbev_scipy_chbevd_scipy_chbevx_scipy_chbgst_scipy_chbgv_scipy_chbgvd_scipy_chbgvx_scipy_chbtrd_scipy_checon_scipy_cheequb_scipy_cheev_scipy_cheevd_scipy_cheevr_scipy_cheevx_scipy_chegs2_scipy_chegst_scipy_chegv_scipy_chegvd_scipy_chegvx_scipy_cherfs_scipy_chesv_scipy_chesvx_scipy_cheswapr_scipy_chetd2_scipy_chetf2_scipy_chetrd_scipy_chetrf_scipy_chetri_scipy_chetri2_scipy_chetri2x_scipy_chetrs_scipy_chetrs2_scipy_chfrk_scipy_chgeqz_scipy_chla_transtype_scipy_chpcon_scipy_chpev_scipy_chpevd_scipy_chpevx_scipy_chpgst_scipy_chpgv_scipy_chpgvd_scipy_chpgvx_scipy_chprfs_scipy_chpsv_scipy_chpsvx_scipy_chptrd_scipy_chptrf_scipy_chptri_scipy_chptrs_scipy_chsein_scipy_chseqr_scipy_clabrd_scipy_clacgv_scipy_clacn2_scipy_clacon_scipy_clacp2_scipy_clacpy_scipy_clacrm_scipy_clacrt_scipy_claed0_scipy_claed7_scipy_claed8_scipy_claein_scipy_claesy_scipy_claev2_scipy_clag2z_scipy_clags2_scipy_clagtm_scipy_clahef_scipy_clahqr_scipy_clahr2_scipy_claic1_scipy_clals0_scipy_clalsa_scipy_clalsd_scipy_clangb_scipy_clange_scipy_clangt_scipy_clanhb_scipy_clanhe_scipy_clanhf_scipy_clanhp_scipy_clanhs_scipy_clanht_scipy_clansb_scipy_clansp_scipy_clansy_scipy_clantb_scipy_clantp_scipy_clantr_scipy_clapll_scipy_clapmr_scipy_clapmt_scipy_claqgb_scipy_claqge_scipy_claqhb_scipy_claqhe_scipy_claqhp_scipy_claqp2_scipy_claqps_scipy_claqr0_scipy_claqr1_scipy_claqr2_scipy_claqr3_scipy_claqr4_scipy_claqr5_scipy_claqsb_scipy_claqsp_scipy_claqsy_scipy_clar1v_scipy_clar2v_scipy_clarcm_scipy_clarf_scipy_clarfb_scipy_clarfg_scipy_clarfgp_scipy_clarft_scipy_clarfx_scipy_clargv_scipy_clarnv_scipy_clarrv_scipy_clartg_scipy_clartv_scipy_clarz_scipy_clarzb_scipy_clarzt_scipy_clascl_scipy_claset_scipy_clasr_scipy_classq_scipy_claswp_scipy_clasyf_scipy_clatbs_scipy_clatdf_scipy_clatps_scipy_clatrd_scipy_clatrs_scipy_clatrz_scipy_clauu2_scipy_clauum_scipy_cpbcon_scipy_cpbequ_scipy_cpbrfs_scipy_cpbstf_scipy_cpbsv_scipy_cpbsvx_scipy_cpbtf2_scipy_cpbtrf_scipy_cpbtrs_scipy_cpftrf_scipy_cpftri_scipy_cpftrs_scipy_cpocon_scipy_cpoequ_scipy_cpoequb_scipy_cporfs_scipy_cposv_scipy_cposvx_scipy_cpotf2_scipy_cpotrf_scipy_cpotri_scipy_cpotrs_scipy_cppcon_scipy_cppequ_scipy_cpprfs_scipy_cppsv_scipy_cppsvx_scipy_cpptrf_scipy_cpptri_scipy_cpptrs_scipy_cpstf2_scipy_cpstrf_scipy_cptcon_scipy_cpteqr_scipy_cptrfs_scipy_cptsv_scipy_cptsvx_scipy_cpttrf_scipy_cpttrs_scipy_cptts2_scipy_crot_scipy_cspcon_scipy_cspmv_scipy_cspr_scipy_csprfs_scipy_cspsv_scipy_cspsvx_scipy_csptrf_scipy_csptri_scipy_csptrs_scipy_csrscl_scipy_cstedc_scipy_cstegr_scipy_cstein_scipy_cstemr_scipy_csteqr_scipy_csycon_scipy_csyconv_scipy_csyequb_scipy_csymv_scipy_csyr_scipy_csyrfs_scipy_csysv_scipy_csysvx_scipy_csyswapr_scipy_csytf2_scipy_csytrf_scipy_csytri_scipy_csytri2_scipy_csytri2x_scipy_csytrs_scipy_csytrs2_scipy_ctbcon_scipy_ctbrfs_scipy_ctbtrs_scipy_ctfsm_scipy_ctftri_scipy_ctfttp_scipy_ctfttr_scipy_ctgevc_scipy_ctgex2_scipy_ctgexc_scipy_ctgsen_scipy_ctgsja_scipy_ctgsna_scipy_ctgsy2_scipy_ctgsyl_scipy_ctpcon_scipy_ctpmqrt_scipy_ctpqrt_scipy_ctpqrt2_scipy_ctprfb_scipy_ctprfs_scipy_ctptri_scipy_ctptrs_scipy_ctpttf_scipy_ctpttr_scipy_ctrcon_scipy_ctrevc_scipy_ctrexc_scipy_ctrrfs_scipy_ctrsen_scipy_ctrsna_scipy_ctrsyl_scipy_ctrti2_scipy_ctrtri_scipy_ctrtrs_scipy_ctrttf_scipy_ctrttp_scipy_ctzrzf_scipy_cunbdb_scipy_cuncsd_scipy_cung2l_scipy_cung2r_scipy_cungbr_scipy_cunghr_scipy_cungl2_scipy_cunglq_scipy_cungql_scipy_cungqr_scipy_cungr2_scipy_cungrq_scipy_cungtr_scipy_cunm2l_scipy_cunm2r_scipy_cunmbr_scipy_cunmhr_scipy_cunml2_scipy_cunmlq_scipy_cunmql_scipy_cunmqr_scipy_cunmr2_scipy_cunmr3_scipy_cunmrq_scipy_cunmrz_scipy_cunmtr_scipy_cupgtr_scipy_cupmtr_scipy_dbbcsd_scipy_dbdsdc_scipy_dbdsqr_scipy_ddisna_scipy_dgbbrd_scipy_dgbcon_scipy_dgbequ_scipy_dgbequb_scipy_dgbrfs_scipy_dgbsv_scipy_dgbsvx_scipy_dgbtf2_scipy_dgbtrf_scipy_dgbtrs_scipy_dgebak_scipy_dgebal_scipy_dgebd2_scipy_dgebrd_scipy_dgecon_scipy_dgeequ_scipy_dgeequb_scipy_dgees_scipy_dgeesx_scipy_dgeev_scipy_dgeevx_scipy_dgehd2_scipy_dgehrd_scipy_dgejsv_scipy_dgelq2_scipy_dgelqf_scipy_dgels_scipy_dgelsd_scipy_dgelss_scipy_dgelsy_scipy_dgemqrt_scipy_dgeql2_scipy_dgeqlf_scipy_dgeqp3_scipy_dgeqr2_scipy_dgeqr2p_scipy_dgeqrf_scipy_dgeqrfp_scipy_dgeqrt_scipy_dgeqrt2_scipy_dgeqrt3_scipy_dgerfs_scipy_dgerq2_scipy_dgerqf_scipy_dgesc2_scipy_dgesdd_scipy_dgesv_scipy_dgesvd_scipy_dgesvj_scipy_dgesvx_scipy_dgetc2_scipy_dgetf2_scipy_dgetrf_scipy_dgetri_scipy_dgetrs_scipy_dggbak_scipy_dggbal_scipy_dgges_scipy_dggesx_scipy_dggev_scipy_dggevx_scipy_dggglm_scipy_dgghrd_scipy_dgglse_scipy_dggqrf_scipy_dggrqf_scipy_dgsvj0_scipy_dgsvj1_scipy_dgtcon_scipy_dgtrfs_scipy_dgtsv_scipy_dgtsvx_scipy_dgttrf_scipy_dgttrs_scipy_dgtts2_scipy_dhgeqz_scipy_dhsein_scipy_dhseqr_scipy_disnan_scipy_dlabad_scipy_dlabrd_scipy_dlacn2_scipy_dlacon_scipy_dlacpy_scipy_dladiv_scipy_dlae2_scipy_dlaebz_scipy_dlaed0_scipy_dlaed1_scipy_dlaed2_scipy_dlaed3_scipy_dlaed4_scipy_dlaed5_scipy_dlaed6_scipy_dlaed7_scipy_dlaed8_scipy_dlaed9_scipy_dlaeda_scipy_dlaein_scipy_dlaev2_scipy_dlaexc_scipy_dlag2_scipy_dlag2s_scipy_dlags2_scipy_dlagtf_scipy_dlagtm_scipy_dlagts_scipy_dlagv2_scipy_dlahqr_scipy_dlahr2_scipy_dlaic1_scipy_dlaln2_scipy_dlals0_scipy_dlalsa_scipy_dlalsd_scipy_dlamch_scipy_dlamrg_scipy_dlaneg_scipy_dlangb_scipy_dlange_scipy_dlangt_scipy_dlanhs_scipy_dlansb_scipy_dlansf_scipy_dlansp_scipy_dlanst_scipy_dlansy_scipy_dlantb_scipy_dlantp_scipy_dlantr_scipy_dlanv2_scipy_dlapll_scipy_dlapmr_scipy_dlapmt_scipy_dlapy2_scipy_dlapy3_scipy_dlaqgb_scipy_dlaqge_scipy_dlaqp2_scipy_dlaqps_scipy_dlaqr0_scipy_dlaqr1_scipy_dlaqr2_scipy_dlaqr3_scipy_dlaqr4_scipy_dlaqr5_scipy_dlaqsb_scipy_dlaqsp_scipy_dlaqsy_scipy_dlaqtr_scipy_dlar1v_scipy_dlar2v_scipy_dlarf_scipy_dlarfb_scipy_dlarfg_scipy_dlarfgp_scipy_dlarft_scipy_dlarfx_scipy_dlargv_scipy_dlarnv_scipy_dlarra_scipy_dlarrb_scipy_dlarrc_scipy_dlarrd_scipy_dlarre_scipy_dlarrf_scipy_dlarrj_scipy_dlarrk_scipy_dlarrr_scipy_dlarrv_scipy_dlartg_scipy_dlartgp_scipy_dlartgs_scipy_dlartv_scipy_dlaruv_scipy_dlarz_scipy_dlarzb_scipy_dlarzt_scipy_dlas2_scipy_dlascl_scipy_dlasd0_scipy_dlasd1_scipy_dlasd2_scipy_dlasd3_scipy_dlasd4_scipy_dlasd5_scipy_dlasd6_scipy_dlasd7_scipy_dlasd8_scipy_dlasda_scipy_dlasdq_scipy_dlasdt_scipy_dlaset_scipy_dlasq1_scipy_dlasq2_scipy_dlasq3_scipy_dlasq4_scipy_dlasq6_scipy_dlasr_scipy_dlasrt_scipy_dlassq_scipy_dlasv2_scipy_dlaswp_scipy_dlasy2_scipy_dlasyf_scipy_dlat2s_scipy_dlatbs_scipy_dlatdf_scipy_dlatps_scipy_dlatrd_scipy_dlatrs_scipy_dlatrz_scipy_dlauu2_scipy_dlauum_scipy_dopgtr_scipy_dopmtr_scipy_dorbdb_scipy_dorcsd_scipy_dorg2l_scipy_dorg2r_scipy_dorgbr_scipy_dorghr_scipy_dorgl2_scipy_dorglq_scipy_dorgql_scipy_dorgqr_scipy_dorgr2_scipy_dorgrq_scipy_dorgtr_scipy_dorm2l_scipy_dorm2r_scipy_dormbr_scipy_dormhr_scipy_dorml2_scipy_dormlq_scipy_dormql_scipy_dormqr_scipy_dormr2_scipy_dormr3_scipy_dormrq_scipy_dormrz_scipy_dormtr_scipy_dpbcon_scipy_dpbequ_scipy_dpbrfs_scipy_dpbstf_scipy_dpbsv_scipy_dpbsvx_scipy_dpbtf2_scipy_dpbtrf_scipy_dpbtrs_scipy_dpftrf_scipy_dpftri_scipy_dpftrs_scipy_dpocon_scipy_dpoequ_scipy_dpoequb_scipy_dporfs_scipy_dposv_scipy_dposvx_scipy_dpotf2_scipy_dpotrf_scipy_dpotri_scipy_dpotrs_scipy_dppcon_scipy_dppequ_scipy_dpprfs_scipy_dppsv_scipy_dppsvx_scipy_dpptrf_scipy_dpptri_scipy_dpptrs_scipy_dpstf2_scipy_dpstrf_scipy_dptcon_scipy_dpteqr_scipy_dptrfs_scipy_dptsv_scipy_dptsvx_scipy_dpttrf_scipy_dpttrs_scipy_dptts2_scipy_drscl_scipy_dsbev_scipy_dsbevd_scipy_dsbevx_scipy_dsbgst_scipy_dsbgv_scipy_dsbgvd_scipy_dsbgvx_scipy_dsbtrd_scipy_dsfrk_scipy_dsgesv_scipy_dspcon_scipy_dspev_scipy_dspevd_scipy_dspevx_scipy_dspgst_scipy_dspgv_scipy_dspgvd_scipy_dspgvx_scipy_dsposv_scipy_dsprfs_scipy_dspsv_scipy_dspsvx_scipy_dsptrd_scipy_dsptrf_scipy_dsptri_scipy_dsptrs_scipy_dstebz_scipy_dstedc_scipy_dstegr_scipy_dstein_scipy_dstemr_scipy_dsteqr_scipy_dsterf_scipy_dstev_scipy_dstevd_scipy_dstevr_scipy_dstevx_scipy_dsycon_scipy_dsyconv_scipy_dsyequb_scipy_dsyev_scipy_dsyevd_scipy_dsyevr_scipy_dsyevx_scipy_dsygs2_scipy_dsygst_scipy_dsygv_scipy_dsygvd_scipy_dsygvx_scipy_dsyrfs_scipy_dsysv_scipy_dsysvx_scipy_dsyswapr_scipy_dsytd2_scipy_dsytf2_scipy_dsytrd_scipy_dsytrf_scipy_dsytri_scipy_dsytri2_scipy_dsytri2x_scipy_dsytrs_scipy_dsytrs2_scipy_dtbcon_scipy_dtbrfs_scipy_dtbtrs_scipy_dtfsm_scipy_dtftri_scipy_dtfttp_scipy_dtfttr_scipy_dtgevc_scipy_dtgex2_scipy_dtgexc_scipy_dtgsen_scipy_dtgsja_scipy_dtgsna_scipy_dtgsy2_scipy_dtgsyl_scipy_dtpcon_scipy_dtpmqrt_scipy_dtpqrt_scipy_dtpqrt2_scipy_dtprfb_scipy_dtprfs_scipy_dtptri_scipy_dtptrs_scipy_dtpttf_scipy_dtpttr_scipy_dtrcon_scipy_dtrevc_scipy_dtrexc_scipy_dtrrfs_scipy_dtrsen_scipy_dtrsna_scipy_dtrsyl_scipy_dtrti2_scipy_dtrtri_scipy_dtrtrs_scipy_dtrttf_scipy_dtrttp_scipy_dtzrzf_scipy_dzsum1_scipy_icmax1_scipy_ieeeck_scipy_ilaclc_scipy_ilaclr_scipy_iladiag_scipy_iladlc_scipy_iladlr_scipy_ilaprec_scipy_ilaslc_scipy_ilaslr_scipy_ilatrans_scipy_ilauplo_scipy_ilaver_scipy_ilazlc_scipy_ilazlr_scipy_izmax1_scipy_sbbcsd_scipy_sbdsdc_scipy_sbdsqr_scipy_scsum1_scipy_sdisna_scipy_sgbbrd_scipy_sgbcon_scipy_sgbequ_scipy_sgbequb_scipy_sgbrfs_scipy_sgbsv_scipy_sgbsvx_scipy_sgbtf2_scipy_sgbtrf_scipy_sgbtrs_scipy_sgebak_scipy_sgebal_scipy_sgebd2_scipy_sgebrd_scipy_sgecon_scipy_sgeequ_scipy_sgeequb_scipy_sgees_scipy_sgeesx_scipy_sgeev_scipy_sgeevx_scipy_sgehd2_scipy_sgehrd_scipy_sgejsv_scipy_sgelq2_scipy_sgelqf_scipy_sgels_scipy_sgelsd_scipy_sgelss_scipy_sgelsy_scipy_sgemqrt_scipy_sgeql2_scipy_sgeqlf_scipy_sgeqp3_scipy_sgeqr2_scipy_sgeqr2p_scipy_sgeqrf_scipy_sgeqrfp_scipy_sgeqrt_scipy_sgeqrt2_scipy_sgeqrt3_scipy_sgerfs_scipy_sgerq2_scipy_sgerqf_scipy_sgesc2_scipy_sgesdd_scipy_sgesv_scipy_sgesvd_scipy_sgesvj_scipy_sgesvx_scipy_sgetc2_scipy_sgetf2_scipy_sgetrf_scipy_sgetri_scipy_sgetrs_scipy_sggbak_scipy_sggbal_scipy_sgges_scipy_sggesx_scipy_sggev_scipy_sggevx_scipy_sggglm_scipy_sgghrd_scipy_sgglse_scipy_sggqrf_scipy_sggrqf_scipy_sgsvj0_scipy_sgsvj1_scipy_sgtcon_scipy_sgtrfs_scipy_sgtsv_scipy_sgtsvx_scipy_sgttrf_scipy_sgttrs_scipy_sgtts2_scipy_shgeqz_scipy_shsein_scipy_shseqr_scipy_slabad_scipy_slabrd_scipy_slacn2_scipy_slacon_scipy_slacpy_scipy_sladiv_scipy_slae2_scipy_slaebz_scipy_slaed0_scipy_slaed1_scipy_slaed2_scipy_slaed3_scipy_slaed4_scipy_slaed5_scipy_slaed6_scipy_slaed7_scipy_slaed8_scipy_slaed9_scipy_slaeda_scipy_slaein_scipy_slaev2_scipy_slaexc_scipy_slag2_scipy_slag2d_scipy_slags2_scipy_slagtf_scipy_slagtm_scipy_slagts_scipy_slagv2_scipy_slahqr_scipy_slahr2_scipy_slaic1_scipy_slaln2_scipy_slals0_scipy_slalsa_scipy_slalsd_scipy_slamch_scipy_slamrg_scipy_slangb_scipy_slange_scipy_slangt_scipy_slanhs_scipy_slansb_scipy_slansf_scipy_slansp_scipy_slanst_scipy_slansy_scipy_slantb_scipy_slantp_scipy_slantr_scipy_slanv2_scipy_slapll_scipy_slapmr_scipy_slapmt_scipy_slapy2_scipy_slapy3_scipy_slaqgb_scipy_slaqge_scipy_slaqp2_scipy_slaqps_scipy_slaqr0_scipy_slaqr1_scipy_slaqr2_scipy_slaqr3_scipy_slaqr4_scipy_slaqr5_scipy_slaqsb_scipy_slaqsp_scipy_slaqsy_scipy_slaqtr_scipy_slar1v_scipy_slar2v_scipy_slarf_scipy_slarfb_scipy_slarfg_scipy_slarfgp_scipy_slarft_scipy_slarfx_scipy_slargv_scipy_slarnv_scipy_slarra_scipy_slarrb_scipy_slarrc_scipy_slarrd_scipy_slarre_scipy_slarrf_scipy_slarrj_scipy_slarrk_scipy_slarrr_scipy_slarrv_scipy_slartg_scipy_slartgp_scipy_slartgs_scipy_slartv_scipy_slaruv_scipy_slarz_scipy_slarzb_scipy_slarzt_scipy_slas2_scipy_slascl_scipy_slasd0_scipy_slasd1_scipy_slasd2_scipy_slasd3_scipy_slasd4_scipy_slasd5_scipy_slasd6_scipy_slasd7_scipy_slasd8_scipy_slasda_scipy_slasdq_scipy_slasdt_scipy_slaset_scipy_slasq1_scipy_slasq2_scipy_slasq3_scipy_slasq4_scipy_slasq6_scipy_slasr_scipy_slasrt_scipy_slassq_scipy_slasv2_scipy_slaswp_scipy_slasy2_scipy_slasyf_scipy_slatbs_scipy_slatdf_scipy_slatps_scipy_slatrd_scipy_slatrs_scipy_slatrz_scipy_slauu2_scipy_slauum_scipy_sopgtr_scipy_sopmtr_scipy_sorbdb_scipy_sorcsd_scipy_sorg2l_scipy_sorg2r_scipy_sorgbr_scipy_sorghr_scipy_sorgl2_scipy_sorglq_scipy_sorgql_scipy_sorgqr_scipy_sorgr2_scipy_sorgrq_scipy_sorgtr_scipy_sorm2l_scipy_sorm2r_scipy_sormbr_scipy_sormhr_scipy_sorml2_scipy_sormlq_scipy_sormql_scipy_sormqr_scipy_sormr2_scipy_sormr3_scipy_sormrq_scipy_sormrz_scipy_sormtr_scipy_spbcon_scipy_spbequ_scipy_spbrfs_scipy_spbstf_scipy_spbsv_scipy_spbsvx_scipy_spbtf2_scipy_spbtrf_scipy_spbtrs_scipy_spftrf_scipy_spftri_scipy_spftrs_scipy_spocon_scipy_spoequ_scipy_spoequb_scipy_sporfs_scipy_sposv_scipy_sposvx_scipy_spotf2_scipy_spotrf_scipy_spotri_scipy_spotrs_scipy_sppcon_scipy_sppequ_scipy_spprfs_scipy_sppsv_scipy_sppsvx_scipy_spptrf_scipy_spptri_scipy_spptrs_scipy_spstf2_scipy_spstrf_scipy_sptcon_scipy_spteqr_scipy_sptrfs_scipy_sptsv_scipy_sptsvx_scipy_spttrf_scipy_spttrs_scipy_sptts2_scipy_srscl_scipy_ssbev_scipy_ssbevd_scipy_ssbevx_scipy_ssbgst_scipy_ssbgv_scipy_ssbgvd_scipy_ssbgvx_scipy_ssbtrd_scipy_ssfrk_scipy_sspcon_scipy_sspev_scipy_sspevd_scipy_sspevx_scipy_sspgst_scipy_sspgv_scipy_sspgvd_scipy_sspgvx_scipy_ssprfs_scipy_sspsv_scipy_sspsvx_scipy_ssptrd_scipy_ssptrf_scipy_ssptri_scipy_ssptrs_scipy_sstebz_scipy_sstedc_scipy_sstegr_scipy_sstein_scipy_sstemr_scipy_ssteqr_scipy_ssterf_scipy_sstev_scipy_sstevd_scipy_sstevr_scipy_sstevx_scipy_ssycon_scipy_ssyconv_scipy_ssyequb_scipy_ssyev_scipy_ssyevd_scipy_ssyevr_scipy_ssyevx_scipy_ssygs2_scipy_ssygst_scipy_ssygv_scipy_ssygvd_scipy_ssygvx_scipy_ssyrfs_scipy_ssysv_scipy_ssysvx_scipy_ssyswapr_scipy_ssytd2_scipy_ssytf2_scipy_ssytrd_scipy_ssytrf_scipy_ssytri_scipy_ssytri2_scipy_ssytri2x_scipy_ssytrs_scipy_ssytrs2_scipy_stbcon_scipy_stbrfs_scipy_stbtrs_scipy_stfsm_scipy_stftri_scipy_stfttp_scipy_stfttr_scipy_stgevc_scipy_stgex2_scipy_stgexc_scipy_stgsen_scipy_stgsja_scipy_stgsna_scipy_stgsy2_scipy_stgsyl_scipy_stpcon_scipy_stpmqrt_scipy_stpqrt_scipy_stpqrt2_scipy_stprfb_scipy_stprfs_scipy_stptri_scipy_stptrs_scipy_stpttf_scipy_stpttr_scipy_strcon_scipy_strevc_scipy_strexc_scipy_strrfs_scipy_strsen_scipy_strsna_scipy_strsyl_scipy_strti2_scipy_strtri_scipy_strtrs_scipy_strttf_scipy_strttp_scipy_stzrzf_scipy_xerbla_array_scipy_zbbcsd_scipy_zbdsqr_scipy_zcgesv_scipy_zcposv_scipy_zdrscl_scipy_zgbbrd_scipy_zgbcon_scipy_zgbequ_scipy_zgbequb_scipy_zgbrfs_scipy_zgbsv_scipy_zgbsvx_scipy_zgbtf2_scipy_zgbtrf_scipy_zgbtrs_scipy_zgebak_scipy_zgebal_scipy_zgebd2_scipy_zgebrd_scipy_zgecon_scipy_zgeequ_scipy_zgeequb_scipy_zgees_scipy_zgeesx_scipy_zgeev_scipy_zgeevx_scipy_zgehd2_scipy_zgehrd_scipy_zgelq2_scipy_zgelqf_scipy_zgels_scipy_zgelsd_scipy_zgelss_scipy_zgelsy_scipy_zgemqrt_scipy_zgeql2_scipy_zgeqlf_scipy_zgeqp3_scipy_zgeqr2_scipy_zgeqr2p_scipy_zgeqrf_scipy_zgeqrfp_scipy_zgeqrt_scipy_zgeqrt2_scipy_zgeqrt3_scipy_zgerfs_scipy_zgerq2_scipy_zgerqf_scipy_zgesc2_scipy_zgesdd_scipy_zgesv_scipy_zgesvd_scipy_zgesvx_scipy_zgetc2_scipy_zgetf2_scipy_zgetrf_scipy_zgetri_scipy_zgetrs_scipy_zggbak_scipy_zggbal_scipy_zgges_scipy_zggesx_scipy_zggev_scipy_zggevx_scipy_zggglm_scipy_zgghrd_scipy_zgglse_scipy_zggqrf_scipy_zggrqf_scipy_zgtcon_scipy_zgtrfs_scipy_zgtsv_scipy_zgtsvx_scipy_zgttrf_scipy_zgttrs_scipy_zgtts2_scipy_zhbev_scipy_zhbevd_scipy_zhbevx_scipy_zhbgst_scipy_zhbgv_scipy_zhbgvd_scipy_zhbgvx_scipy_zhbtrd_scipy_zhecon_scipy_zheequb_scipy_zheev_scipy_zheevd_scipy_zheevr_scipy_zheevx_scipy_zhegs2_scipy_zhegst_scipy_zhegv_scipy_zhegvd_scipy_zhegvx_scipy_zherfs_scipy_zhesv_scipy_zhesvx_scipy_zheswapr_scipy_zhetd2_scipy_zhetf2_scipy_zhetrd_scipy_zhetrf_scipy_zhetri_scipy_zhetri2_scipy_zhetri2x_scipy_zhetrs_scipy_zhetrs2_scipy_zhfrk_scipy_zhgeqz_scipy_zhpcon_scipy_zhpev_scipy_zhpevd_scipy_zhpevx_scipy_zhpgst_scipy_zhpgv_scipy_zhpgvd_scipy_zhpgvx_scipy_zhprfs_scipy_zhpsv_scipy_zhpsvx_scipy_zhptrd_scipy_zhptrf_scipy_zhptri_scipy_zhptrs_scipy_zhsein_scipy_zhseqr_scipy_zlabrd_scipy_zlacgv_scipy_zlacn2_scipy_zlacon_scipy_zlacp2_scipy_zlacpy_scipy_zlacrm_scipy_zlacrt_scipy_zlaed0_scipy_zlaed7_scipy_zlaed8_scipy_zlaein_scipy_zlaesy_scipy_zlaev2_scipy_zlag2c_scipy_zlags2_scipy_zlagtm_scipy_zlahef_scipy_zlahqr_scipy_zlahr2_scipy_zlaic1_scipy_zlals0_scipy_zlalsa_scipy_zlalsd_scipy_zlangb_scipy_zlange_scipy_zlangt_scipy_zlanhb_scipy_zlanhe_scipy_zlanhf_scipy_zlanhp_scipy_zlanhs_scipy_zlanht_scipy_zlansb_scipy_zlansp_scipy_zlansy_scipy_zlantb_scipy_zlantp_scipy_zlantr_scipy_zlapll_scipy_zlapmr_scipy_zlapmt_scipy_zlaqgb_scipy_zlaqge_scipy_zlaqhb_scipy_zlaqhe_scipy_zlaqhp_scipy_zlaqp2_scipy_zlaqps_scipy_zlaqr0_scipy_zlaqr1_scipy_zlaqr2_scipy_zlaqr3_scipy_zlaqr4_scipy_zlaqr5_scipy_zlaqsb_scipy_zlaqsp_scipy_zlaqsy_scipy_zlar1v_scipy_zlar2v_scipy_zlarcm_scipy_zlarf_scipy_zlarfb_scipy_zlarfg_scipy_zlarfgp_scipy_zlarft_scipy_zlarfx_scipy_zlargv_scipy_zlarnv_scipy_zlarrv_scipy_zlartg_scipy_zlartv_scipy_zlarz_scipy_zlarzb_scipy_zlarzt_scipy_zlascl_scipy_zlaset_scipy_zlasr_scipy_zlassq_scipy_zlaswp_scipy_zlasyf_scipy_zlat2c_scipy_zlatbs_scipy_zlatdf_scipy_zlatps_scipy_zlatrd_scipy_zlatrs_scipy_zlatrz_scipy_zlauu2_scipy_zlauum_scipy_zpbcon_scipy_zpbequ_scipy_zpbrfs_scipy_zpbstf_scipy_zpbsv_scipy_zpbsvx_scipy_zpbtf2_scipy_zpbtrf_scipy_zpbtrs_scipy_zpftrf_scipy_zpftri_scipy_zpftrs_scipy_zpocon_scipy_zpoequ_scipy_zpoequb_scipy_zporfs_scipy_zposv_scipy_zposvx_scipy_zpotf2_scipy_zpotrf_scipy_zpotri_scipy_zpotrs_scipy_zppcon_scipy_zppequ_scipy_zpprfs_scipy_zppsv_scipy_zppsvx_scipy_zpptrf_scipy_zpptri_scipy_zpptrs_scipy_zpstf2_scipy_zpstrf_scipy_zptcon_scipy_zpteqr_scipy_zptrfs_scipy_zptsv_scipy_zptsvx_scipy_zpttrf_scipy_zpttrs_scipy_zptts2_scipy_zrot_scipy_zspcon_scipy_zspmv_scipy_zspr_scipy_zsprfs_scipy_zspsv_scipy_zspsvx_scipy_zsptrf_scipy_zsptri_scipy_zsptrs_scipy_zstedc_scipy_zstegr_scipy_zstein_scipy_zstemr_scipy_zsteqr_scipy_zsycon_scipy_zsyconv_scipy_zsyequb_scipy_zsymv_scipy_zsyr_scipy_zsyrfs_scipy_zsysv_scipy_zsysvx_scipy_zsyswapr_scipy_zsytf2_scipy_zsytrf_scipy_zsytri_scipy_zsytri2_scipy_zsytri2x_scipy_zsytrs_scipy_zsytrs2_scipy_ztbcon_scipy_ztbrfs_scipy_ztbtrs_scipy_ztfsm_scipy_ztftri_scipy_ztfttp_scipy_ztfttr_scipy_ztgevc_scipy_ztgex2_scipy_ztgexc_scipy_ztgsen_scipy_ztgsja_scipy_ztgsna_scipy_ztgsy2_scipy_ztgsyl_scipy_ztpcon_scipy_ztpmqrt_scipy_ztpqrt_scipy_ztpqrt2_scipy_ztprfb_scipy_ztprfs_scipy_ztptri_scipy_ztptrs_scipy_ztpttf_scipy_ztpttr_scipy_ztrcon_scipy_ztrevc_scipy_ztrexc_scipy_ztrrfs_scipy_ztrsen_scipy_ztrsna_scipy_ztrsyl_scipy_ztrti2_scipy_ztrtri_scipy_ztrtrs_scipy_ztrttf_scipy_ztrttp_scipy_ztzrzf_scipy_zunbdb_scipy_zuncsd_scipy_zung2l_scipy_zung2r_scipy_zungbr_scipy_zunghr_scipy_zungl2_scipy_zunglq_scipy_zungql_scipy_zungqr_scipy_zungr2_scipy_zungrq_scipy_zungtr_scipy_zunm2l_scipy_zunm2r_scipy_zunmbr_scipy_zunmhr_scipy_zunml2_scipy_zunmlq_scipy_zunmql_scipy_zunmqr_scipy_zunmr2_scipy_zunmr3_scipy_zunmrq_scipy_zunmrz_scipy_zunmtr_scipy_zupgtr_scipy_zupmtr_libm.so.6libscipy_openblas.solibc.so.6GLIBC_2.2.5/opt/_internal/cpython-3.12.11/lib/python3.12/site-packages/scipy_openblas32/liblibscipy_openblas-b75cc656.so$ORIGIN/../../scipy.libs