Console Output
Skipping 12,426 KB..
Full LogTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTest
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT040/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT040/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT051压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT051_2026-09-21_20-14-58/
+ mv params/ params_orin_master_HNYP_JLX7E_AT051_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT051_2026-09-21_20-14-58.zip params_orin_master_HNYP_JLX7E_AT051_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/params_orin_master_HNYP_JLX7E_AT051_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/params_orin_master_HNYP_JLX7E_AT051_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
2 132M 0 0 2 3584k 0 7055k 0:00:19 --:--:-- 0:00:19 7055k
14 132M 0 0 14 19.1M 0 12.8M 0:00:10 0:00:01 0:00:09 12.8M
26 132M 0 0 26 34.5M 0 13.8M 0:00:09 0:00:02 0:00:07 13.8M
38 132M 0 0 38 50.3M 0 14.4M 0:00:09 0:00:03 0:00:06 14.4M
50 132M 0 0 50 66.1M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
62 132M 0 0 62 82.0M 0 14.9M 0:00:08 0:00:05 0:00:03 15.7M
74 132M 0 0 74 97.8M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
86 132M 0 0 86 113M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
97 132M 0 0 97 129M 0 15.2M 0:00:08 0:00:08 --:--:-- 15.7M
100 132M 0 0 100 132M 0 13.6M 0:00:09 0:00:09 --:--:-- 12.6M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 9862k
100 132M 0 0 100 132M 0 11.3M 0:00:11 0:00:11 --:--:-- 6742k
100 132M 0 0 100 132M 0 10.4M 0:00:12 0:00:12 --:--:-- 3623k
100 132M 0 0 100 132M 0 9879k 0:00:13 0:00:13 --:--:-- 581k
100 132M 0 0 100 132M 0 9206k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8618k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8101k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7643k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7233k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6865k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6533k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6231k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5956k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5705k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5474k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5260k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5131k 0:00:26 0:00:26 --:--:-- 9
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT051压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT051_2026-09-21_20-14-58/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT051_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT051_2026-09-21_20-14-58.zip params_orin_slave_HNYP_JLX7E_AT051_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/params_orin_slave_HNYP_JLX7E_AT051_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/params_orin_slave_HNYP_JLX7E_AT051_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
7 122M 0 0 7 8960k 0 10.0M 0:00:12 --:--:-- 0:00:12 10.0M
20 122M 0 0 20 24.5M 0 13.1M 0:00:09 0:00:01 0:00:08 13.1M
32 122M 0 0 32 39.8M 0 13.8M 0:00:08 0:00:02 0:00:06 13.8M
45 122M 0 0 45 55.6M 0 14.3M 0:00:08 0:00:03 0:00:05 14.3M
58 122M 0 0 58 71.5M 0 14.6M 0:00:08 0:00:04 0:00:04 14.6M
71 122M 0 0 71 87.3M 0 14.8M 0:00:08 0:00:05 0:00:03 15.7M
84 122M 0 0 84 103M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
97 122M 0 0 97 119M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 12.7M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 9983k
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 6878k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 3777k
100 122M 0 0 100 122M 0 9574k 0:00:13 0:00:13 --:--:-- 677k
100 122M 0 0 100 122M 0 8894k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8305k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7789k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7333k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6927k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6564k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6237k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5941k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5672k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5426k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5201k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4994k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4978k 0:00:25 0:00:25 --:--:-- 10
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT051/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT052压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT052_2026-09-21_20-14-58/
+ mv params/ params_orin_master_HNYP_JLX7E_AT052_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT052_2026-09-21_20-14-58.zip params_orin_master_HNYP_JLX7E_AT052_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/params_orin_master_HNYP_JLX7E_AT052_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/params_orin_master_HNYP_JLX7E_AT052_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
1 132M 0 0 1 1664k 0 3773k 0:00:35 --:--:-- 0:00:35 3773k
13 132M 0 0 13 18.3M 0 12.7M 0:00:10 0:00:01 0:00:09 12.7M
25 132M 0 0 25 33.6M 0 13.7M 0:00:09 0:00:02 0:00:07 13.7M
37 132M 0 0 37 49.4M 0 14.3M 0:00:09 0:00:03 0:00:06 14.3M
49 132M 0 0 49 65.3M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
61 132M 0 0 61 81.1M 0 14.9M 0:00:08 0:00:05 0:00:03 15.9M
73 132M 0 0 73 96.9M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
85 132M 0 0 85 112M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
97 132M 0 0 97 128M 0 15.1M 0:00:08 0:00:08 --:--:-- 15.7M
100 132M 0 0 100 132M 0 13.6M 0:00:09 0:00:09 --:--:-- 12.7M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 9935k
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 6844k
100 132M 0 0 100 132M 0 10.4M 0:00:12 0:00:12 --:--:-- 3758k
100 132M 0 0 100 132M 0 9875k 0:00:13 0:00:13 --:--:-- 746k
100 132M 0 0 100 132M 0 9202k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8615k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8098k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7640k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7231k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6863k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6531k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6230k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5955k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5704k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5472k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5259k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5158k 0:00:26 0:00:26 --:--:-- 9
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT052压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT052_2026-09-21_20-14-58/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT052_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT052_2026-09-21_20-14-58.zip params_orin_slave_HNYP_JLX7E_AT052_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/params_orin_slave_HNYP_JLX7E_AT052_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/params_orin_slave_HNYP_JLX7E_AT052_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
9 122M 0 0 9 11.1M 0 10.7M 0:00:11 0:00:01 0:00:10 10.7M
21 122M 0 0 21 26.9M 0 13.2M 0:00:09 0:00:02 0:00:07 13.2M
34 122M 0 0 34 42.8M 0 14.1M 0:00:08 0:00:03 0:00:05 14.1M
47 122M 0 0 47 58.6M 0 14.5M 0:00:08 0:00:04 0:00:04 14.5M
60 122M 0 0 60 74.4M 0 14.7M 0:00:08 0:00:05 0:00:03 14.9M
73 122M 0 0 73 90.2M 0 14.9M 0:00:08 0:00:06 0:00:02 15.8M
86 122M 0 0 86 106M 0 15.0M 0:00:08 0:00:07 0:00:01 15.8M
99 122M 0 0 99 121M 0 15.1M 0:00:08 0:00:08 --:--:-- 15.8M
100 122M 0 0 100 122M 0 13.5M 0:00:09 0:00:09 --:--:-- 12.6M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 9760k
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 6542k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 3318k
100 122M 0 0 100 122M 0 9592k 0:00:13 0:00:13 --:--:-- 105k
100 122M 0 0 100 122M 0 8909k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8317k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7799k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7342k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6936k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6572k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6244k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5948k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5678k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5432k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5206k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4998k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4967k 0:00:25 0:00:25 --:--:-- 10
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT052/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT053压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT053_2026-09-21_20-14-58/
+ mv params/ params_orin_master_HNYP_JLX7E_AT053_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT053_2026-09-21_20-14-58.zip params_orin_master_HNYP_JLX7E_AT053_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/params_orin_master_HNYP_JLX7E_AT053_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/params_orin_master_HNYP_JLX7E_AT053_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
3 132M 0 0 3 5312k 0 8623k 0:00:15 --:--:-- 0:00:15 8609k
15 132M 0 0 15 21.0M 0 12.9M 0:00:10 0:00:01 0:00:09 12.9M
27 132M 0 0 27 36.3M 0 13.8M 0:00:09 0:00:02 0:00:07 13.8M
39 132M 0 0 39 52.1M 0 14.4M 0:00:09 0:00:03 0:00:06 14.4M
51 132M 0 0 51 67.9M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
63 132M 0 0 63 83.5M 0 14.8M 0:00:08 0:00:05 0:00:03 15.6M
75 132M 0 0 75 99.0M 0 14.9M 0:00:08 0:00:06 0:00:02 15.6M
87 132M 0 0 87 114M 0 15.0M 0:00:08 0:00:07 0:00:01 15.7M
98 132M 0 0 98 130M 0 15.1M 0:00:08 0:00:08 --:--:-- 15.7M
100 132M 0 0 100 132M 0 13.6M 0:00:09 0:00:09 --:--:-- 12.5M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 9772k
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 6631k
100 132M 0 0 100 132M 0 10.3M 0:00:12 0:00:12 --:--:-- 3447k
100 132M 0 0 100 132M 0 9860k 0:00:13 0:00:13 --:--:-- 266k
100 132M 0 0 100 132M 0 9189k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8603k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8087k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7630k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7222k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6856k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6524k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6223k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5949k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5698k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5467k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5255k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5109k 0:00:26 0:00:26 --:--:-- 9
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT053压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT053_2026-09-21_20-14-58/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT053_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT053_2026-09-21_20-14-58.zip params_orin_slave_HNYP_JLX7E_AT053_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/params_orin_slave_HNYP_JLX7E_AT053_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/params_orin_slave_HNYP_JLX7E_AT053_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
9 122M 0 0 9 12.0M 0 11.8M 0:00:10 0:00:01 0:00:09 11.7M
22 122M 0 0 22 27.3M 0 13.5M 0:00:09 0:00:02 0:00:07 13.5M
35 122M 0 0 35 43.1M 0 14.3M 0:00:08 0:00:03 0:00:05 14.3M
48 122M 0 0 48 59.0M 0 14.6M 0:00:08 0:00:04 0:00:04 14.6M
61 122M 0 0 61 74.8M 0 14.9M 0:00:08 0:00:05 0:00:03 15.0M
74 122M 0 0 74 90.6M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
86 122M 0 0 86 106M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
99 122M 0 0 99 121M 0 15.2M 0:00:08 0:00:08 --:--:-- 15.7M
100 122M 0 0 100 122M 0 13.5M 0:00:09 0:00:09 --:--:-- 12.6M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 9685k
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 6468k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 3254k
100 122M 0 0 100 122M 0 9604k 0:00:13 0:00:13 --:--:-- 105k
100 122M 0 0 100 122M 0 8920k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8327k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7808k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7350k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6942k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6577k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6249k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5952k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5682k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5436k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5210k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 5002k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4993k 0:00:25 0:00:25 --:--:-- 10
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT053/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT054压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT054_2026-09-21_20-14-58/
+ mv params/ params_orin_master_HNYP_JLX7E_AT054_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT054_2026-09-21_20-14-58.zip params_orin_master_HNYP_JLX7E_AT054_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/params_orin_master_HNYP_JLX7E_AT054_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/params_orin_master_HNYP_JLX7E_AT054_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
5 132M 0 0 5 7680k 0 9504k 0:00:14 --:--:-- 0:00:14 9493k
17 132M 0 0 17 23.2M 0 12.8M 0:00:10 0:00:01 0:00:09 12.8M
29 132M 0 0 29 39.1M 0 13.9M 0:00:09 0:00:02 0:00:07 13.9M
41 132M 0 0 41 54.9M 0 14.4M 0:00:09 0:00:03 0:00:06 14.4M
53 132M 0 0 53 70.7M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
65 132M 0 0 65 86.6M 0 14.9M 0:00:08 0:00:05 0:00:03 15.8M
77 132M 0 0 77 101M 0 14.9M 0:00:08 0:00:06 0:00:02 15.7M
89 132M 0 0 89 117M 0 15.0M 0:00:08 0:00:07 0:00:01 15.7M
100 132M 0 0 100 132M 0 13.5M 0:00:09 0:00:09 --:--:-- 13.0M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 10.3M
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 7860k
100 132M 0 0 100 132M 0 10.3M 0:00:12 0:00:12 --:--:-- 5228k
100 132M 0 0 100 132M 0 9848k 0:00:13 0:00:13 --:--:-- 2490k
100 132M 0 0 100 132M 0 9179k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8594k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8080k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7624k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7217k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6850k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6520k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6219k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5945k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5695k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5464k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5252k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5113k 0:00:26 0:00:26 --:--:-- 9
100 132M 0 43 100 132M 1 5113k 0:00:26 0:00:26 --:--:-- 11
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT054压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT054_2026-09-21_20-14-58/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT054_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT054_2026-09-21_20-14-58.zip params_orin_slave_HNYP_JLX7E_AT054_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/params_orin_slave_HNYP_JLX7E_AT054_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/params_orin_slave_HNYP_JLX7E_AT054_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 122M 0 0 0 128k 0 739k 0:02:49 --:--:-- 0:02:49 735k
11 122M 0 0 11 13.7M 0 11.7M 0:00:10 0:00:01 0:00:09 11.7M
22 122M 0 0 22 27.6M 0 12.5M 0:00:09 0:00:02 0:00:07 12.5M
36 122M 0 0 36 44.7M 0 14.1M 0:00:08 0:00:03 0:00:05 14.1M
49 122M 0 0 49 60.5M 0 14.5M 0:00:08 0:00:04 0:00:04 14.5M
62 122M 0 0 62 76.4M 0 14.7M 0:00:08 0:00:05 0:00:03 15.2M
75 122M 0 0 75 92.2M 0 14.9M 0:00:08 0:00:06 0:00:02 15.7M
88 122M 0 0 88 108M 0 15.0M 0:00:08 0:00:07 0:00:01 16.1M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 13.1M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 10.4M
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 7969k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 5230k
100 122M 0 0 100 122M 0 9583k 0:00:13 0:00:13 --:--:-- 2492k
100 122M 0 0 100 122M 0 8902k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8311k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7793k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7337k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6931k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6568k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6240k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5944k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5675k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5429k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5203k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4996k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4957k 0:00:25 0:00:25 --:--:-- 10
100 122M 0 43 100 122M 1 4957k 0:00:25 0:00:25 --:--:-- 13
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT054/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT055压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT055_2026-09-21_20-14-58/
+ mv params/ params_orin_master_HNYP_JLX7E_AT055_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT055_2026-09-21_20-14-58.zip params_orin_master_HNYP_JLX7E_AT055_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/params_orin_master_HNYP_JLX7E_AT055_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/params_orin_master_HNYP_JLX7E_AT055_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
5 132M 0 0 5 6848k 0 9216k 0:00:14 --:--:-- 0:00:14 9204k
16 132M 0 0 16 21.5M 0 12.0M 0:00:10 0:00:01 0:00:09 12.0M
28 132M 0 0 28 37.8M 0 13.7M 0:00:09 0:00:02 0:00:07 13.7M
40 132M 0 0 40 53.6M 0 14.3M 0:00:09 0:00:03 0:00:06 14.3M
52 132M 0 0 52 69.5M 0 14.6M 0:00:09 0:00:04 0:00:05 14.6M
64 132M 0 0 64 85.3M 0 14.8M 0:00:08 0:00:05 0:00:03 15.7M
76 132M 0 0 76 101M 0 14.9M 0:00:08 0:00:06 0:00:02 16.0M
88 132M 0 0 88 117M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
100 132M 0 0 100 132M 0 13.5M 0:00:09 0:00:09 --:--:-- 13.0M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 10.4M
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 7987k
100 132M 0 0 100 132M 0 10.3M 0:00:12 0:00:12 --:--:-- 5281k
100 132M 0 0 100 132M 0 9843k 0:00:13 0:00:13 --:--:-- 2567k
100 132M 0 0 100 132M 0 9174k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8591k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8077k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7621k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7214k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6848k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6517k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6217k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5944k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5693k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5463k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5250k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5159k 0:00:26 0:00:26 --:--:-- 9
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT055压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT055_2026-09-21_20-14-58/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT055_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT055_2026-09-21_20-14-58.zip params_orin_slave_HNYP_JLX7E_AT055_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/params_orin_slave_HNYP_JLX7E_AT055_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/params_orin_slave_HNYP_JLX7E_AT055_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
1 122M 0 0 1 2112k 0 4672k 0:00:26 --:--:-- 0:00:26 4662k
14 122M 0 0 14 18.1M 0 12.7M 0:00:09 0:00:01 0:00:08 12.7M
27 122M 0 0 27 33.5M 0 13.7M 0:00:08 0:00:02 0:00:06 13.7M
40 122M 0 0 40 49.3M 0 14.3M 0:00:08 0:00:03 0:00:05 14.3M
53 122M 0 0 53 65.1M 0 14.6M 0:00:08 0:00:04 0:00:04 14.6M
66 122M 0 0 66 80.9M 0 14.9M 0:00:08 0:00:05 0:00:03 15.8M
79 122M 0 0 79 96.8M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
91 122M 0 0 91 112M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 12.9M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 10.1M
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 7515k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 4642k
100 122M 0 0 100 122M 0 9579k 0:00:13 0:00:13 --:--:-- 1779k
100 122M 0 0 100 122M 0 8899k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8309k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7792k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7336k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6930k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6566k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6239k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5943k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5674k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5428k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5203k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4995k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4925k 0:00:25 0:00:25 --:--:-- 9
100 122M 0 43 100 122M 1 4925k 0:00:25 0:00:25 --:--:-- 12
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT055/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT056压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT056_2026-09-21_20-14-58/
+ mv params/ params_orin_master_HNYP_JLX7E_AT056_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT056_2026-09-21_20-14-58.zip params_orin_master_HNYP_JLX7E_AT056_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/params_orin_master_HNYP_JLX7E_AT056_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/params_orin_master_HNYP_JLX7E_AT056_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
7 132M 0 0 7 9536k 0 9.9M 0:00:13 --:--:-- 0:00:13 9.9M
19 132M 0 0 19 25.1M 0 12.9M 0:00:10 0:00:01 0:00:09 12.9M
31 132M 0 0 31 40.9M 0 13.9M 0:00:09 0:00:02 0:00:07 13.9M
42 132M 0 0 42 56.7M 0 14.4M 0:00:09 0:00:03 0:00:06 14.4M
54 132M 0 0 54 72.5M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
66 132M 0 0 66 87.8M 0 14.8M 0:00:08 0:00:05 0:00:03 15.7M
78 132M 0 0 78 103M 0 14.9M 0:00:08 0:00:06 0:00:02 15.7M
90 132M 0 0 90 119M 0 15.0M 0:00:08 0:00:07 0:00:01 15.7M
100 132M 0 0 100 132M 0 13.5M 0:00:09 0:00:09 --:--:-- 12.9M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 10.2M
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 7800k
100 132M 0 0 100 132M 0 10.3M 0:00:12 0:00:12 --:--:-- 4996k
100 132M 0 0 100 132M 0 9845k 0:00:13 0:00:13 --:--:-- 2200k
100 132M 0 0 100 132M 0 9176k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8592k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8078k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7622k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7215k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6849k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6518k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6218k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5944k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5693k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5463k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5251k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 0 100 132M 0 5054k 0:00:26 0:00:26 --:--:-- 0
100 132M 0 43 100 132M 1 4987k 0:00:27 0:00:27 --:--:-- 9
100 132M 0 43 100 132M 1 4987k 0:00:27 0:00:27 --:--:-- 12
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT056压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT056_2026-09-21_20-14-58/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT056_2026-09-21_20-14-58/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT056_2026-09-21_20-14-58.zip params_orin_slave_HNYP_JLX7E_AT056_2026-09-21_20-14-58 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/params_orin_slave_HNYP_JLX7E_AT056_2026-09-21_20-14-58.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/params_orin_slave_HNYP_JLX7E_AT056_2026-09-21_20-14-58.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
1 122M 0 0 1 2176k 0 4945k 0:00:25 --:--:-- 0:00:25 4934k
15 122M 0 0 15 18.3M 0 12.9M 0:00:09 0:00:01 0:00:08 12.8M
27 122M 0 0 27 33.7M 0 13.9M 0:00:08 0:00:02 0:00:06 13.9M
40 122M 0 0 40 49.5M 0 14.4M 0:00:08 0:00:03 0:00:05 14.4M
53 122M 0 0 53 65.3M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
66 122M 0 0 66 81.2M 0 14.9M 0:00:08 0:00:05 0:00:03 15.8M
79 122M 0 0 79 97.0M 0 15.1M 0:00:08 0:00:06 0:00:02 15.7M
92 122M 0 0 92 112M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
100 122M 0 0 100 122M 0 13.5M 0:00:09 0:00:09 --:--:-- 12.9M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 10.1M
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 7485k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 4611k
100 122M 0 0 100 122M 0 9596k 0:00:13 0:00:13 --:--:-- 1751k
100 122M 0 0 100 122M 0 8913k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8321k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7803k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7345k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6938k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6574k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6246k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5949k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5679k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5433k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5207k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4999k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4931k 0:00:25 0:00:25 --:--:-- 9
100 122M 0 43 100 122M 1 4931k 0:00:25 0:00:25 --:--:-- 12
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT056/slave/params_submodule/
[Pipeline] fileExists
[Pipeline] readFile
[Pipeline] writeFile
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
always
[Pipeline] }
[Pipeline] // script
[Pipeline] script
[Pipeline] {
[Pipeline] echo
success
[Pipeline] publishHTML
[htmlpublisher] Archiving HTML reports...
[htmlpublisher] Archiving at BUILD level /root/workspace/params-submodule/hainan-yangpu-submodule to /var/lib/jenkins/jobs/hainan-yangpu-submodule/builds/378/htmlreports/update_20message
[Pipeline] wrap
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] echo
user: , telphone:
[Pipeline] }
[Pipeline] // script
[Pipeline] sh
+ curl -X POST 'https://oapi.dingtalk.com/robot/send?access_token=c4e318472bbd19d0449efb4060de213f730dc32b4bf44819381a8fa7adf61983' -H 'Content-Type: application/json' -d '{"msgtype": "markdown","markdown": {"title":"jenkins通知","text": "# 参数发布通知
### [海南洋浦车辆参数-新车参数10-56]
---
- 状态:<font color=#01B468> 编译成功 </font>
- 执行人:liwenqian
- 更新车辆:
[HNYP_JLX7E_AT010master][HNYP_JLX7E_AT010slave][HNYP_JLX7E_AT027master][HNYP_JLX7E_AT027slave][HNYP_JLX7E_AT039master][HNYP_JLX7E_AT039slave][HNYP_JLX7E_AT040master][HNYP_JLX7E_AT040slave][HNYP_JLX7E_AT051master][HNYP_JLX7E_AT051slave][HNYP_JLX7E_AT052master][HNYP_JLX7E_AT052slave][HNYP_JLX7E_AT053master][HNYP_JLX7E_AT053slave][HNYP_JLX7E_AT054master][HNYP_JLX7E_AT054slave][HNYP_JLX7E_AT055master][HNYP_JLX7E_AT055slave][HNYP_JLX7E_AT056master][HNYP_JLX7E_AT056slave]
- 分支名:main
- 具体模块分支:[点此链接](http://jenkins.vehicle.senior.auto:8080/jenkins/job/hainan-yangpu-submodule/378/update_20message/index.html)
---
> 请ota发布同学尽快发布验证,并在群里同步发布信息~@"},"at": {"atMobiles": [""],"isAtAll": "false"} }'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 1071 100 27 100 1044 321 12428 --:--:-- --:--:-- --:--:-- 12750
[Pipeline] echo
{"errcode":0,"errmsg":"ok"}
[Pipeline] }
[Pipeline] // wrap
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
Lock released on resource [Label: built-in, Quantity: 1]
[Pipeline] // lock
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS