From 71baf71e17caf91e40c67cb9cd0c46b258ce8dc9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 11 Oct 2019 23:13:52 +0200 Subject: [PATCH 01/11] Add 'lf motorola *' commands. Old grey Motorola cards, presumably Flexpass, which operates in 74 kHz, PSK1 , Clock 32. No chance a t55x7 can clone it :), simulation should be doable --- client/Makefile | 2 +- client/cmdlf.c | 58 +++++++++++++++++++++++++++++++------------------ client/cmdlf.h | 4 +++- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/client/Makefile b/client/Makefile index 95a258a78..58bdf7592 100644 --- a/client/Makefile +++ b/client/Makefile @@ -227,7 +227,7 @@ CMDSRCS = crapto1/crapto1.c \ cmdlfti.c \ cmdlfviking.c \ cmdlfvisa2000.c \ - cmdlfverichip.c \ + cmdlfmotorola.c \ cmdtrace.c \ cmdflashmem.c \ cmdflashmemspiffs.c \ diff --git a/client/cmdlf.c b/client/cmdlf.c index adc5bc9b5..e2f2a2153 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -1,5 +1,9 @@ //----------------------------------------------------------------------------- // Copyright (C) 2010 iZsh +// Modified by +// Marshellow +// Iceman +// Doegox // // This code is licensed to you under the terms of the GNU GPL, version 2 or, // at your option, any later version. See the LICENSE.txt file for the text of @@ -47,7 +51,7 @@ #include "cmdlfsecurakey.h" // for securakey menu #include "cmdlfpac.h" // for pac menu #include "cmdlfkeri.h" // for keri menu -#include "cmdlfverichip.h" // for VeriChip menu +#include "cmdlfmotorola.h" // for Motorola menu #include "cmdlfgallagher.h" // for GALLAGHER menu bool g_lf_threshold_set = false; @@ -449,6 +453,14 @@ int CmdFlexdemod(const char *Cmd) { return PM3_SUCCESS; } +int lf_config(sample_config *config) { + if (!session.pm3_present) return PM3_ENOTTY; + + clearCommandBuffer(); + SendCommandNG(CMD_LF_SAMPLING_SET_CONFIG, (uint8_t *)config, sizeof(sample_config)); + return PM3_SUCCESS; +} + int CmdLFConfig(const char *Cmd) { if (!session.pm3_present) return PM3_ENOTTY; @@ -525,22 +537,19 @@ int CmdLFConfig(const char *Cmd) { } } - //Validations + // validations if (errors) return usage_lf_config(); - if (cmdp == 0) { - clearCommandBuffer(); - SendCommandNG(CMD_LF_SAMPLING_GET_CONFIG, NULL, 0); - return PM3_SUCCESS; - } - //Bps is limited to 8 + // print current settings. + if (cmdp == 0) + return lf_config(NULL); + + // bps is limited to 8 if (bps >> 4) bps = 8; - sample_config config = { decimation, bps, averaging, divisor, trigger_threshold, samples_to_skip }; + sample_config config = { decimation, bps, averaging, divisor, trigger_threshold, samples_to_skip, true }; - clearCommandBuffer(); - SendCommandNG(CMD_LF_SAMPLING_SET_CONFIG, (uint8_t *)&config, sizeof(sample_config)); - return PM3_SUCCESS; + return lf_config(&config); } int lf_read(bool silent, uint32_t samples) { @@ -632,6 +641,7 @@ static void ChkBitstream() { } } } + //Attempt to simulate any wave in buffer (one bit per output sample) // converts GraphBuffer to bitstream (based on zero crossings) if needed. int CmdLFSim(const char *Cmd) { @@ -711,7 +721,7 @@ int CmdLFSim(const char *Cmd) { return PM3_SUCCESS; } -// by marshmellow - sim fsk data given clock, fcHigh, fcLow, invert +// sim fsk data given clock, fcHigh, fcLow, invert // - allow pull data from DemodBuffer int CmdLFfskSim(const char *Cmd) { //might be able to autodetect FCs and clock from Graphbuffer if using demod buffer @@ -815,7 +825,7 @@ int CmdLFfskSim(const char *Cmd) { return PM3_SUCCESS; } -// by marshmellow - sim ask data given clock, invert, manchester or raw, separator +// sim ask data given clock, invert, manchester or raw, separator // - allow pull data from DemodBuffer int CmdLFaskSim(const char *Cmd) { // autodetect clock from Graphbuffer if using demod buffer @@ -916,7 +926,7 @@ int CmdLFaskSim(const char *Cmd) { return PM3_SUCCESS; } -// by marshmellow - sim psk data given carrier, clock, invert +// sim psk data given carrier, clock, invert // - allow pull data from DemodBuffer or parameters int CmdLFpskSim(const char *Cmd) { //might be able to autodetect FC and clock from Graphbuffer if using demod buffer @@ -1126,7 +1136,6 @@ int CmdVchDemod(const char *Cmd) { return PM3_SUCCESS; } -//by marshmellow static bool CheckChipType(bool getDeviceData) { bool retval = false; @@ -1158,7 +1167,6 @@ out: return retval; } -//by marshmellow int CmdLFfind(const char *Cmd) { int ans = 0; size_t minLength = 2000; @@ -1193,9 +1201,18 @@ int CmdLFfind(const char *Cmd) { if (getSignalProperties()->isnoise) { if (IfPm3Hitag()) { - if (readHitagUid()) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Hitag") "found!"); return PM3_SUCCESS;} + if (readHitagUid()) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Hitag") "found!"); return PM3_SUCCESS; + } + } + + if (readMotorolaUid()) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Motorola ID") "found!"); return PM3_SUCCESS; + } + + if (readCOTAGUid()) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("COTAG ID") "found!"); return PM3_SUCCESS; } - if (readCOTAGUid()) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("COTAG ID") "found!"); return PM3_SUCCESS;} PrintAndLogEx(FAILED, _RED_("No data found!")); PrintAndLogEx(INFO, "Signal looks like noise. Maybe not an LF tag?"); @@ -1229,7 +1246,6 @@ int CmdLFfind(const char *Cmd) { if (demodVisa2k() == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Visa2000 ID") "found!"); goto out;} if (demodGallagher() == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("GALLAGHER ID") "found!"); goto out;} // if (demodTI() == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Texas Instrument ID") "found!"); goto out;} -// if (demodVerichip() == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("VeriChip ID") "found!"); goto out;} //if (demodFermax() == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Fermax ID") "found!"); goto out;} //if (demodFlex() == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Motorola FlexPass ID") "found!"); goto out;} @@ -1297,6 +1313,7 @@ static command_t CommandTable[] = { {"nedap", CmdLFNedap, AlwaysAvailable, "{ Nedap RFIDs... }"}, {"nexwatch", CmdLFNEXWATCH, AlwaysAvailable, "{ NexWatch RFIDs... }"}, {"noralsy", CmdLFNoralsy, AlwaysAvailable, "{ Noralsy RFIDs... }"}, + {"motorola", CmdLFMotorola, AlwaysAvailable, "{ Motorola RFIDs... }"}, {"pac", CmdLFPac, AlwaysAvailable, "{ PAC/Stanley RFIDs... }"}, {"paradox", CmdLFParadox, AlwaysAvailable, "{ Paradox RFIDs... }"}, {"pcf7931", CmdLFPCF7931, AlwaysAvailable, "{ PCF7931 CHIPs... }"}, @@ -1305,7 +1322,6 @@ static command_t CommandTable[] = { {"securakey", CmdLFSecurakey, AlwaysAvailable, "{ Securakey RFIDs... }"}, {"ti", CmdLFTI, AlwaysAvailable, "{ TI CHIPs... }"}, {"t55xx", CmdLFT55XX, AlwaysAvailable, "{ T55xx CHIPs... }"}, -// {"verichip", CmdLFVerichip, AlwaysAvailable, "{ VeriChip RFIDs... }"}, {"viking", CmdLFViking, AlwaysAvailable, "{ Viking RFIDs... }"}, {"visa2000", CmdLFVisa2k, AlwaysAvailable, "{ Visa2000 RFIDs... }"}, {"", CmdHelp, AlwaysAvailable, ""}, diff --git a/client/cmdlf.h b/client/cmdlf.h index 8c90d2d42..3f0670d1f 100644 --- a/client/cmdlf.h +++ b/client/cmdlf.h @@ -12,12 +12,13 @@ #define CMDLF_H__ #include "common.h" +#include "pm3_cmd.h" // sample_config_t #define T55XX_WRITE_TIMEOUT 1500 int CmdLF(const char *Cmd); -int CmdLFSetConfig(const char *Cmd); +int CmdLFConfig(const char *Cmd); int CmdLFCommandRead(const char *Cmd); int CmdFlexdemod(const char *Cmd); @@ -32,5 +33,6 @@ int CmdVchDemod(const char *Cmd); int CmdLFfind(const char *Cmd); int lf_read(bool silent, uint32_t samples); +int lf_config(sample_config *config); #endif From 354c5f2ea81e6a4dde47fd4c0c74c62fb9875ff6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 11 Oct 2019 23:13:58 +0200 Subject: [PATCH 02/11] q --- client/cmdlfmotorola.c | 136 +++++++++++++++++++++++++++++++++++++++++ client/cmdlfmotorola.h | 21 +++++++ 2 files changed, 157 insertions(+) create mode 100644 client/cmdlfmotorola.c create mode 100644 client/cmdlfmotorola.h diff --git a/client/cmdlfmotorola.c b/client/cmdlfmotorola.c new file mode 100644 index 000000000..32410b8d7 --- /dev/null +++ b/client/cmdlfmotorola.c @@ -0,0 +1,136 @@ +//----------------------------------------------------------------------------- +// Iceman, 2019 +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Low frequency Motorola tag commands +// PSK1, RF/32, 64 bits long, at 74 kHz +//----------------------------------------------------------------------------- +#include "cmdlfmotorola.h" + +#include //tolower + +#include "commonutil.h" // ARRAYLEN +#include "common.h" +#include "cmdparser.h" // command_t +#include "comms.h" +#include "ui.h" +#include "cmddata.h" +#include "cmdlf.h" +#include "lfdemod.h" // preamble test +#include "protocols.h" // t55xx defines +#include "cmdlft55xx.h" // clone.. +#include "cmdlf.h" // cmdlfconfig + +static int CmdHelp(const char *Cmd); + +//see PSKDemod for what args are accepted +static int CmdMotorolaDemod(const char *Cmd) { + + //PSK1 + if (PSKDemod("32 1", true) != PM3_SUCCESS) { + PrintAndLogEx(DEBUG, "DEBUG: Error - Motorola: PSK Demod failed"); + return PM3_ESOFT; + } + size_t size = DemodBufferLen; + int ans = detectMotorola(DemodBuffer, &size); + if (ans < 0) { + if (ans == -1) + PrintAndLogEx(DEBUG, "DEBUG: Error - Motorola: too few bits found"); + else if (ans == -2) + PrintAndLogEx(DEBUG, "DEBUG: Error - Motorola: preamble not found"); + else if (ans == -3) + PrintAndLogEx(DEBUG, "DEBUG: Error - Motorola: Size not correct: %zu", size); + else + PrintAndLogEx(DEBUG, "DEBUG: Error - Motorola: ans: %d", ans); + + return PM3_ESOFT; + } + setDemodBuff(DemodBuffer, 64, ans); + setClockGrid(g_DemodClock, g_DemodStartIdx + (ans * g_DemodClock)); + + //got a good demod + uint32_t raw1 = bytebits_to_byte(DemodBuffer, 32); + uint32_t raw2 = bytebits_to_byte(DemodBuffer + 32, 32); + + PrintAndLogEx(SUCCESS, "Motorola Tag Found -- Raw: %08X%08X", raw1, raw2); + PrintAndLogEx(INFO, "How the Raw ID is translated by the reader is unknown. Share your trace file on forum"); + return PM3_SUCCESS; +} + +static int CmdMotorolaRead(const char *Cmd) { + // Motorola Flexpass seem to work at 74 kHz + // and take about 4400 samples to befor modulating + sample_config sc = { + .decimation = 0, + .bits_per_sample = 0, + .averaging= false, + .divisor = LF_DIVISOR(74), + .trigger_threshold = -1, + .samples_to_skip = 4500, + .verbose = false + }; + lf_config(&sc); + + // 64 * 32 * 2 * n-ish + lf_read(true, 5000); + + // reset back to 125 kHz + sc.divisor = LF_DIVISOR_125; + sc.samples_to_skip = 0; + lf_config(&sc); + return CmdMotorolaDemod(Cmd); +} + +static int CmdMotorolaSim(const char *Cmd) { + + // PSK sim. + PrintAndLogEx(INFO, " PSK1 at 66 kHz... Interesting."); + PrintAndLogEx(INFO, " To be implemented, feel free to contribute!"); + return PM3_SUCCESS; +} + +static command_t CommandTable[] = { + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"demod", CmdMotorolaDemod, AlwaysAvailable, "Demodulate an MOTOROLA tag from the GraphBuffer"}, + {"read", CmdMotorolaRead, IfPm3Lf, "Attempt to read and extract tag data from the antenna"}, + {"sim", CmdMotorolaSim, IfPm3Lf, "simulate MOTOROLA tag"}, + {NULL, NULL, NULL, NULL} +}; + +static int CmdHelp(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + CmdsHelp(CommandTable); + return PM3_SUCCESS; +} + +int CmdLFMotorola(const char *Cmd) { + clearCommandBuffer(); + return CmdsParse(CommandTable, Cmd); +} + +// find MOTOROLA preamble in already demoded data +int detectMotorola(uint8_t *dest, size_t *size) { + if (*size < 64) return -1; //make sure buffer has data + size_t startIdx = 0; + uint8_t preamble[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1 + }; + if (!preambleSearch(dest, preamble, sizeof(preamble), size, &startIdx)) + return -2; //preamble not found + if (*size != 64) return -3; //wrong demoded size + //return start position + return (int)startIdx; +} + +int demodMotorola(void) { + return CmdMotorolaDemod(""); +} + +int readMotorolaUid(void) { + return ( CmdMotorolaRead("") == PM3_SUCCESS); +} diff --git a/client/cmdlfmotorola.h b/client/cmdlfmotorola.h new file mode 100644 index 000000000..682193ebc --- /dev/null +++ b/client/cmdlfmotorola.h @@ -0,0 +1,21 @@ +//----------------------------------------------------------------------------- +// Iceman, 2019 +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Low frequency MOTOROLA tag commands +//----------------------------------------------------------------------------- +#ifndef CMDLFMOTOROLA_H__ +#define CMDLFMOTOROLA_H__ + +#include "common.h" + +int CmdLFMotorola(const char *Cmd); + +int demodMotorola(void); +int detectMotorola(uint8_t *dest, size_t *size); +int readMotorolaUid(void); +#endif + From 76f77638937f5076b6263190acfee545af963ed0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 11 Oct 2019 23:14:57 +0200 Subject: [PATCH 03/11] motorola --- armsrc/lfsampling.c | 7 +++++-- include/pm3_cmd.h | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index e8d507b29..08fb1dd94 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -23,8 +23,10 @@ Default LF config is set to: averaging = YES divisor = 95 (125kHz) trigger_threshold = 0 + samples_to_skip = 0 + verbose = YES */ -sample_config config = { 1, 8, 1, LF_DIVISOR_125, 0, 0 } ; +sample_config config = { 1, 8, 1, LF_DIVISOR_125, 0, 0, 1} ; void printConfig() { uint32_t d = config.divisor; @@ -59,7 +61,8 @@ void setSamplingConfig(sample_config *sc) { config.averaging = sc->averaging; if (config.bits_per_sample > 8) config.bits_per_sample = 8; - printConfig(); + if (sc->verbose) + printConfig(); } sample_config *getSamplingConfig() { diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index a6d59aa05..c92a1faee 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -119,6 +119,7 @@ typedef struct { int divisor; int trigger_threshold; uint32_t samples_to_skip; + bool verbose; } PACKED sample_config; /* typedef struct { @@ -488,6 +489,7 @@ typedef struct { #define CMD_HF_MIFARE_CHKKEYS_FAST 0x0625 #define CMD_HF_MIFARE_SNIFF 0x0630 +#define CMD_HF_MIFARE_MFKEY 0x0631 //ultralightC #define CMD_HF_MIFAREUC_AUTH 0x0724 //0x0725 and 0x0726 no longer used From b745602d8c9c87d10f3445a4de21e05f096839e0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 12 Oct 2019 12:36:09 +0200 Subject: [PATCH 04/11] Motorola. FC guessing. CSN mapped straight from Indala descramble. --- client/cmdlfindala.c | 2 - client/cmdlfmotorola.c | 148 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 135 insertions(+), 15 deletions(-) diff --git a/client/cmdlfindala.c b/client/cmdlfindala.c index c93d695aa..f455fae66 100644 --- a/client/cmdlfindala.c +++ b/client/cmdlfindala.c @@ -647,8 +647,6 @@ out: *size = found_size; - //PrintAndLogEx(INFO, "DEBUG: detectindala RES = %d | %d | %d", res, found_size, idx); - if (found_size != 224 && found_size != 64) { PrintAndLogEx(INFO, "DEBUG: detectindala | %zu", found_size); return -5; diff --git a/client/cmdlfmotorola.c b/client/cmdlfmotorola.c index 32410b8d7..035eb7dc1 100644 --- a/client/cmdlfmotorola.c +++ b/client/cmdlfmotorola.c @@ -23,6 +23,8 @@ #include "protocols.h" // t55xx defines #include "cmdlft55xx.h" // clone.. #include "cmdlf.h" // cmdlfconfig +#include "cliparser/cliparser.h" // cli parse input + static int CmdHelp(const char *Cmd); @@ -54,9 +56,67 @@ static int CmdMotorolaDemod(const char *Cmd) { //got a good demod uint32_t raw1 = bytebits_to_byte(DemodBuffer, 32); uint32_t raw2 = bytebits_to_byte(DemodBuffer + 32, 32); + +// A0000000E308C0C1 +// 10100000000000000000000000000000 1110 0011 0000 1000 1100 0000 1100 0001 + + +// 1 1 2 2 2 3 3 4 4 4 5 5 6 +// 0 4 8 2 6 0 4 8 2 6 0 4 8 2 6 0 +// 1010 0000 0000 0000 0000 0000 0000 0000 1110 0011 0000 1000 1100 0000 0101 0010 +// 9 .0 5 4 26 3 . 71 +// . .0 5 4 26 3 . 71 +// 6 9 A5 C0FD E7 18 B 4 3 2 + +// hex(234) 0xEA bin(234) 1110 1010 +// hex(437) 0x1B5 bin(437) 1 1011 0101 +// hex(229) 0xE5 bin(229) 1110 0101 + + uint16_t fc = 0; + +// FC seems to be guess work. Need more samples +// guessing printed FC is 4 digits. 1024? 10bit? +// fc |= DemodBuffer[38] << 9; // b10 + fc |= DemodBuffer[34] << 8; // b9 + + fc |= DemodBuffer[44] << 7; // b8 + fc |= DemodBuffer[47] << 6; // b7 + fc |= DemodBuffer[57] << 5; // b6 + fc |= DemodBuffer[49] << 4; // b5 + +// seems to match + fc |= DemodBuffer[53] << 3; // b4 + fc |= DemodBuffer[48] << 2; // b3 + fc |= DemodBuffer[58] << 1; // b2 + fc |= DemodBuffer[39] << 0; // b1 + +// CSN was same as Indala CSN descramble. + uint16_t csn = 0; + csn |= DemodBuffer[42] << 15; // b16 + csn |= DemodBuffer[45] << 14; // b15 + csn |= DemodBuffer[43] << 13; // b14 + csn |= DemodBuffer[40] << 12; // b13 + csn |= DemodBuffer[52] << 11; // b12 + csn |= DemodBuffer[36] << 10; // b11 + csn |= DemodBuffer[35] << 9; // b10 + csn |= DemodBuffer[51] << 8; // b9 + csn |= DemodBuffer[46] << 7; // b8 + csn |= DemodBuffer[33] << 6; // b7 + csn |= DemodBuffer[37] << 5; // b6 + csn |= DemodBuffer[54] << 4; // b5 + csn |= DemodBuffer[56] << 3; // b4 + csn |= DemodBuffer[59] << 2; // b3 + csn |= DemodBuffer[50] << 1; // b2 + csn |= DemodBuffer[41] << 0; // b1 + + uint8_t checksum = 0; + checksum |= DemodBuffer[62] << 1; // b2 + checksum |= DemodBuffer[63] << 0; // b1 PrintAndLogEx(SUCCESS, "Motorola Tag Found -- Raw: %08X%08X", raw1, raw2); - PrintAndLogEx(INFO, "How the Raw ID is translated by the reader is unknown. Share your trace file on forum"); + PrintAndLogEx(SUCCESS, "Fmt 26 bit FC %u , CSN %u , checksum %1d%1d", fc, csn, checksum >> 1 & 0x01, checksum & 0x01 ); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; } @@ -84,6 +144,42 @@ static int CmdMotorolaRead(const char *Cmd) { return CmdMotorolaDemod(Cmd); } +static int CmdMotorolaClone(const char *Cmd) { + + uint32_t blocks[3] = {0}; + uint8_t data[8]; + int datalen = 0; + + CLIParserInit("lf indala clone", + "Enables cloning of Motorola card with specified uid onto T55x7\n" + "defaults to 64.\n", + "\n" + "Samples:\n" + "\tlf motorola clone a0000000a0002021\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_strx1(NULL, NULL, "", NULL), + arg_param_end + }; + CLIExecWithReturn(Cmd, argtable, false); + CLIGetHexWithReturn(1, data, &datalen); + CLIParserFree(); + + //TODO add selection of chip for Q5 or T55x7 + // data[0] = T5555_SET_BITRATE(32 | T5555_MODULATION_PSK1 | 2 << T5555_MAXBLOCK_SHIFT; + + // config for Motorola 64 format (RF/32;PSK1 with RF/2; Maxblock=2) + PrintAndLogEx(INFO, "Preparing to clone Motorola 64bit tag with RawID %s", sprint_hex(data, datalen)); + blocks[0] = T55x7_BITRATE_RF_32 | T55x7_MODULATION_PSK1 | (2 << T55x7_MAXBLOCK_SHIFT); + blocks[1] = bytes_to_num(data, 4); + blocks[2] = bytes_to_num(data + 4, 4); + + print_blocks(blocks, ARRAYLEN(blocks)); + return clone_t55xx_tag(blocks, ARRAYLEN(blocks)); +} + static int CmdMotorolaSim(const char *Cmd) { // PSK sim. @@ -96,6 +192,7 @@ static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"demod", CmdMotorolaDemod, AlwaysAvailable, "Demodulate an MOTOROLA tag from the GraphBuffer"}, {"read", CmdMotorolaRead, IfPm3Lf, "Attempt to read and extract tag data from the antenna"}, + {"clone", CmdMotorolaClone, IfPm3Lf, "clone MOTOROLA to T55x7"}, {"sim", CmdMotorolaSim, IfPm3Lf, "simulate MOTOROLA tag"}, {NULL, NULL, NULL, NULL} }; @@ -113,18 +210,43 @@ int CmdLFMotorola(const char *Cmd) { // find MOTOROLA preamble in already demoded data int detectMotorola(uint8_t *dest, size_t *size) { - if (*size < 64) return -1; //make sure buffer has data - size_t startIdx = 0; - uint8_t preamble[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1 - }; - if (!preambleSearch(dest, preamble, sizeof(preamble), size, &startIdx)) - return -2; //preamble not found - if (*size != 64) return -3; //wrong demoded size - //return start position - return (int)startIdx; + + //make sure buffer has data + if (*size < 64) + return -1; + + bool inverted = false; + size_t found_size = *size; + size_t start_idx = 0; + + // Seems Motorola is based on the following indala format. + // standard 64 bit Motorola formats including 26 bit 40134 format + uint8_t preamble[] = {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; + uint8_t preamble_i[] = {0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; + + // preamble not found + if (!preambleSearch(dest, preamble, sizeof(preamble), &found_size, &start_idx)) { + found_size = *size; + if (!preambleSearch(dest, preamble_i, sizeof(preamble_i), &found_size, &start_idx)) { + return -2; + } + PrintAndLogEx(DEBUG, "DEBUG: detectMotorola PSK1 found inverted preamble"); + inverted = true; + } + + *size = found_size; + + // wrong demoded size + if (*size != 64) + return -3; + + if (inverted && start_idx > 0) { + for(size_t i= start_idx -1 ; i < *size + start_idx + 2; i++) { + dest[i] ^= 1; + } + } + + return (int)start_idx; } int demodMotorola(void) { From 36e4dfc1afe4aa008835dc05680f35567e616f79 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 12 Oct 2019 12:37:44 +0200 Subject: [PATCH 05/11] added a Motorola trace. --- traces/motorola_0437_00072.pm3 | 39999 +++++++++++++++++++++++++++++++ 1 file changed, 39999 insertions(+) create mode 100644 traces/motorola_0437_00072.pm3 diff --git a/traces/motorola_0437_00072.pm3 b/traces/motorola_0437_00072.pm3 new file mode 100644 index 000000000..48e91d46e --- /dev/null +++ b/traces/motorola_0437_00072.pm3 @@ -0,0 +1,39999 @@ +10 +-10 +10 +-9 +11 +-12 +13 +-10 +10 +-9 +10 +-10 +11 +-9 +10 +-10 +12 +-11 +10 +-11 +11 +-11 +11 +-11 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-12 +15 +9 +-16 +10 +-10 +9 +-10 +11 +-12 +10 +-10 +12 +-12 +9 +-11 +10 +-11 +9 +-12 +11 +-10 +10 +-10 +9 +-11 +10 +-11 +11 +-11 +9 +-9 +9 +-11 +9 +-10 +10 +-9 +9 +-9 +12 +-9 +10 +-9 +11 +-8 +10 +-8 +9 +-9 +12 +-8 +11 +-9 +10 +-9 +11 +-9 +11 +-10 +11 +-10 +7 +-9 +9 +-11 +-9 +13 +-7 +12 +-8 +9 +-10 +10 +-8 +11 +-9 +10 +-10 +10 +-9 +11 +-10 +11 +-10 +10 +-9 +11 +-10 +11 +-9 +11 +-9 +11 +-9 +11 +-10 +10 +-9 +10 +-9 +10 +-10 +10 +-9 +11 +-10 +11 +-11 +11 +-10 +11 +-9 +10 +-11 +10 +-10 +10 +-9 +9 +-11 +9 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-9 +10 +-11 +11 +-10 +11 +-10 +12 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-11 +11 +-10 +11 +-11 +11 +-8 +12 +-9 +10 +-9 +10 +-10 +12 +-10 +10 +-10 +12 +-12 +11 +-11 +12 +-9 +9 +-11 +10 +-9 +10 +-10 +11 +-9 +12 +-9 +11 +-10 +13 +-11 +11 +-9 +9 +-10 +10 +-11 +9 +-11 +9 +-10 +8 +-11 +11 +-9 +9 +-11 +11 +-10 +10 +-9 +10 +-10 +12 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +9 +-10 +11 +-10 +11 +-10 +10 +-9 +10 +-11 +10 +-9 +9 +-10 +10 +-10 +13 +-11 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-10 +11 +-8 +10 +-9 +11 +-9 +12 +-10 +11 +-11 +11 +-11 +13 +9 +-16 +11 +-10 +6 +-11 +9 +-12 +9 +-10 +9 +-10 +10 +-9 +9 +-10 +10 +-10 +9 +-9 +10 +-9 +11 +-9 +11 +-9 +10 +-11 +9 +-10 +9 +-9 +10 +-10 +11 +-9 +11 +-10 +9 +-10 +9 +-9 +10 +-9 +9 +-10 +10 +-9 +9 +-9 +10 +-9 +11 +-9 +10 +-10 +10 +-9 +9 +-10 +11 +-9 +10 +-12 +-8 +16 +-6 +10 +-9 +11 +-9 +13 +-10 +10 +-10 +12 +-11 +14 +-8 +12 +-8 +12 +-8 +12 +-9 +11 +-9 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-11 +11 +-10 +10 +-9 +11 +-9 +12 +-9 +11 +-10 +12 +-9 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +12 +-10 +10 +-10 +10 +-11 +9 +-11 +10 +-10 +9 +-10 +11 +-9 +8 +-12 +11 +-9 +11 +-10 +9 +-10 +11 +-10 +11 +-9 +8 +-10 +11 +-11 +10 +-10 +9 +-11 +12 +-10 +11 +-8 +9 +-10 +13 +-9 +11 +-9 +11 +-9 +11 +-10 +10 +-11 +10 +-11 +11 +-10 +10 +-12 +10 +-11 +9 +-11 +10 +-10 +9 +-10 +8 +-11 +11 +-10 +9 +-10 +10 +-11 +11 +-10 +12 +-8 +11 +-9 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +9 +-10 +9 +-11 +10 +-11 +8 +-10 +13 +9 +-16 +10 +-12 +10 +-11 +10 +-10 +11 +-10 +11 +-10 +9 +-9 +10 +-10 +9 +-11 +9 +-11 +10 +-9 +9 +-10 +9 +-10 +10 +-8 +10 +-9 +10 +-10 +9 +-8 +8 +-9 +10 +-9 +12 +-11 +11 +-9 +10 +-8 +12 +-11 +12 +-11 +8 +-8 +8 +-9 +9 +-8 +9 +-9 +11 +-9 +9 +-11 +9 +-9 +9 +-12 +-8 +13 +-8 +11 +-9 +9 +-10 +10 +-10 +10 +-10 +10 +-10 +12 +-10 +12 +-9 +11 +-9 +11 +-9 +10 +-10 +12 +-9 +10 +-9 +10 +-10 +10 +-10 +14 +10 +-16 +11 +-11 +11 +-11 +9 +-11 +11 +-10 +10 +-9 +10 +-11 +9 +-11 +10 +-12 +9 +-11 +8 +-9 +9 +-11 +10 +-9 +11 +-9 +9 +-10 +11 +-12 +-8 +13 +-8 +12 +-9 +12 +-9 +12 +-10 +11 +-9 +10 +-8 +11 +-10 +13 +-8 +11 +-9 +11 +-9 +10 +-9 +11 +-10 +10 +-10 +10 +-11 +10 +-10 +11 +-11 +11 +-10 +9 +-10 +9 +-11 +10 +-11 +10 +-10 +11 +-10 +9 +-9 +10 +-9 +11 +-10 +12 +-11 +12 +-11 +9 +-9 +12 +-11 +10 +-9 +11 +-10 +11 +-9 +11 +-9 +11 +-11 +10 +-8 +11 +-11 +12 +-9 +9 +-10 +10 +-10 +11 +-9 +11 +-9 +12 +-9 +10 +-10 +11 +-11 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +11 +-10 +10 +-11 +11 +-9 +11 +-11 +11 +-11 +11 +-11 +11 +-10 +10 +-10 +11 +-10 +10 +-8 +9 +-9 +11 +-11 +10 +-11 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +12 +-10 +10 +-9 +11 +-11 +13 +-9 +10 +-9 +10 +-9 +10 +-10 +11 +-10 +10 +-10 +11 +-11 +10 +-10 +11 +-10 +11 +-10 +12 +-10 +10 +-9 +11 +-9 +9 +-9 +11 +-10 +11 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-9 +9 +-10 +9 +-10 +9 +-10 +12 +-11 +11 +-9 +10 +-9 +11 +-10 +10 +-9 +10 +-11 +10 +-12 +10 +-10 +9 +-11 +10 +-11 +11 +-12 +10 +-11 +11 +-9 +10 +-9 +10 +-9 +11 +-10 +11 +-11 +11 +-12 +10 +-9 +9 +-9 +11 +-9 +9 +-9 +11 +-9 +13 +-10 +8 +-11 +10 +-8 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-11 +11 +-11 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +9 +-10 +9 +-11 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +9 +-10 +10 +-12 +11 +-9 +8 +-11 +10 +-10 +11 +-11 +10 +-11 +10 +-11 +11 +-9 +10 +-8 +9 +-9 +12 +-10 +11 +-10 +11 +-10 +13 +-10 +11 +-10 +10 +-11 +13 +-10 +9 +-9 +10 +-11 +13 +-9 +10 +-10 +11 +-10 +11 +-11 +11 +-10 +11 +-10 +10 +-11 +11 +-10 +11 +-12 +11 +-10 +10 +-11 +9 +-11 +10 +-11 +11 +-11 +10 +-10 +11 +-11 +11 +-10 +11 +-9 +11 +-10 +11 +-9 +12 +-10 +10 +-10 +10 +-9 +10 +-10 +13 +-9 +10 +-10 +10 +-11 +10 +-11 +11 +-10 +9 +-11 +10 +-11 +9 +-11 +9 +-10 +10 +-10 +11 +-11 +10 +-9 +10 +-12 +11 +-10 +11 +-9 +10 +-8 +11 +-10 +10 +-11 +11 +-10 +11 +-10 +11 +-11 +11 +-11 +11 +-9 +10 +-10 +11 +-10 +10 +-9 +11 +-10 +11 +-10 +11 +-10 +10 +-11 +9 +-11 +9 +-10 +9 +-10 +11 +-9 +10 +-11 +10 +-10 +9 +-9 +9 +-10 +10 +-11 +11 +-10 +12 +-9 +11 +-9 +10 +-8 +10 +-9 +11 +-10 +11 +-10 +11 +-9 +11 +-9 +8 +-11 +11 +-9 +10 +-9 +9 +-12 +11 +-10 +9 +-10 +12 +-9 +9 +-9 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-8 +10 +-10 +11 +-10 +11 +-9 +11 +-10 +11 +-10 +11 +-11 +9 +-10 +12 +-10 +9 +-11 +11 +-10 +10 +-11 +11 +-10 +9 +-11 +12 +-9 +10 +-11 +11 +-9 +10 +-9 +11 +-10 +11 +-11 +11 +-9 +12 +-10 +10 +-9 +10 +-9 +10 +-10 +11 +-12 +9 +-11 +12 +-10 +12 +-9 +12 +-9 +10 +-9 +11 +-9 +10 +-9 +12 +-11 +9 +-10 +9 +-10 +9 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-9 +9 +-12 +13 +-9 +11 +-9 +11 +-10 +12 +-9 +10 +-11 +10 +-10 +11 +-11 +10 +-10 +9 +-11 +9 +-11 +9 +-11 +11 +-10 +11 +-11 +10 +-10 +10 +-9 +10 +-11 +10 +-11 +10 +-11 +10 +-10 +11 +-9 +11 +-9 +9 +-10 +11 +-11 +10 +-10 +11 +-10 +10 +-11 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +9 +-11 +10 +-9 +9 +-10 +10 +-10 +12 +-8 +9 +-9 +12 +-10 +11 +-9 +11 +-11 +11 +-9 +10 +-11 +11 +-11 +11 +-10 +11 +-9 +10 +-11 +11 +-8 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-11 +10 +-11 +11 +-11 +9 +-11 +11 +-10 +11 +-10 +10 +-10 +11 +-9 +10 +-8 +11 +-11 +10 +-9 +11 +-9 +10 +-9 +11 +-10 +10 +-9 +12 +-10 +12 +-9 +10 +-10 +12 +-9 +10 +-8 +10 +-11 +11 +-11 +10 +-11 +10 +-10 +9 +-11 +9 +-11 +10 +-11 +11 +-11 +11 +-10 +11 +-10 +9 +-9 +10 +-10 +10 +-10 +12 +-10 +11 +-10 +10 +-9 +9 +-12 +11 +-11 +10 +-10 +9 +-10 +9 +-11 +11 +-10 +9 +-10 +11 +-10 +12 +-9 +11 +-9 +11 +-9 +11 +-9 +11 +-8 +12 +-11 +12 +-9 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +11 +-9 +9 +-9 +10 +-11 +11 +-10 +9 +-10 +10 +-11 +10 +-10 +8 +-10 +9 +-10 +10 +-11 +11 +-11 +11 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +10 +-10 +10 +-11 +11 +-9 +11 +-10 +11 +-9 +11 +-8 +9 +-9 +11 +-9 +12 +-9 +12 +-10 +11 +-9 +11 +-9 +13 +-10 +11 +-11 +11 +-10 +10 +-10 +10 +-10 +13 +-11 +10 +-11 +9 +-10 +9 +-11 +11 +-11 +8 +-11 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-9 +11 +-9 +11 +-9 +12 +-11 +11 +-10 +10 +-11 +10 +-9 +9 +-11 +13 +-10 +10 +-9 +11 +-11 +10 +-10 +8 +-12 +12 +-10 +10 +-11 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +9 +-9 +10 +-11 +10 +-11 +11 +-10 +10 +-9 +14 +9 +-15 +9 +-10 +11 +-10 +9 +-9 +10 +-11 +9 +-11 +9 +-10 +9 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +9 +-10 +10 +-9 +10 +-10 +8 +-10 +10 +-11 +10 +-11 +9 +-10 +9 +-8 +10 +-12 +11 +-10 +10 +-9 +10 +-10 +9 +-11 +11 +-9 +10 +-11 +10 +-8 +9 +-9 +10 +-9 +12 +-10 +11 +-10 +10 +-8 +9 +-8 +10 +-10 +11 +-8 +9 +-9 +11 +-11 +11 +-9 +10 +-9 +11 +-10 +9 +-9 +10 +-10 +10 +-9 +11 +-9 +8 +-10 +8 +-8 +11 +-12 +-7 +14 +-7 +11 +-9 +11 +-8 +10 +-8 +8 +-9 +11 +-7 +11 +-11 +10 +-9 +10 +-8 +10 +-10 +11 +-8 +9 +-11 +10 +-11 +10 +-10 +9 +-10 +11 +-11 +9 +-8 +11 +-10 +10 +-8 +11 +-10 +12 +-10 +11 +-8 +10 +-10 +14 +-10 +10 +-10 +10 +-10 +10 +-10 +12 +-10 +10 +-11 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +9 +-10 +9 +-11 +10 +-12 +10 +-10 +9 +-10 +9 +-10 +10 +-10 +11 +-9 +10 +-11 +11 +-10 +11 +-9 +10 +-9 +11 +-11 +10 +-10 +14 +10 +-16 +10 +-12 +10 +-11 +10 +-11 +8 +-9 +9 +-10 +8 +-10 +10 +-8 +9 +-10 +9 +-10 +10 +-10 +10 +-9 +10 +-9 +9 +-10 +11 +-9 +9 +-9 +11 +-9 +10 +-10 +10 +-8 +11 +-8 +10 +-9 +10 +-9 +7 +-9 +9 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +9 +-8 +8 +-13 +-8 +14 +-8 +10 +-9 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +11 +-7 +11 +-10 +11 +-9 +11 +-8 +8 +-8 +12 +-9 +11 +-10 +12 +-9 +10 +-9 +12 +-10 +10 +-10 +9 +-10 +10 +-9 +9 +-10 +10 +-10 +11 +-10 +8 +-10 +9 +-10 +9 +-9 +10 +-10 +11 +-10 +13 +-10 +9 +-9 +12 +-10 +12 +-11 +10 +-9 +9 +-8 +9 +-11 +11 +-11 +11 +-11 +11 +-10 +11 +-10 +11 +-11 +9 +-10 +10 +-10 +10 +-11 +9 +-10 +10 +-11 +9 +-11 +10 +-11 +9 +-10 +11 +-10 +11 +-10 +10 +-11 +10 +-9 +11 +-9 +10 +-10 +13 +-9 +10 +-10 +10 +-9 +11 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-9 +11 +-10 +11 +-10 +14 +10 +-15 +9 +-11 +10 +-10 +11 +-9 +12 +-10 +10 +-9 +9 +-10 +10 +-9 +8 +-10 +10 +-10 +10 +-10 +11 +-9 +9 +-10 +9 +-9 +10 +-9 +10 +-12 +-8 +15 +-7 +12 +-9 +11 +-10 +12 +-9 +12 +-9 +10 +-9 +10 +-11 +11 +-9 +9 +-11 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +11 +-11 +11 +-11 +11 +-10 +9 +-10 +9 +-12 +12 +-11 +10 +-11 +9 +-9 +10 +-9 +9 +-10 +12 +-10 +10 +-9 +12 +-9 +12 +-9 +10 +-9 +12 +-9 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +11 +-11 +10 +-10 +10 +-9 +9 +-10 +10 +-10 +10 +-10 +12 +-13 +10 +-10 +10 +-9 +11 +-11 +11 +-9 +10 +-9 +11 +-10 +11 +-11 +13 +10 +-15 +9 +-11 +8 +-11 +9 +-11 +9 +-10 +9 +-11 +9 +-11 +8 +-11 +9 +-10 +10 +-11 +12 +-9 +9 +-7 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +9 +-9 +10 +-9 +9 +-9 +11 +-10 +9 +-9 +10 +-10 +11 +-8 +6 +-10 +9 +-9 +9 +-8 +10 +-10 +11 +-8 +9 +-8 +9 +-10 +11 +-10 +10 +-12 +-8 +15 +-9 +11 +-10 +12 +-9 +9 +-9 +10 +-9 +9 +-10 +11 +-9 +9 +-10 +8 +-9 +9 +-9 +12 +-9 +12 +-11 +11 +-10 +10 +-10 +10 +-11 +12 +-9 +8 +-10 +10 +-9 +10 +-8 +10 +-10 +12 +-10 +10 +-10 +10 +-11 +11 +-9 +9 +-8 +12 +-9 +10 +-10 +9 +-11 +11 +-11 +10 +-11 +11 +-11 +10 +-9 +11 +-10 +9 +-10 +11 +-10 +12 +-9 +11 +-9 +11 +-9 +11 +-9 +10 +-10 +10 +-8 +10 +-10 +12 +-9 +12 +-10 +11 +-9 +11 +-10 +11 +-10 +11 +-10 +10 +-9 +10 +-10 +9 +-12 +10 +-12 +10 +-11 +10 +-11 +9 +-9 +10 +-12 +10 +-9 +9 +-12 +10 +-10 +10 +-9 +10 +-10 +11 +-9 +11 +-9 +10 +-11 +12 +-13 +11 +-9 +12 +-9 +10 +-8 +10 +-9 +11 +-11 +12 +-10 +10 +-10 +9 +-9 +10 +-10 +11 +-9 +12 +-10 +10 +-10 +10 +-8 +9 +-12 +13 +-10 +10 +-10 +10 +-9 +10 +-10 +11 +-11 +10 +-10 +9 +-10 +11 +-9 +11 +-9 +11 +-11 +11 +-10 +8 +-10 +10 +-10 +11 +-11 +9 +-11 +11 +-11 +14 +10 +-15 +10 +-10 +9 +-11 +11 +-10 +10 +-9 +9 +-10 +10 +-9 +9 +-10 +9 +-10 +10 +-10 +9 +-10 +11 +-9 +10 +-10 +9 +-10 +10 +-11 +10 +-9 +11 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-10 +9 +-8 +10 +-10 +11 +-10 +10 +-9 +10 +-11 +10 +-8 +8 +-10 +10 +-10 +9 +-9 +10 +-10 +9 +-13 +-7 +14 +-8 +11 +-9 +10 +-9 +10 +-9 +10 +-9 +10 +-10 +12 +-9 +9 +-9 +10 +-9 +10 +-9 +10 +-10 +9 +-9 +10 +-9 +9 +-11 +11 +-8 +10 +-9 +12 +-9 +11 +-10 +10 +-10 +12 +-9 +9 +-10 +11 +-10 +10 +-11 +10 +-9 +12 +-10 +10 +-9 +11 +-11 +12 +-10 +10 +-9 +10 +-9 +12 +-10 +10 +-11 +9 +-10 +11 +-11 +11 +-10 +10 +-10 +11 +-11 +12 +-11 +8 +-10 +9 +-10 +9 +-11 +10 +-12 +9 +-10 +9 +-10 +10 +-8 +11 +-10 +11 +-10 +11 +-10 +10 +-9 +10 +-9 +11 +-9 +10 +-10 +11 +-10 +13 +-10 +10 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +9 +-11 +11 +-9 +11 +-10 +11 +-11 +12 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +11 +-11 +11 +-10 +9 +-11 +10 +-10 +11 +-11 +10 +-10 +10 +-11 +11 +-11 +12 +-10 +11 +-8 +10 +-10 +14 +11 +-14 +11 +-10 +10 +-9 +9 +-10 +9 +-11 +11 +-10 +10 +-11 +10 +-9 +9 +-10 +9 +-9 +10 +-9 +7 +-9 +9 +-10 +11 +-11 +8 +-10 +9 +-9 +11 +-9 +10 +-9 +9 +-10 +10 +-9 +10 +-9 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-9 +11 +-11 +9 +-9 +10 +-9 +11 +-9 +9 +-10 +12 +-11 +-7 +13 +-8 +10 +-10 +11 +-9 +10 +-10 +11 +-9 +10 +-10 +11 +-9 +10 +-9 +9 +-10 +10 +-10 +12 +-9 +11 +-10 +12 +-9 +9 +-9 +11 +-9 +14 +10 +-15 +10 +-11 +9 +-9 +10 +-10 +9 +-10 +8 +-11 +10 +-11 +9 +-10 +9 +-9 +8 +-9 +9 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +9 +-13 +-8 +12 +-8 +10 +-8 +10 +-8 +10 +-9 +10 +-10 +10 +-10 +11 +-10 +9 +-10 +10 +-9 +9 +-10 +9 +-9 +10 +-9 +12 +-7 +11 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-11 +11 +-11 +10 +-10 +10 +-9 +9 +-9 +11 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-11 +11 +-9 +10 +-9 +11 +-11 +10 +-9 +11 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-9 +10 +-11 +11 +-10 +10 +-11 +10 +-8 +10 +-10 +9 +-11 +10 +-12 +10 +-11 +10 +-11 +10 +-10 +10 +-10 +11 +-9 +10 +-11 +10 +-10 +12 +-11 +11 +-10 +10 +-9 +12 +-10 +12 +-9 +11 +-10 +11 +-9 +12 +-9 +9 +-10 +12 +-9 +10 +-10 +11 +-11 +12 +-10 +10 +-10 +12 +-10 +12 +-9 +9 +-11 +10 +-10 +10 +-11 +11 +-11 +10 +-10 +9 +-11 +10 +-11 +10 +-11 +10 +-11 +10 +-12 +10 +-11 +10 +-11 +11 +-11 +11 +-10 +8 +-11 +11 +-10 +11 +-10 +11 +-9 +11 +-10 +11 +-8 +12 +-10 +11 +-9 +11 +-10 +10 +-10 +12 +-10 +10 +-10 +12 +-9 +11 +-9 +11 +-9 +11 +-9 +11 +-10 +10 +-10 +10 +-11 +9 +-10 +10 +-11 +10 +-11 +11 +-10 +9 +-10 +11 +-11 +10 +-12 +10 +-11 +10 +-11 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-9 +11 +-9 +10 +-11 +11 +-10 +9 +-9 +10 +-11 +10 +-10 +8 +-9 +11 +-9 +12 +-11 +12 +-9 +9 +-11 +11 +-10 +10 +-11 +10 +-11 +10 +-9 +13 +-10 +11 +-10 +10 +-12 +12 +-11 +10 +-10 +10 +-11 +12 +-9 +12 +-10 +10 +-9 +9 +-11 +12 +-10 +11 +-10 +10 +-10 +10 +-9 +9 +-11 +10 +-10 +11 +-9 +11 +-10 +12 +-9 +11 +-9 +10 +-8 +12 +-10 +13 +-9 +11 +-9 +10 +-9 +12 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-10 +11 +-9 +11 +-9 +11 +-10 +12 +-10 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +10 +-11 +10 +-10 +10 +-11 +10 +-11 +9 +-9 +10 +-11 +11 +-9 +10 +-10 +10 +-10 +8 +-9 +11 +-10 +10 +-10 +12 +-9 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +11 +-11 +10 +-11 +11 +-8 +10 +-11 +11 +-10 +10 +-8 +8 +-10 +12 +-9 +10 +-11 +12 +-10 +12 +-10 +11 +-9 +12 +-10 +11 +-11 +11 +-12 +9 +-11 +9 +-10 +11 +-10 +10 +-9 +9 +-11 +12 +-10 +11 +-13 +11 +-11 +12 +-10 +9 +-10 +9 +-10 +11 +-11 +12 +-11 +11 +-10 +10 +-11 +11 +-9 +10 +-10 +9 +-10 +12 +-10 +12 +-9 +11 +-9 +11 +-9 +10 +-9 +12 +-11 +10 +-10 +10 +-9 +10 +-10 +11 +-11 +9 +-10 +11 +-10 +10 +-11 +11 +-10 +8 +-11 +10 +-10 +9 +-12 +11 +-11 +10 +-11 +11 +-10 +9 +-10 +11 +-10 +10 +-9 +11 +-9 +10 +-10 +12 +-9 +12 +-8 +11 +-10 +11 +-11 +11 +-10 +11 +-11 +10 +-11 +11 +-11 +10 +-11 +10 +-11 +12 +-11 +7 +-11 +9 +-10 +9 +-11 +9 +-11 +11 +-10 +12 +-11 +10 +-9 +10 +-10 +12 +-9 +11 +-9 +11 +-10 +10 +-11 +11 +-11 +12 +-9 +11 +-10 +9 +-10 +12 +-10 +11 +-11 +12 +-10 +10 +-10 +11 +-11 +12 +-8 +10 +-11 +12 +-10 +9 +-8 +11 +-11 +13 +-9 +11 +-9 +9 +-8 +9 +-10 +11 +-10 +10 +-10 +10 +-10 +9 +-11 +10 +-10 +11 +-11 +10 +-11 +10 +-12 +10 +-10 +9 +-11 +12 +-11 +9 +-11 +12 +-11 +13 +-11 +11 +-11 +11 +-10 +12 +-12 +11 +-10 +10 +-11 +11 +-10 +11 +-11 +12 +-10 +10 +-10 +11 +-11 +10 +-11 +10 +-9 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-9 +11 +-10 +12 +-11 +10 +-11 +11 +-10 +9 +-11 +10 +-11 +11 +-11 +10 +-11 +10 +-10 +10 +-11 +9 +-10 +10 +-10 +11 +-11 +11 +-10 +9 +-10 +9 +-10 +11 +-10 +9 +-11 +10 +-10 +8 +-11 +11 +-10 +11 +-10 +9 +-11 +11 +-10 +12 +-11 +9 +-9 +13 +-9 +12 +-11 +12 +-10 +10 +-10 +11 +-10 +10 +-11 +11 +-9 +11 +-9 +12 +-9 +11 +-10 +13 +-10 +12 +-9 +11 +-9 +10 +-10 +11 +-10 +9 +-8 +12 +-9 +12 +-8 +10 +-10 +13 +-9 +10 +-11 +11 +-11 +9 +-10 +10 +-11 +10 +-11 +11 +-10 +10 +-10 +9 +-10 +10 +-12 +9 +-12 +11 +-10 +10 +-9 +10 +-11 +11 +-10 +10 +-9 +11 +-11 +11 +-10 +11 +-10 +10 +-12 +9 +-11 +9 +-10 +9 +-11 +10 +-9 +11 +-10 +9 +-10 +10 +-10 +11 +-9 +10 +-9 +13 +-11 +12 +-9 +9 +-9 +12 +-10 +11 +-12 +12 +-9 +11 +-11 +10 +-11 +11 +-9 +10 +-10 +11 +-9 +10 +-10 +10 +-12 +12 +-11 +12 +-9 +10 +-11 +10 +-9 +9 +-12 +10 +-10 +11 +-11 +9 +-11 +12 +-11 +12 +-9 +11 +-10 +12 +-10 +10 +-8 +11 +-9 +11 +-9 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-10 +10 +-9 +12 +-12 +10 +-9 +9 +-11 +9 +-10 +11 +-9 +11 +-9 +11 +-9 +12 +-8 +12 +-10 +11 +-9 +12 +-11 +10 +-10 +9 +-11 +10 +-10 +9 +-11 +9 +-11 +9 +-11 +10 +-10 +10 +-10 +12 +-10 +11 +-9 +11 +-10 +12 +-9 +12 +-9 +12 +-10 +12 +-9 +10 +-10 +11 +-10 +10 +-11 +11 +-11 +10 +-9 +11 +-9 +12 +-10 +11 +-10 +10 +-10 +11 +-11 +12 +9 +-15 +12 +-13 +9 +-10 +9 +-11 +10 +-10 +8 +-11 +11 +-11 +9 +-11 +9 +-10 +10 +-10 +9 +-10 +11 +-8 +7 +-10 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +8 +-10 +10 +-9 +10 +-9 +10 +-10 +9 +-10 +8 +-7 +10 +-10 +9 +-9 +10 +-9 +9 +-8 +8 +-9 +11 +-10 +10 +-9 +9 +-11 +9 +-10 +9 +-8 +9 +-9 +11 +-9 +10 +-9 +9 +-11 +11 +-10 +9 +-9 +9 +-10 +9 +-9 +9 +-10 +11 +-9 +11 +-10 +9 +-9 +10 +-8 +10 +-9 +10 +-12 +-9 +13 +-8 +10 +-8 +10 +-9 +12 +-8 +10 +-10 +12 +-10 +11 +-9 +9 +-11 +11 +-9 +11 +-9 +12 +-11 +11 +-10 +11 +-8 +10 +-8 +11 +-9 +12 +-9 +11 +-8 +10 +-9 +12 +-9 +9 +-11 +10 +-11 +12 +-9 +11 +-10 +11 +-9 +10 +-9 +9 +-10 +10 +-9 +11 +-10 +9 +-11 +11 +-10 +11 +-11 +10 +-10 +10 +-10 +10 +-9 +11 +-9 +9 +-12 +10 +-9 +9 +-11 +10 +-10 +9 +-9 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +12 +-9 +11 +-10 +11 +-10 +14 +11 +-16 +11 +-11 +8 +-11 +11 +-11 +10 +-11 +8 +-11 +10 +-11 +9 +-11 +10 +-9 +10 +-12 +11 +-10 +9 +-11 +9 +-9 +10 +-10 +8 +-9 +9 +-10 +10 +-9 +11 +-10 +10 +-10 +9 +-8 +10 +-9 +9 +-10 +10 +-9 +9 +-10 +11 +-7 +8 +-9 +9 +-8 +10 +-10 +9 +-9 +11 +-9 +10 +-10 +11 +-12 +-8 +14 +-8 +12 +-9 +10 +-7 +10 +-9 +9 +-9 +11 +-10 +11 +-8 +9 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-9 +11 +-10 +11 +-8 +10 +-9 +12 +-10 +11 +-9 +10 +-10 +8 +-8 +13 +-10 +12 +-8 +12 +-8 +9 +-10 +11 +-11 +9 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-10 +10 +-8 +10 +-9 +11 +-10 +12 +-10 +11 +-10 +10 +-10 +10 +-11 +12 +-11 +11 +-10 +10 +-11 +11 +-11 +9 +-11 +9 +-10 +11 +-12 +9 +-11 +9 +-10 +8 +-10 +9 +-11 +9 +-12 +10 +-9 +9 +-12 +12 +-10 +11 +-8 +9 +-10 +11 +-9 +11 +-8 +12 +-9 +14 +-10 +11 +-8 +11 +-10 +12 +-9 +13 +-10 +11 +-10 +11 +-11 +13 +11 +-16 +11 +-12 +9 +-10 +9 +-12 +10 +-10 +9 +-11 +9 +-10 +10 +-11 +11 +-11 +10 +-9 +10 +-9 +10 +-10 +11 +-12 +10 +-10 +9 +-10 +11 +-13 +-8 +15 +-9 +11 +-10 +11 +-9 +11 +-9 +10 +-9 +10 +-10 +10 +-8 +10 +-9 +11 +-10 +10 +-9 +12 +-9 +10 +-8 +12 +-11 +13 +-9 +12 +-8 +12 +-9 +12 +-10 +13 +-9 +10 +-9 +10 +-10 +10 +-10 +11 +-11 +11 +-11 +9 +-10 +9 +-11 +10 +-12 +10 +-10 +9 +-11 +10 +-11 +10 +-11 +9 +-10 +9 +-11 +11 +-9 +10 +-9 +10 +-10 +11 +-10 +11 +-9 +9 +-9 +12 +-9 +11 +-9 +12 +-10 +11 +-8 +10 +-9 +11 +-9 +10 +-11 +11 +-11 +9 +-9 +14 +10 +-15 +11 +-11 +10 +-11 +11 +-11 +9 +-10 +10 +-10 +10 +-8 +11 +-11 +10 +-9 +10 +-10 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-9 +9 +-9 +11 +-11 +11 +-11 +11 +-11 +9 +-9 +10 +-9 +8 +-9 +9 +-9 +9 +-10 +10 +-9 +10 +-9 +11 +-9 +10 +-11 +-9 +14 +-7 +12 +-8 +11 +-9 +10 +-8 +11 +-9 +12 +-9 +11 +-9 +11 +-9 +10 +-10 +10 +-9 +10 +-9 +9 +-10 +10 +-10 +10 +-11 +10 +-10 +9 +-11 +11 +-9 +11 +-11 +11 +-9 +10 +-9 +10 +-11 +11 +-9 +11 +-11 +10 +-10 +9 +-9 +10 +-10 +12 +-10 +11 +-8 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-11 +11 +-11 +10 +-10 +11 +-9 +9 +-9 +10 +-9 +13 +-9 +9 +-9 +10 +-10 +11 +-10 +11 +-10 +12 +-10 +12 +-9 +12 +-10 +10 +-10 +11 +-9 +10 +-11 +11 +-11 +11 +-11 +10 +-11 +10 +-10 +10 +-11 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-12 +11 +-10 +11 +-9 +12 +-9 +11 +-10 +12 +-10 +11 +-9 +8 +-9 +10 +-10 +11 +-10 +11 +-11 +11 +-12 +9 +-10 +10 +-11 +12 +-12 +11 +-11 +11 +-11 +10 +-11 +12 +-10 +12 +-9 +11 +-11 +11 +-10 +10 +-11 +10 +-11 +11 +-10 +11 +-10 +10 +-11 +10 +-11 +11 +-11 +12 +-9 +10 +-11 +10 +-11 +14 +11 +-17 +11 +-12 +11 +-10 +11 +-10 +10 +-11 +9 +-10 +9 +-10 +11 +-10 +10 +-10 +10 +-9 +12 +-10 +14 +-10 +9 +-10 +9 +-9 +10 +-10 +9 +-10 +10 +-9 +9 +-10 +9 +-10 +10 +-9 +10 +-11 +10 +-9 +9 +-9 +9 +-10 +10 +-11 +10 +-9 +9 +-8 +9 +-11 +11 +-9 +8 +-8 +10 +-9 +11 +-13 +-9 +14 +-8 +10 +-8 +8 +-10 +10 +-10 +11 +-8 +12 +-11 +9 +-9 +12 +-9 +12 +-8 +11 +-9 +9 +-10 +11 +-11 +11 +-10 +11 +-10 +10 +-9 +10 +-9 +11 +-9 +11 +-10 +11 +-10 +10 +-11 +9 +-10 +11 +-11 +10 +-9 +11 +-9 +10 +-10 +10 +-9 +11 +-10 +12 +-10 +10 +-11 +11 +-10 +10 +-9 +11 +-9 +12 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-11 +10 +-9 +11 +-11 +9 +-11 +10 +-8 +8 +-10 +10 +-11 +10 +-11 +11 +-10 +9 +-10 +11 +-10 +9 +-11 +11 +-10 +8 +-10 +11 +-10 +10 +-11 +11 +-11 +11 +-10 +10 +-12 +12 +-9 +11 +-10 +9 +-10 +12 +-10 +9 +-11 +9 +-9 +11 +-11 +11 +-9 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +10 +-10 +11 +-10 +11 +-8 +8 +-12 +12 +-11 +10 +-10 +8 +-10 +11 +-11 +12 +-11 +10 +-9 +11 +-11 +12 +-9 +15 +11 +-14 +10 +-11 +10 +-10 +10 +-10 +9 +-9 +9 +-11 +10 +-11 +10 +-11 +9 +-11 +9 +-10 +8 +-10 +9 +-10 +11 +-9 +9 +-8 +8 +-10 +10 +-9 +8 +-10 +10 +-9 +9 +-11 +8 +-8 +7 +-11 +11 +-12 +9 +-8 +10 +-11 +10 +-9 +9 +-10 +10 +-10 +10 +-11 +8 +-8 +10 +-12 +9 +-9 +10 +-13 +-9 +15 +-9 +11 +-8 +8 +-9 +12 +-9 +10 +-9 +11 +-8 +11 +-8 +11 +-10 +11 +-10 +11 +-10 +10 +-11 +11 +-9 +11 +-8 +11 +-9 +11 +-9 +14 +10 +-15 +11 +-9 +10 +-10 +10 +-9 +10 +-9 +11 +-9 +11 +-9 +9 +-10 +10 +-11 +11 +-9 +9 +-10 +8 +-11 +9 +-10 +9 +-11 +9 +-10 +9 +-13 +-9 +13 +-9 +11 +-10 +8 +-9 +10 +-8 +9 +-11 +10 +-11 +12 +-9 +12 +-9 +10 +-9 +10 +-8 +10 +-9 +11 +-8 +10 +-9 +11 +-9 +10 +-9 +11 +-9 +10 +-10 +10 +-10 +10 +-9 +7 +-10 +11 +-9 +10 +-11 +11 +-10 +11 +-10 +10 +-10 +11 +-11 +12 +-12 +11 +-11 +10 +-10 +10 +-8 +11 +-10 +11 +-11 +11 +-9 +11 +-10 +11 +-9 +11 +-11 +11 +-10 +11 +-10 +12 +-9 +12 +-10 +10 +-10 +10 +-8 +10 +-9 +9 +-10 +12 +-10 +10 +-9 +10 +-9 +10 +-10 +11 +-9 +10 +-10 +10 +-11 +11 +-11 +11 +-9 +10 +-9 +11 +-9 +10 +-9 +11 +-10 +12 +-10 +10 +-9 +10 +-11 +11 +-10 +11 +-11 +10 +-10 +9 +-11 +10 +-10 +9 +-10 +11 +-10 +10 +-10 +11 +-9 +10 +-10 +11 +-10 +11 +-11 +12 +-9 +9 +-10 +11 +-9 +10 +-9 +10 +-9 +9 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-9 +10 +-10 +10 +-11 +10 +-10 +9 +-10 +12 +-10 +10 +-9 +10 +-9 +10 +-11 +13 +-9 +11 +-7 +9 +-9 +11 +-9 +10 +-10 +11 +-11 +10 +-10 +9 +-10 +9 +-11 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-11 +10 +-10 +9 +-10 +11 +-10 +11 +-10 +11 +-9 +11 +-11 +12 +-10 +10 +-8 +10 +-9 +10 +-10 +9 +-9 +12 +-10 +10 +-10 +10 +-10 +10 +-9 +9 +-9 +9 +-10 +9 +-11 +11 +-10 +9 +-11 +10 +-11 +11 +-9 +10 +-11 +10 +-10 +10 +-10 +10 +-10 +10 +-12 +9 +-9 +10 +-12 +13 +-11 +10 +-10 +11 +-10 +11 +-9 +10 +-9 +11 +-10 +9 +-10 +12 +-10 +11 +-10 +11 +-10 +9 +-10 +13 +-10 +10 +-11 +11 +-10 +12 +-9 +10 +-9 +12 +-11 +10 +-9 +10 +-10 +10 +-10 +11 +-10 +12 +-9 +9 +-10 +10 +-9 +10 +-9 +10 +-12 +11 +-8 +9 +-10 +11 +-11 +10 +-10 +10 +-10 +12 +-10 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +12 +-8 +11 +-11 +11 +-11 +10 +-10 +9 +-8 +8 +-11 +12 +-9 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +10 +-9 +11 +-10 +10 +-11 +11 +-10 +12 +-9 +9 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +9 +-11 +11 +-9 +10 +-10 +11 +-10 +10 +-11 +10 +-12 +11 +-10 +9 +-11 +10 +-10 +11 +-11 +11 +-11 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +9 +-10 +10 +-10 +11 +-9 +11 +-10 +10 +-11 +8 +-11 +11 +-9 +10 +-9 +11 +-10 +11 +-10 +12 +-10 +11 +-9 +10 +-9 +11 +-10 +13 +-10 +11 +-10 +11 +-10 +10 +-10 +9 +-10 +10 +-11 +9 +-12 +11 +-9 +8 +-11 +11 +-11 +11 +-10 +10 +-12 +12 +-10 +11 +-8 +10 +-10 +11 +-10 +11 +-9 +12 +-9 +11 +-10 +12 +-9 +11 +-11 +10 +-11 +11 +-10 +9 +-10 +10 +-11 +10 +-10 +9 +-10 +10 +-10 +9 +-11 +10 +-10 +12 +-12 +11 +-10 +11 +-11 +10 +-11 +10 +-11 +11 +-10 +11 +-12 +10 +-10 +8 +-11 +13 +-9 +9 +-9 +10 +-12 +13 +-9 +11 +-10 +10 +-11 +9 +-11 +11 +-11 +10 +-10 +10 +-11 +12 +-10 +10 +-10 +10 +-9 +12 +-9 +12 +-9 +12 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +9 +-10 +11 +-11 +11 +-11 +10 +-11 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-12 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-9 +12 +-9 +10 +-8 +10 +-8 +11 +-10 +12 +-8 +9 +-9 +11 +-10 +11 +-11 +10 +-10 +11 +-9 +8 +-12 +11 +-11 +11 +-11 +9 +-11 +9 +-11 +10 +-10 +11 +-9 +11 +-10 +10 +-11 +11 +-9 +12 +-11 +13 +-11 +11 +-8 +9 +-10 +11 +-10 +11 +-8 +12 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +11 +-10 +10 +-10 +11 +-10 +8 +-9 +10 +-10 +8 +-10 +11 +-10 +10 +-11 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-11 +9 +-11 +11 +-10 +11 +-11 +11 +-9 +11 +-10 +10 +-11 +10 +-9 +11 +-11 +12 +-9 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +11 +-10 +10 +-11 +11 +-12 +10 +-8 +7 +-9 +10 +-11 +12 +-11 +9 +-11 +12 +-11 +13 +-12 +10 +-8 +11 +-8 +11 +-9 +12 +-10 +12 +-9 +11 +-9 +11 +-10 +13 +-9 +10 +-9 +11 +-11 +11 +-9 +10 +-9 +10 +-10 +11 +-9 +9 +-10 +12 +-10 +12 +-10 +10 +-10 +9 +-11 +11 +-11 +10 +-10 +10 +-10 +12 +-10 +12 +-11 +12 +-11 +12 +-10 +10 +-9 +11 +-11 +11 +-8 +12 +-10 +10 +-9 +9 +-10 +10 +-10 +10 +-10 +9 +-11 +10 +-9 +9 +-9 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-11 +11 +-10 +11 +-11 +11 +-10 +9 +-11 +10 +-9 +11 +-10 +10 +-12 +10 +-12 +11 +-9 +9 +-11 +11 +-11 +11 +-11 +10 +-9 +10 +-10 +10 +-10 +12 +-8 +11 +-10 +12 +-10 +10 +-11 +11 +-10 +12 +-10 +9 +-10 +11 +-9 +11 +-11 +11 +-10 +11 +-10 +11 +-9 +9 +-11 +12 +-10 +10 +-11 +10 +-11 +11 +-9 +8 +-10 +11 +-11 +10 +-12 +10 +-10 +10 +-10 +10 +-11 +12 +-9 +10 +-11 +11 +-9 +10 +-11 +12 +-10 +11 +-11 +10 +-10 +9 +-10 +10 +-9 +11 +-10 +11 +-10 +10 +-10 +12 +-10 +14 +-10 +9 +-10 +10 +-9 +13 +10 +-15 +11 +-10 +9 +-9 +10 +-10 +8 +-11 +11 +-10 +10 +-9 +9 +-10 +11 +-9 +9 +-10 +9 +-10 +10 +-9 +11 +-9 +10 +-8 +9 +-10 +11 +-9 +9 +-9 +11 +-11 +11 +-8 +7 +-9 +8 +-8 +9 +-8 +9 +-10 +8 +-9 +9 +-10 +10 +-9 +7 +-9 +9 +-7 +9 +-10 +11 +-9 +10 +-9 +9 +-11 +11 +-9 +10 +-9 +10 +-8 +10 +-11 +9 +-8 +10 +-9 +10 +-8 +10 +-9 +9 +-9 +11 +-10 +10 +-9 +9 +-10 +10 +-10 +11 +-9 +11 +-9 +10 +-13 +-6 +14 +-8 +11 +-9 +8 +-9 +10 +-10 +11 +-10 +9 +-10 +11 +-9 +10 +-10 +10 +-9 +10 +-11 +11 +-10 +10 +-8 +11 +-12 +10 +-10 +9 +-11 +10 +-10 +11 +-10 +11 +-10 +11 +-9 +10 +-9 +10 +-8 +11 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +11 +-10 +12 +-9 +9 +-10 +9 +-9 +11 +-10 +11 +-11 +10 +-11 +10 +-11 +11 +-10 +10 +-9 +11 +-12 +11 +-11 +11 +-8 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-9 +11 +-11 +11 +-11 +9 +-11 +13 +10 +-14 +9 +-12 +9 +-11 +10 +-11 +9 +-10 +10 +-10 +11 +-8 +10 +-8 +12 +-9 +12 +-9 +11 +-10 +9 +-8 +9 +-11 +12 +-10 +9 +-9 +10 +-9 +9 +-10 +9 +-10 +9 +-10 +8 +-9 +10 +-10 +10 +-10 +9 +-10 +10 +-9 +10 +-9 +10 +-10 +12 +-9 +10 +-8 +10 +-8 +9 +-9 +10 +-9 +11 +-14 +-7 +14 +-9 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +10 +-9 +9 +-10 +10 +-10 +11 +-9 +9 +-10 +10 +-10 +10 +-10 +12 +-10 +10 +-10 +10 +-11 +11 +-9 +10 +-9 +10 +-8 +10 +-9 +9 +-10 +10 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-11 +10 +-11 +11 +-10 +11 +-8 +10 +-10 +12 +-10 +11 +-9 +9 +-9 +9 +-10 +10 +-10 +12 +-9 +10 +-10 +10 +-8 +10 +-10 +11 +-10 +12 +-8 +11 +-9 +10 +-8 +10 +-11 +9 +-11 +11 +-9 +9 +-10 +10 +-10 +11 +-11 +11 +-9 +10 +-11 +10 +-10 +10 +-9 +10 +-12 +10 +-10 +10 +-11 +9 +-11 +10 +-12 +11 +-10 +11 +-10 +11 +-10 +13 +9 +-14 +9 +-11 +10 +-10 +10 +-10 +9 +-10 +9 +-10 +10 +-10 +9 +-11 +9 +-9 +9 +-10 +8 +-8 +9 +-10 +11 +-9 +10 +-9 +9 +-10 +11 +-13 +-5 +12 +-8 +11 +-9 +10 +-9 +11 +-8 +10 +-10 +11 +-9 +11 +-9 +12 +-9 +10 +-10 +10 +-9 +12 +-11 +10 +-10 +12 +-9 +10 +-9 +10 +-9 +10 +-11 +11 +-8 +9 +-10 +9 +-10 +10 +-9 +11 +-9 +10 +-10 +13 +-11 +9 +-8 +11 +-10 +10 +-10 +11 +-10 +10 +-9 +9 +-11 +10 +-9 +9 +-10 +11 +-9 +11 +-11 +11 +-9 +9 +-10 +10 +-11 +12 +-11 +9 +-11 +11 +-11 +9 +-9 +10 +-8 +11 +-11 +13 +-8 +11 +-10 +11 +-10 +11 +-9 +9 +-11 +14 +8 +-16 +10 +-12 +11 +-11 +7 +-10 +9 +-12 +10 +-11 +10 +-10 +9 +-10 +11 +-10 +10 +-11 +10 +-9 +9 +-9 +11 +-9 +11 +-9 +12 +-9 +12 +-10 +11 +-9 +10 +-9 +10 +-8 +10 +-10 +11 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +12 +-10 +10 +-11 +10 +-10 +11 +-9 +9 +-11 +-9 +13 +-9 +11 +-9 +10 +-8 +10 +-8 +10 +-9 +9 +-10 +10 +-9 +10 +-10 +10 +-9 +9 +-9 +10 +-10 +10 +-9 +12 +-9 +12 +-8 +10 +-9 +12 +-8 +13 +-7 +10 +-10 +11 +-8 +10 +-9 +11 +-8 +12 +-9 +11 +-10 +11 +-9 +10 +-10 +10 +-11 +10 +-12 +10 +-11 +9 +-11 +10 +-11 +10 +-11 +10 +-10 +10 +-11 +8 +-10 +9 +-9 +11 +-10 +11 +-9 +10 +-10 +11 +-10 +11 +-9 +10 +-11 +10 +-12 +10 +-11 +10 +-10 +9 +-12 +10 +-11 +9 +-10 +10 +-10 +10 +-10 +11 +-9 +12 +-9 +12 +-10 +11 +-10 +11 +-10 +11 +-8 +8 +-9 +11 +-9 +10 +-9 +12 +-8 +11 +-10 +10 +-9 +10 +-11 +12 +-11 +10 +-9 +10 +-11 +10 +-10 +10 +-10 +9 +-11 +10 +-10 +10 +-10 +10 +-11 +11 +-11 +10 +-9 +7 +-10 +10 +-9 +11 +-10 +10 +-10 +12 +-10 +10 +-8 +11 +-8 +12 +-9 +11 +-11 +13 +-10 +10 +-9 +11 +-9 +12 +-11 +11 +-9 +10 +-10 +10 +-10 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +11 +-11 +11 +-10 +16 +10 +-15 +10 +-11 +9 +-12 +10 +-10 +8 +-11 +9 +-11 +10 +-12 +9 +-10 +10 +-11 +10 +-10 +9 +-10 +9 +-9 +9 +-9 +10 +-9 +10 +-9 +9 +-10 +10 +-11 +10 +-10 +10 +-9 +12 +-8 +9 +-8 +9 +-9 +12 +-10 +11 +-9 +10 +-9 +9 +-8 +10 +-9 +10 +-9 +10 +-10 +10 +-9 +10 +-10 +10 +-12 +-9 +11 +-9 +11 +-10 +11 +-12 +8 +-11 +11 +-10 +10 +-9 +9 +-10 +12 +-9 +10 +-10 +11 +-11 +11 +-9 +12 +-8 +11 +-10 +10 +-8 +12 +-11 +10 +-10 +10 +-10 +10 +-11 +11 +-10 +10 +-11 +13 +-10 +12 +-9 +10 +-9 +10 +-9 +11 +-11 +12 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +11 +-9 +11 +-11 +11 +-9 +10 +-10 +10 +-11 +10 +-9 +9 +-11 +10 +-11 +9 +-11 +11 +-11 +10 +-9 +11 +-10 +13 +-10 +11 +-9 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +11 +-11 +11 +-9 +9 +-12 +12 +-10 +11 +-9 +10 +-10 +10 +-10 +12 +-9 +11 +-10 +11 +-9 +11 +-10 +12 +-10 +11 +-9 +10 +-10 +10 +-10 +9 +-11 +11 +-9 +11 +-9 +11 +-10 +11 +-8 +11 +-10 +10 +-10 +11 +-9 +9 +-10 +10 +-9 +12 +-11 +11 +-10 +11 +-9 +12 +-11 +11 +-11 +11 +-10 +15 +10 +-16 +10 +-11 +10 +-10 +12 +-11 +8 +-10 +9 +-11 +9 +-10 +9 +-12 +9 +-10 +8 +-12 +9 +-10 +9 +-11 +10 +-10 +8 +-11 +10 +-10 +8 +-10 +9 +-11 +10 +-9 +8 +-9 +10 +-10 +10 +-9 +10 +-9 +11 +-7 +8 +-9 +11 +-8 +10 +-11 +11 +-10 +10 +-9 +11 +-9 +10 +-10 +9 +-10 +8 +-13 +-9 +13 +-7 +8 +-10 +9 +-11 +12 +-8 +11 +-9 +10 +-10 +10 +-9 +11 +-9 +11 +-9 +12 +-10 +9 +-8 +11 +-10 +13 +-9 +11 +-9 +9 +-9 +14 +10 +-15 +11 +-10 +9 +-10 +9 +-11 +9 +-10 +9 +-10 +9 +-11 +9 +-10 +9 +-9 +9 +-10 +10 +-9 +11 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-14 +-9 +14 +-9 +10 +-8 +8 +-11 +11 +-8 +9 +-8 +10 +-9 +10 +-8 +10 +-9 +12 +-10 +11 +-9 +12 +-11 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-9 +10 +-8 +12 +-11 +12 +-10 +11 +-11 +10 +-8 +10 +-11 +13 +-11 +10 +-11 +11 +-9 +10 +-9 +9 +-11 +11 +-10 +9 +-10 +9 +-10 +10 +-9 +10 +-11 +11 +-11 +11 +-11 +10 +-9 +9 +-11 +11 +-11 +11 +-11 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +14 +-10 +10 +-10 +10 +-11 +12 +-10 +11 +-10 +10 +-10 +12 +-10 +13 +-10 +11 +-9 +8 +-9 +11 +-9 +11 +-10 +10 +-9 +11 +-9 +9 +-9 +10 +-12 +11 +-9 +10 +-9 +12 +-9 +12 +-9 +14 +-10 +10 +-9 +12 +-10 +10 +-9 +10 +-11 +10 +-11 +11 +-11 +10 +-11 +9 +-9 +10 +-11 +10 +-11 +10 +-10 +11 +-11 +11 +-10 +10 +-11 +11 +-10 +11 +-9 +10 +-11 +11 +-9 +9 +-10 +10 +-11 +9 +-9 +10 +-11 +12 +-10 +10 +-10 +12 +-9 +8 +-9 +10 +-12 +12 +-10 +12 +-9 +11 +-10 +12 +-10 +10 +-10 +11 +-10 +11 +-9 +9 +-10 +10 +-10 +10 +-9 +10 +-11 +11 +-9 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +12 +-10 +12 +-10 +10 +-10 +10 +-10 +9 +-11 +12 +-9 +11 +-10 +11 +-9 +11 +-9 +10 +-11 +11 +-10 +10 +-12 +11 +-10 +9 +-10 +11 +-9 +10 +-9 +9 +-11 +10 +-11 +10 +-9 +10 +-9 +11 +-11 +10 +-9 +10 +-11 +10 +-9 +10 +-10 +12 +-9 +11 +-10 +11 +-9 +12 +-10 +10 +-11 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-11 +10 +-9 +10 +-11 +10 +-11 +8 +-10 +11 +-11 +12 +-11 +11 +-9 +9 +-10 +11 +-10 +11 +-10 +11 +-10 +11 +-10 +12 +-11 +10 +-10 +11 +-9 +11 +-9 +11 +-8 +10 +-11 +13 +-9 +11 +-9 +11 +-10 +10 +-9 +9 +-10 +11 +-11 +12 +-9 +10 +-11 +11 +-10 +10 +-10 +10 +-9 +10 +-8 +9 +-12 +12 +-10 +9 +-10 +9 +-10 +10 +-9 +10 +-11 +11 +-10 +10 +-9 +10 +-9 +13 +-11 +11 +-10 +11 +-9 +11 +-10 +10 +-9 +12 +-12 +11 +-10 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +10 +-12 +10 +-11 +11 +-9 +10 +-9 +10 +-10 +11 +-10 +10 +-10 +12 +-11 +12 +-9 +10 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +8 +-10 +11 +-10 +9 +-11 +10 +-10 +11 +-11 +10 +-9 +12 +-10 +9 +-12 +11 +-9 +10 +-10 +12 +-10 +11 +-10 +11 +-10 +11 +-11 +10 +-11 +10 +-10 +12 +-10 +12 +-9 +11 +-9 +11 +-11 +11 +-10 +10 +-10 +9 +-9 +8 +-11 +11 +-11 +10 +-10 +9 +-11 +11 +-10 +10 +-10 +9 +-11 +10 +-9 +10 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-9 +9 +-9 +11 +-11 +11 +-9 +11 +-11 +11 +-11 +10 +-10 +10 +-10 +11 +-11 +11 +-11 +9 +-11 +10 +-9 +9 +-11 +13 +-10 +8 +-9 +10 +-10 +11 +-9 +11 +-9 +10 +-10 +12 +-9 +12 +-9 +11 +-10 +11 +-11 +10 +-9 +11 +-10 +9 +-10 +11 +-10 +9 +-10 +10 +-10 +12 +-11 +12 +-10 +10 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-11 +11 +-10 +10 +-11 +9 +-10 +11 +-11 +13 +-9 +9 +-9 +11 +-10 +11 +-10 +9 +-12 +10 +-8 +11 +-11 +11 +-9 +10 +-9 +10 +-10 +11 +-9 +10 +-10 +10 +-11 +11 +-11 +11 +-9 +10 +-11 +11 +-11 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +9 +-11 +11 +-10 +12 +-10 +11 +-10 +12 +-8 +11 +-10 +10 +-10 +12 +-11 +12 +-10 +11 +-9 +9 +-10 +10 +-10 +12 +-11 +11 +-9 +11 +-11 +11 +-10 +11 +-9 +11 +-11 +11 +-10 +10 +-11 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +10 +-11 +10 +-10 +9 +-12 +11 +-11 +11 +-11 +10 +-11 +11 +-11 +12 +-9 +8 +-10 +10 +-8 +9 +-10 +10 +-11 +12 +-10 +9 +-11 +11 +-10 +10 +-9 +11 +-8 +11 +-10 +11 +-9 +10 +-10 +11 +-8 +12 +-9 +12 +-8 +10 +-11 +13 +-9 +12 +-9 +11 +-10 +11 +-10 +10 +-10 +14 +-10 +10 +-10 +10 +-9 +11 +-10 +10 +-10 +10 +-11 +11 +-9 +8 +-11 +10 +-10 +10 +-9 +11 +-10 +10 +-9 +12 +-11 +10 +-11 +10 +-11 +11 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +11 +-10 +9 +-9 +9 +-11 +11 +-11 +11 +-9 +11 +-11 +12 +-9 +10 +-8 +11 +-8 +8 +-11 +9 +-10 +11 +-10 +11 +-10 +12 +-11 +11 +-8 +11 +-9 +8 +-10 +11 +-9 +8 +-12 +12 +-9 +10 +-11 +10 +-10 +11 +-10 +9 +-10 +9 +-11 +10 +-11 +10 +-9 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +12 +-10 +11 +-9 +11 +-9 +12 +-10 +11 +-9 +9 +-10 +10 +-9 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +11 +-9 +11 +-10 +12 +-10 +11 +-10 +9 +-11 +9 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-10 +9 +-11 +10 +-10 +11 +-10 +11 +-11 +13 +-11 +11 +-10 +9 +-10 +9 +-10 +9 +-10 +9 +-10 +11 +-10 +9 +-9 +9 +-11 +10 +-11 +9 +-11 +10 +-10 +11 +-9 +10 +-11 +13 +-8 +11 +-10 +11 +-9 +11 +-10 +11 +-10 +12 +-10 +10 +-10 +14 +9 +-14 +10 +-11 +12 +-10 +9 +-11 +10 +-11 +9 +-11 +8 +-9 +10 +-10 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +10 +-10 +9 +-10 +10 +-9 +9 +-8 +9 +-11 +12 +-9 +9 +-9 +10 +-8 +8 +-10 +9 +-8 +9 +-9 +9 +-10 +11 +-9 +9 +-10 +9 +-10 +9 +-10 +9 +-10 +10 +-9 +10 +-10 +11 +-8 +11 +-9 +9 +-9 +10 +-10 +9 +-10 +10 +-9 +10 +-9 +9 +-9 +10 +-11 +11 +-10 +9 +-10 +10 +-9 +10 +-10 +11 +-8 +10 +-9 +10 +-8 +9 +-13 +-6 +15 +-7 +11 +-11 +12 +-9 +10 +-10 +12 +-9 +10 +-9 +10 +-10 +9 +-10 +10 +-12 +9 +-11 +9 +-10 +10 +-11 +11 +-10 +9 +-9 +10 +-10 +11 +-10 +10 +-11 +10 +-10 +8 +-9 +9 +-11 +11 +-9 +11 +-9 +11 +-9 +10 +-9 +11 +-9 +12 +-9 +11 +-9 +11 +-9 +12 +-8 +12 +-11 +11 +-9 +11 +-9 +10 +-9 +10 +-10 +11 +-10 +12 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +9 +-9 +10 +-10 +12 +-9 +12 +-11 +10 +-11 +10 +-10 +11 +-10 +15 +9 +-16 +10 +-11 +10 +-10 +9 +-10 +9 +-12 +9 +-8 +9 +-11 +12 +-11 +10 +-11 +9 +-9 +9 +-10 +11 +-9 +10 +-11 +10 +-9 +11 +-8 +10 +-10 +11 +-9 +11 +-9 +9 +-9 +10 +-9 +10 +-9 +11 +-10 +9 +-9 +8 +-10 +10 +-11 +8 +-10 +10 +-10 +9 +-11 +9 +-9 +9 +-10 +10 +-9 +11 +-12 +-8 +13 +-9 +9 +-9 +9 +-10 +12 +-9 +10 +-9 +11 +-9 +10 +-9 +12 +-9 +10 +-10 +10 +-10 +10 +-9 +12 +-9 +11 +-9 +10 +-10 +10 +-9 +9 +-10 +12 +-11 +10 +-10 +11 +-9 +9 +-10 +11 +-10 +11 +-9 +10 +-11 +10 +-11 +10 +-10 +11 +-11 +13 +-11 +11 +-8 +11 +-9 +11 +-9 +10 +-10 +12 +-9 +12 +-8 +7 +-10 +11 +-10 +10 +-10 +11 +-11 +11 +-10 +11 +-8 +10 +-9 +12 +-9 +11 +-9 +10 +-10 +10 +-11 +11 +-9 +10 +-9 +11 +-10 +10 +-9 +14 +-11 +10 +-10 +10 +-9 +10 +-11 +11 +-10 +10 +-11 +10 +-11 +11 +-9 +11 +-9 +10 +-11 +11 +-8 +11 +-10 +11 +-11 +9 +-10 +10 +-10 +14 +9 +-16 +11 +-11 +10 +-9 +7 +-10 +9 +-8 +9 +-11 +9 +-11 +11 +-10 +8 +-10 +10 +-10 +9 +-11 +11 +-9 +9 +-11 +9 +-11 +9 +-9 +10 +-13 +-9 +13 +-8 +10 +-10 +11 +-9 +11 +-8 +10 +-9 +9 +-9 +11 +-10 +11 +-9 +10 +-7 +10 +-10 +11 +-9 +11 +-10 +10 +-10 +10 +-10 +12 +-9 +12 +-9 +12 +-9 +12 +-8 +11 +-10 +11 +-10 +10 +-11 +10 +-9 +10 +-11 +10 +-10 +10 +-11 +11 +-9 +11 +-11 +9 +-10 +10 +-11 +10 +-12 +10 +-10 +9 +-10 +10 +-9 +11 +-10 +8 +-10 +10 +-10 +10 +-11 +10 +-11 +11 +-9 +8 +-11 +12 +-11 +12 +-9 +10 +-9 +10 +-11 +11 +-9 +11 +-11 +13 +-8 +14 +9 +-15 +10 +-11 +9 +-11 +9 +-10 +9 +-11 +9 +-11 +9 +-10 +8 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +9 +-11 +11 +-9 +8 +-10 +9 +-10 +9 +-9 +9 +-8 +11 +-9 +8 +-10 +11 +-12 +9 +-11 +10 +-9 +10 +-10 +9 +-9 +11 +-9 +11 +-8 +9 +-10 +9 +-9 +10 +-12 +-8 +14 +-8 +10 +-8 +11 +-9 +11 +-9 +10 +-8 +11 +-8 +11 +-9 +11 +-9 +10 +-10 +10 +-11 +9 +-9 +11 +-9 +12 +-9 +10 +-10 +11 +-8 +9 +-9 +11 +-9 +9 +-8 +11 +-9 +10 +-10 +10 +-11 +10 +-9 +10 +-9 +10 +-10 +12 +-9 +11 +-9 +11 +-9 +10 +-9 +11 +-10 +9 +-11 +10 +-10 +11 +-11 +10 +-10 +10 +-9 +11 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-10 +9 +-10 +11 +-9 +11 +-10 +12 +-9 +10 +-10 +11 +-9 +11 +-9 +12 +-9 +12 +-10 +12 +-9 +10 +-10 +11 +-10 +10 +-10 +12 +-10 +10 +-11 +9 +-12 +10 +-9 +10 +-11 +11 +-10 +8 +-10 +10 +-10 +11 +-11 +10 +-9 +9 +-11 +11 +-9 +9 +-9 +11 +-10 +10 +-10 +10 +-11 +11 +-9 +9 +-10 +10 +-8 +10 +-10 +11 +-10 +11 +-8 +10 +-11 +11 +-11 +11 +-9 +13 +-9 +11 +-9 +11 +-9 +12 +-10 +12 +-9 +11 +-10 +10 +-10 +9 +-9 +12 +-9 +9 +-10 +11 +-10 +10 +-11 +11 +-11 +10 +-10 +11 +-11 +10 +-9 +11 +-10 +10 +-11 +14 +10 +-16 +10 +-10 +10 +-11 +12 +-10 +11 +-9 +9 +-10 +9 +-10 +9 +-10 +9 +-9 +8 +-11 +9 +-8 +7 +-11 +9 +-11 +9 +-11 +9 +-9 +9 +-11 +8 +-11 +11 +-10 +10 +-8 +9 +-9 +10 +-9 +10 +-9 +10 +-10 +10 +-9 +10 +-11 +9 +-9 +9 +-10 +10 +-9 +9 +-9 +11 +-10 +10 +-11 +10 +-12 +-9 +12 +-7 +10 +-10 +13 +-10 +9 +-9 +11 +-8 +11 +-9 +12 +-9 +10 +-10 +10 +-10 +11 +-10 +9 +-10 +10 +-9 +12 +-9 +11 +-9 +11 +-9 +12 +-9 +9 +-10 +11 +-10 +10 +-11 +10 +-10 +11 +-9 +11 +-9 +10 +-9 +12 +-10 +11 +-10 +12 +-9 +11 +-11 +10 +-10 +10 +-11 +11 +-10 +10 +-9 +8 +-10 +11 +-11 +10 +-9 +9 +-11 +9 +-11 +9 +-11 +10 +-9 +9 +-10 +9 +-10 +10 +-11 +12 +-10 +9 +-11 +10 +-10 +12 +-9 +10 +-11 +11 +-9 +12 +-9 +9 +-10 +12 +-10 +10 +-10 +10 +-10 +10 +-11 +8 +-10 +10 +-9 +10 +-11 +9 +-9 +11 +-10 +9 +-11 +11 +-10 +10 +-10 +9 +-10 +11 +-11 +10 +-12 +11 +-9 +13 +-10 +12 +-10 +11 +-10 +13 +-11 +9 +-10 +12 +-10 +10 +-11 +11 +-10 +10 +-10 +9 +-10 +11 +-9 +11 +-11 +11 +-10 +9 +-10 +14 +9 +-15 +11 +-12 +9 +-8 +8 +-10 +9 +-7 +10 +-9 +10 +-9 +9 +-10 +10 +-10 +10 +-9 +9 +-10 +10 +-11 +11 +-10 +9 +-10 +9 +-10 +9 +-10 +9 +-9 +8 +-8 +10 +-10 +10 +-9 +11 +-9 +10 +-11 +10 +-10 +10 +-8 +9 +-11 +11 +-9 +9 +-8 +9 +-9 +10 +-9 +9 +-8 +9 +-10 +11 +-12 +-8 +14 +-6 +9 +-11 +11 +-10 +10 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-7 +9 +-9 +12 +-11 +10 +-8 +11 +-9 +11 +-9 +11 +-9 +10 +-9 +14 +9 +-15 +9 +-11 +10 +-12 +9 +-8 +10 +-10 +10 +-10 +9 +-10 +9 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +12 +-9 +11 +-8 +7 +-12 +-7 +13 +-7 +10 +-9 +12 +-8 +10 +-9 +11 +-9 +8 +-10 +11 +-9 +10 +-9 +11 +-9 +10 +-10 +10 +-10 +11 +-10 +11 +-12 +11 +-10 +10 +-11 +10 +-11 +12 +-10 +12 +-9 +9 +-11 +11 +-10 +12 +-9 +10 +-10 +9 +-10 +11 +-11 +11 +-10 +9 +-10 +9 +-9 +10 +-9 +11 +-10 +11 +-10 +9 +-10 +9 +-10 +12 +-10 +10 +-9 +10 +-9 +11 +-10 +10 +-11 +11 +-10 +10 +-10 +12 +-10 +9 +-10 +10 +-10 +10 +-10 +11 +-11 +11 +-9 +11 +-10 +12 +-11 +11 +-11 +11 +-9 +8 +-9 +10 +-9 +11 +-11 +11 +-9 +10 +-10 +10 +-10 +10 +-11 +11 +-11 +10 +-10 +12 +-10 +11 +-9 +9 +-12 +12 +-9 +10 +-10 +11 +-11 +9 +-10 +12 +-10 +12 +-10 +12 +-9 +10 +-10 +11 +-11 +9 +-10 +9 +-10 +12 +-10 +10 +-11 +11 +-9 +10 +-10 +8 +-11 +11 +-11 +11 +-10 +10 +-8 +11 +-11 +12 +-10 +11 +-10 +10 +-11 +13 +-9 +9 +-10 +12 +-11 +12 +-11 +11 +-9 +10 +-9 +11 +-9 +10 +-9 +13 +-11 +11 +-10 +12 +-8 +11 +-10 +12 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-11 +10 +-11 +11 +-10 +9 +-11 +12 +-10 +10 +-9 +11 +-9 +9 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +8 +-10 +10 +-9 +10 +-9 +12 +-9 +10 +-9 +10 +-9 +10 +-10 +10 +-11 +11 +-9 +10 +-10 +11 +-10 +12 +-9 +10 +-10 +12 +-9 +11 +-10 +10 +-9 +10 +-11 +10 +-11 +10 +-10 +10 +-10 +11 +-11 +8 +-10 +10 +-11 +12 +-11 +9 +-10 +11 +-11 +10 +-11 +8 +-11 +10 +-9 +11 +-12 +10 +-11 +12 +-11 +11 +-9 +11 +-9 +11 +-12 +12 +-11 +10 +-10 +10 +-10 +10 +-10 +9 +-9 +8 +-12 +12 +-10 +11 +-11 +10 +-11 +11 +-11 +13 +-9 +9 +-10 +10 +-11 +11 +-10 +11 +-10 +9 +-11 +11 +-11 +12 +-10 +10 +-10 +9 +-10 +11 +-9 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +9 +-10 +11 +-10 +10 +-11 +11 +-10 +11 +-9 +10 +-9 +9 +-10 +11 +-11 +10 +-9 +9 +-10 +12 +-9 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +11 +-10 +12 +-10 +11 +-10 +9 +-9 +10 +-10 +10 +-9 +10 +-8 +11 +-9 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +9 +-10 +9 +-11 +10 +-10 +9 +-11 +10 +-11 +9 +-10 +10 +-11 +11 +-11 +10 +-9 +12 +-11 +13 +-8 +11 +-8 +11 +-9 +11 +-8 +11 +-9 +12 +-10 +10 +-8 +12 +-9 +9 +-11 +12 +-8 +9 +-10 +10 +-10 +10 +-9 +12 +-11 +11 +-10 +10 +-10 +11 +-10 +10 +-11 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-11 +11 +-11 +9 +-10 +10 +-10 +9 +-11 +11 +-8 +10 +-10 +10 +-10 +11 +-10 +11 +-11 +12 +-11 +10 +-12 +11 +-11 +10 +-11 +10 +-11 +10 +-10 +10 +-11 +11 +-10 +11 +-8 +10 +-10 +10 +-11 +10 +-9 +9 +-10 +10 +-10 +10 +-11 +11 +-10 +10 +-9 +11 +-11 +10 +-9 +9 +-9 +10 +-9 +11 +-9 +10 +-10 +11 +-11 +11 +-10 +10 +-10 +9 +-11 +11 +-10 +12 +-9 +11 +-10 +11 +-9 +11 +-9 +9 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +9 +-9 +10 +-10 +10 +-10 +11 +-11 +11 +-9 +10 +-10 +10 +-11 +10 +-9 +11 +-11 +10 +-10 +11 +-11 +12 +-11 +10 +-11 +11 +-9 +10 +-9 +10 +-10 +12 +-8 +10 +-11 +11 +-9 +11 +-11 +9 +-9 +12 +-10 +11 +-10 +10 +-11 +11 +-11 +10 +-10 +11 +-10 +12 +-9 +9 +-9 +11 +-9 +10 +-9 +11 +-10 +11 +-10 +11 +-9 +10 +-10 +12 +-8 +10 +-10 +10 +-10 +10 +-9 +9 +-11 +10 +-11 +10 +-10 +12 +-9 +10 +-9 +11 +-11 +9 +-9 +11 +-10 +10 +-11 +12 +-10 +10 +-11 +13 +-10 +10 +-9 +11 +-9 +11 +-10 +10 +-10 +13 +-10 +11 +-8 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +9 +-9 +10 +-11 +8 +-10 +10 +-11 +10 +-10 +11 +-10 +9 +-11 +10 +-11 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +9 +-9 +10 +-10 +12 +-10 +11 +-10 +9 +-10 +11 +-10 +9 +-9 +10 +-10 +11 +-11 +10 +-10 +11 +-12 +12 +-10 +12 +-12 +10 +-10 +11 +-9 +9 +-10 +11 +-9 +10 +-10 +11 +-9 +10 +-9 +11 +-9 +11 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-12 +11 +-10 +10 +-10 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +12 +-9 +11 +-10 +10 +-9 +11 +-12 +11 +-9 +10 +-9 +9 +-9 +11 +-10 +10 +-10 +10 +-9 +10 +-10 +11 +-10 +11 +-9 +9 +-11 +10 +-12 +11 +-11 +11 +-11 +10 +-11 +10 +-11 +9 +-10 +11 +-11 +10 +-10 +12 +-11 +11 +-12 +11 +-10 +10 +-10 +9 +-8 +11 +-9 +11 +-11 +11 +-10 +12 +-10 +10 +-9 +10 +-11 +12 +-10 +11 +-10 +13 +-11 +10 +-8 +12 +-10 +12 +-9 +11 +-7 +10 +-9 +12 +-10 +11 +-10 +11 +-12 +11 +-10 +11 +-10 +10 +-10 +8 +-10 +10 +-11 +10 +-11 +10 +-10 +8 +-10 +9 +-11 +11 +-10 +11 +-12 +11 +-12 +10 +-10 +11 +-9 +13 +-10 +10 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +12 +-8 +10 +-10 +12 +-10 +9 +-10 +12 +-10 +10 +-9 +11 +-11 +10 +-9 +13 +-9 +9 +-11 +11 +-10 +10 +-13 +14 +9 +-14 +11 +-11 +8 +-9 +12 +-12 +8 +-11 +8 +-12 +9 +-9 +9 +-11 +10 +-11 +10 +-11 +9 +-10 +10 +-9 +7 +-9 +11 +-8 +11 +-9 +12 +-10 +11 +-10 +9 +-9 +9 +-9 +9 +-9 +10 +-8 +9 +-11 +11 +-8 +12 +-9 +10 +-10 +11 +-9 +11 +-10 +10 +-8 +9 +-7 +11 +-10 +9 +-9 +9 +-9 +9 +-9 +10 +-9 +10 +-10 +11 +-8 +9 +-10 +11 +-8 +12 +-9 +9 +-10 +10 +-9 +9 +-10 +12 +-10 +9 +-8 +10 +-10 +11 +-9 +10 +-11 +10 +-11 +-9 +15 +-10 +10 +-9 +12 +-9 +9 +-10 +10 +-8 +11 +-10 +12 +-9 +9 +-11 +12 +-9 +10 +-9 +10 +-9 +12 +-11 +10 +-9 +9 +-10 +12 +-10 +12 +-10 +9 +-10 +10 +-10 +12 +-11 +11 +-11 +11 +-11 +10 +-11 +9 +-11 +10 +-10 +10 +-9 +10 +-11 +10 +-9 +11 +-10 +12 +-11 +10 +-11 +10 +-10 +10 +-11 +9 +-11 +10 +-9 +11 +-9 +10 +-10 +10 +-9 +11 +-9 +11 +-10 +10 +-9 +11 +-8 +11 +-10 +11 +-9 +10 +-9 +10 +-8 +12 +-11 +10 +-9 +14 +10 +-15 +11 +-10 +11 +-10 +10 +-10 +10 +-9 +9 +-11 +12 +-10 +10 +-7 +9 +-12 +13 +-10 +9 +-9 +10 +-11 +10 +-11 +9 +-9 +8 +-11 +9 +-11 +10 +-11 +9 +-10 +9 +-10 +8 +-10 +9 +-11 +9 +-7 +8 +-10 +10 +-10 +10 +-9 +9 +-9 +10 +-11 +10 +-9 +11 +-10 +11 +-10 +9 +-8 +9 +-12 +-10 +14 +-8 +11 +-9 +10 +-9 +10 +-8 +10 +-9 +12 +-10 +10 +-9 +11 +-10 +12 +-8 +11 +-9 +10 +-8 +11 +-11 +10 +-9 +12 +-8 +10 +-9 +11 +-11 +11 +-11 +9 +-9 +9 +-10 +9 +-11 +10 +-9 +9 +-11 +12 +-9 +12 +-10 +12 +-7 +10 +-9 +12 +-9 +9 +-10 +10 +-10 +10 +-11 +11 +-12 +12 +-10 +10 +-10 +10 +-10 +11 +-11 +9 +-10 +10 +-9 +9 +-9 +11 +-10 +9 +-11 +11 +-12 +10 +-10 +11 +-9 +11 +-9 +13 +-11 +10 +-8 +11 +-10 +10 +-10 +11 +-10 +12 +-10 +10 +-9 +11 +-11 +11 +-9 +11 +-11 +11 +-9 +11 +-10 +11 +-10 +11 +-9 +10 +-10 +12 +-10 +10 +-10 +10 +-8 +9 +-10 +14 +8 +-15 +12 +-10 +9 +-11 +11 +-11 +8 +-11 +10 +-9 +9 +-10 +10 +-9 +9 +-10 +11 +-10 +10 +-8 +8 +-9 +9 +-10 +11 +-10 +10 +-9 +12 +-13 +-9 +15 +-8 +11 +-9 +9 +-10 +11 +-9 +9 +-10 +10 +-10 +10 +-9 +11 +-10 +10 +-11 +9 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-11 +11 +-11 +11 +-9 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-11 +13 +-9 +9 +-9 +10 +-10 +10 +-8 +9 +-10 +11 +-9 +11 +-9 +10 +-10 +9 +-9 +11 +-10 +11 +-10 +11 +-10 +9 +-11 +11 +-11 +9 +-9 +10 +-9 +11 +-10 +11 +-10 +11 +-10 +12 +-12 +10 +-10 +12 +-8 +11 +-8 +10 +-11 +12 +-9 +10 +-9 +12 +9 +-15 +11 +-12 +10 +-10 +11 +-10 +10 +-10 +9 +-10 +9 +-10 +10 +-11 +9 +-9 +9 +-10 +10 +-10 +11 +-12 +11 +-10 +8 +-10 +10 +-9 +9 +-10 +8 +-8 +10 +-9 +10 +-9 +10 +-9 +9 +-8 +10 +-11 +11 +-8 +7 +-7 +10 +-8 +11 +-10 +11 +-7 +9 +-9 +10 +-8 +11 +-9 +9 +-10 +11 +-13 +-8 +14 +-9 +10 +-9 +10 +-10 +11 +-10 +10 +-9 +9 +-10 +11 +-10 +9 +-9 +9 +-9 +9 +-10 +9 +-10 +10 +-7 +9 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-11 +11 +-9 +11 +-11 +10 +-10 +10 +-11 +12 +-10 +8 +-9 +11 +-11 +12 +-9 +12 +-9 +9 +-9 +11 +-9 +10 +-11 +12 +-10 +10 +-10 +10 +-9 +11 +-10 +12 +-10 +11 +-10 +9 +-9 +12 +-8 +10 +-10 +11 +-9 +11 +-9 +10 +-8 +11 +-10 +11 +-10 +10 +-9 +11 +-11 +9 +-11 +10 +-9 +10 +-11 +9 +-11 +11 +-10 +10 +-11 +9 +-11 +10 +-11 +11 +-11 +11 +-11 +10 +-11 +10 +-11 +11 +-10 +10 +-8 +9 +-11 +10 +-9 +10 +-10 +10 +-10 +9 +-9 +10 +-10 +10 +-10 +10 +-9 +11 +-10 +11 +-10 +11 +-10 +10 +-11 +12 +-11 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +11 +-10 +12 +-9 +13 +-11 +11 +-10 +11 +-10 +10 +-10 +10 +-11 +10 +-9 +9 +-11 +10 +-10 +10 +-11 +10 +-10 +10 +-9 +10 +-10 +11 +-10 +10 +-9 +10 +-9 +11 +-10 +10 +-9 +14 +9 +-15 +10 +-12 +11 +-9 +9 +-11 +11 +-9 +10 +-10 +10 +-10 +10 +-10 +11 +-9 +10 +-11 +10 +-9 +11 +-10 +9 +-10 +10 +-9 +9 +-10 +10 +-9 +10 +-10 +10 +-11 +10 +-10 +11 +-9 +9 +-10 +11 +-9 +9 +-9 +8 +-10 +11 +-10 +9 +-11 +9 +-10 +9 +-12 +9 +-9 +9 +-9 +10 +-10 +11 +-12 +-8 +13 +-9 +11 +-10 +9 +-9 +11 +-9 +10 +-9 +10 +-8 +9 +-10 +12 +-9 +11 +-9 +9 +-9 +11 +-9 +12 +-10 +12 +-10 +11 +-10 +11 +-9 +11 +-10 +12 +-9 +10 +-11 +11 +-8 +9 +-9 +11 +-9 +11 +-10 +10 +-9 +10 +-10 +10 +-11 +12 +-10 +11 +-11 +10 +-10 +10 +-11 +10 +-12 +10 +-11 +9 +-11 +11 +-9 +10 +-9 +11 +-10 +10 +-10 +10 +-9 +8 +-10 +10 +-11 +9 +-10 +10 +-10 +11 +-11 +10 +-10 +10 +-11 +11 +-12 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-9 +12 +-9 +12 +-9 +12 +-8 +9 +-9 +13 +-9 +12 +-8 +9 +-10 +11 +-10 +10 +-8 +9 +-9 +9 +-9 +12 +-10 +10 +-10 +10 +-11 +10 +-9 +11 +-12 +11 +-11 +9 +-11 +10 +-11 +9 +-11 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-11 +10 +-12 +12 +-11 +11 +-10 +12 +-10 +16 +7 +-15 +11 +-11 +11 +-10 +10 +-10 +10 +-10 +9 +-11 +9 +-10 +11 +-11 +9 +-8 +8 +-10 +9 +-10 +10 +-9 +9 +-9 +9 +-11 +10 +-11 +8 +-10 +9 +-10 +9 +-10 +9 +-9 +9 +-10 +8 +-11 +10 +-10 +9 +-10 +9 +-9 +11 +-9 +8 +-9 +10 +-7 +11 +-8 +10 +-10 +11 +-9 +10 +-9 +9 +-12 +-8 +13 +-8 +11 +-9 +11 +-8 +11 +-9 +12 +-9 +12 +-9 +13 +-10 +11 +-9 +10 +-8 +11 +-10 +10 +-9 +11 +-11 +10 +-11 +10 +-10 +9 +-11 +13 +10 +-15 +10 +-11 +9 +-10 +8 +-10 +9 +-10 +8 +-10 +9 +-9 +8 +-10 +10 +-11 +10 +-10 +8 +-10 +9 +-10 +10 +-10 +8 +-9 +10 +-9 +11 +-12 +-9 +16 +-7 +10 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-9 +11 +-8 +12 +-9 +13 +-8 +12 +-9 +11 +-9 +11 +-8 +11 +-8 +12 +-11 +11 +-9 +10 +-10 +10 +-9 +9 +-11 +12 +-10 +8 +-10 +9 +-10 +10 +-10 +10 +-10 +8 +-8 +9 +-10 +10 +-10 +11 +-9 +10 +-9 +11 +-10 +12 +-8 +9 +-8 +10 +-11 +10 +-9 +9 +-9 +10 +-11 +12 +-9 +12 +-10 +12 +-10 +12 +-10 +12 +-10 +12 +-9 +10 +-11 +11 +-11 +9 +-10 +10 +-11 +10 +-11 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-9 +13 +-11 +10 +-11 +10 +-11 +11 +-11 +9 +-10 +11 +-9 +9 +-11 +12 +-9 +11 +-9 +12 +-12 +11 +-10 +11 +-10 +12 +-10 +11 +-8 +9 +-10 +11 +-9 +11 +-9 +12 +-9 +12 +-9 +10 +-9 +10 +-10 +13 +-11 +10 +-10 +10 +-10 +11 +-11 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +9 +-11 +10 +-11 +9 +-11 +10 +-10 +10 +-11 +11 +-11 +9 +-11 +11 +-11 +10 +-11 +9 +-10 +10 +-10 +10 +-10 +9 +-9 +11 +-11 +12 +-9 +11 +-10 +9 +-10 +11 +-11 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +11 +-10 +10 +-10 +8 +-10 +10 +-9 +11 +-9 +12 +-11 +12 +-11 +11 +-11 +10 +-11 +10 +-11 +11 +-10 +11 +-9 +11 +-11 +10 +-10 +9 +-11 +9 +-11 +11 +-11 +10 +-12 +10 +-12 +9 +-10 +11 +-11 +11 +-9 +11 +-9 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-11 +11 +-9 +10 +-10 +11 +-10 +11 +-9 +11 +-9 +10 +-11 +10 +-10 +10 +-9 +11 +-10 +10 +-10 +11 +-11 +10 +-11 +10 +-10 +11 +-10 +9 +-10 +10 +-9 +11 +-12 +9 +-9 +11 +-10 +12 +-10 +9 +-9 +12 +-9 +9 +-12 +13 +-10 +10 +-11 +11 +-9 +12 +-11 +10 +-8 +10 +-13 +10 +-9 +10 +-11 +11 +-10 +9 +-10 +12 +-8 +10 +-9 +11 +-10 +12 +-8 +12 +-8 +9 +-9 +11 +-10 +12 +-8 +10 +-8 +10 +-11 +12 +-10 +9 +-9 +9 +-10 +11 +-10 +10 +-10 +12 +-11 +10 +-11 +12 +-10 +10 +-10 +13 +-11 +9 +-10 +11 +-10 +10 +-8 +10 +-10 +11 +-10 +11 +-11 +10 +-10 +9 +-12 +11 +-12 +10 +-10 +11 +-10 +9 +-10 +10 +-10 +11 +-11 +11 +-10 +11 +-10 +12 +-10 +10 +-9 +10 +-11 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-9 +10 +-10 +11 +-9 +9 +-11 +11 +-11 +11 +-8 +8 +-10 +11 +-10 +11 +-8 +11 +-10 +11 +-9 +11 +-8 +9 +-11 +12 +-10 +10 +-10 +10 +-8 +11 +-11 +11 +-10 +10 +-9 +11 +-9 +12 +-10 +9 +-11 +11 +-11 +10 +-10 +11 +-11 +11 +-10 +9 +-11 +11 +-11 +11 +-9 +8 +-9 +10 +-10 +11 +-10 +10 +-10 +10 +-11 +12 +-10 +12 +-9 +11 +-10 +11 +-9 +11 +-11 +10 +-11 +12 +-11 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +10 +-10 +11 +-11 +10 +-9 +10 +-9 +11 +-10 +10 +-9 +11 +-9 +12 +-11 +11 +-10 +12 +-9 +10 +-9 +10 +-9 +11 +-10 +13 +-8 +8 +-11 +11 +-9 +11 +-11 +9 +-12 +11 +-9 +11 +-12 +9 +-9 +9 +-10 +11 +-11 +10 +-10 +10 +-11 +9 +-12 +12 +-11 +10 +-9 +10 +-9 +11 +-9 +10 +-10 +9 +-9 +10 +-11 +12 +-10 +10 +-9 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +12 +-11 +11 +-10 +10 +-9 +11 +-10 +10 +-8 +10 +-10 +12 +-10 +11 +-9 +11 +-10 +9 +-11 +9 +-10 +10 +-9 +9 +-11 +12 +-10 +11 +-10 +12 +-9 +11 +-8 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-10 +11 +-10 +11 +-10 +11 +-9 +11 +-11 +11 +-10 +10 +-10 +10 +-11 +11 +-12 +11 +-9 +9 +-10 +9 +-11 +12 +-10 +9 +-11 +10 +-10 +11 +-10 +10 +-12 +10 +-11 +10 +-11 +9 +-11 +10 +-14 +12 +-11 +11 +-10 +8 +-10 +12 +-11 +11 +-8 +11 +-9 +12 +-9 +12 +-10 +11 +-8 +12 +-9 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +12 +-9 +12 +-11 +10 +-11 +12 +-10 +9 +-9 +9 +-11 +10 +-11 +10 +-11 +10 +-10 +11 +-9 +9 +-11 +11 +-11 +11 +-11 +10 +-9 +11 +-9 +11 +-8 +13 +-10 +10 +-11 +11 +-11 +11 +-10 +9 +-11 +12 +-10 +10 +-10 +9 +-11 +10 +-11 +10 +-10 +8 +-11 +10 +-11 +12 +-11 +11 +-11 +12 +-9 +8 +-8 +9 +-11 +12 +-10 +12 +-9 +12 +-10 +11 +-8 +11 +-9 +11 +-9 +12 +-9 +10 +-9 +10 +-10 +11 +-8 +11 +-9 +9 +-9 +10 +-10 +11 +-11 +10 +-11 +11 +-11 +10 +-10 +11 +-10 +10 +-9 +10 +-10 +9 +-10 +10 +-9 +11 +-11 +11 +-11 +9 +-9 +10 +-10 +11 +-10 +10 +-9 +10 +-11 +10 +-10 +9 +-10 +9 +-10 +10 +-11 +10 +-9 +10 +-9 +11 +-10 +9 +-11 +12 +-9 +10 +-8 +11 +-10 +12 +-9 +11 +-8 +12 +-10 +11 +-10 +10 +-9 +14 +-11 +11 +-12 +11 +-9 +11 +-11 +10 +-9 +11 +-11 +10 +-10 +11 +-10 +11 +-10 +10 +-9 +12 +-9 +10 +-10 +11 +-10 +10 +-9 +12 +-9 +11 +-9 +10 +-9 +9 +-10 +11 +-11 +12 +-10 +11 +-9 +10 +-10 +11 +-11 +10 +-11 +10 +-8 +9 +-11 +11 +-10 +11 +-12 +10 +-11 +13 +11 +-15 +9 +-10 +8 +-10 +9 +-13 +12 +-9 +9 +-10 +10 +-11 +8 +-11 +8 +-9 +9 +-11 +9 +-9 +10 +-10 +10 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-9 +10 +-8 +9 +-12 +10 +-9 +10 +-8 +9 +-9 +11 +-10 +11 +-9 +10 +-9 +10 +-10 +9 +-9 +10 +-8 +9 +-10 +9 +-8 +10 +-8 +8 +-10 +10 +-10 +11 +-9 +10 +-8 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +9 +-8 +9 +-10 +11 +-10 +10 +-10 +8 +-9 +9 +-9 +9 +-9 +11 +-9 +10 +-12 +-8 +14 +-8 +12 +-8 +11 +-7 +12 +-9 +11 +-8 +10 +-9 +11 +-9 +10 +-9 +10 +-10 +11 +-9 +11 +-10 +9 +-9 +10 +-9 +10 +-8 +8 +-10 +10 +-10 +11 +-10 +11 +-11 +10 +-10 +11 +-11 +11 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-9 +10 +-10 +11 +-10 +11 +-10 +13 +-10 +10 +-10 +11 +-10 +10 +-11 +11 +-10 +10 +-11 +10 +-10 +9 +-10 +10 +-10 +11 +-10 +9 +-10 +10 +-11 +11 +-10 +11 +-9 +9 +-10 +10 +-11 +12 +-11 +11 +-9 +9 +-10 +14 +11 +-14 +11 +-10 +12 +-11 +11 +-10 +9 +-11 +12 +-10 +10 +-10 +9 +-11 +10 +-11 +8 +-10 +11 +-11 +10 +-11 +8 +-10 +10 +-10 +11 +-10 +8 +-9 +11 +-10 +11 +-10 +8 +-9 +10 +-9 +8 +-9 +10 +-10 +9 +-11 +9 +-10 +10 +-11 +11 +-10 +11 +-7 +10 +-9 +11 +-9 +11 +-8 +9 +-10 +11 +-13 +-7 +15 +-8 +11 +-10 +11 +-9 +9 +-9 +10 +-11 +12 +-11 +9 +-9 +8 +-9 +10 +-9 +10 +-10 +12 +-8 +10 +-9 +10 +-9 +10 +-10 +11 +-10 +11 +-8 +10 +-9 +12 +-10 +13 +-12 +12 +-9 +10 +-10 +9 +-10 +11 +-11 +11 +-9 +10 +-11 +11 +-10 +11 +-9 +10 +-9 +11 +-10 +11 +-10 +10 +-11 +9 +-10 +11 +-12 +11 +-10 +9 +-11 +11 +-11 +11 +-9 +12 +-9 +12 +-9 +10 +-9 +10 +-9 +11 +-11 +10 +-9 +10 +-9 +9 +-10 +11 +-10 +10 +-10 +9 +-11 +12 +-11 +10 +-11 +10 +-9 +10 +-9 +11 +-9 +12 +-11 +10 +-11 +10 +-10 +11 +-9 +9 +-8 +9 +-10 +13 +-10 +10 +-11 +11 +-10 +10 +-10 +13 +9 +-14 +10 +-11 +10 +-10 +11 +-9 +8 +-11 +9 +-10 +9 +-9 +10 +-10 +11 +-10 +9 +-10 +9 +-9 +10 +-11 +10 +-9 +10 +-9 +8 +-10 +10 +-14 +-10 +13 +-8 +10 +-10 +10 +-9 +12 +-10 +9 +-8 +8 +-8 +11 +-9 +12 +-8 +9 +-8 +11 +-8 +10 +-10 +9 +-10 +12 +-10 +9 +-9 +10 +-8 +12 +-9 +11 +-10 +12 +-10 +10 +-11 +10 +-10 +10 +-8 +11 +-13 +11 +-10 +9 +-9 +11 +-11 +10 +-10 +10 +-11 +11 +-10 +12 +-11 +10 +-10 +12 +-9 +11 +-8 +8 +-11 +12 +-10 +10 +-11 +11 +-11 +9 +-10 +9 +-11 +9 +-10 +8 +-9 +9 +-10 +11 +-11 +10 +-10 +9 +-11 +11 +-10 +12 +-9 +10 +-10 +14 +9 +-15 +11 +-10 +9 +-10 +9 +-11 +9 +-9 +9 +-10 +10 +-9 +10 +-10 +10 +-9 +9 +-8 +11 +-10 +12 +-10 +10 +-8 +9 +-10 +9 +-9 +8 +-8 +11 +-9 +8 +-8 +8 +-9 +9 +-10 +11 +-9 +10 +-9 +9 +-10 +9 +-10 +9 +-10 +9 +-9 +9 +-9 +9 +-10 +10 +-10 +9 +-9 +10 +-9 +11 +-13 +-7 +14 +-8 +11 +-8 +13 +-9 +11 +-7 +12 +-9 +9 +-9 +10 +-11 +11 +-9 +10 +-10 +11 +-10 +11 +-11 +10 +-11 +11 +-10 +11 +-9 +10 +-9 +10 +-10 +11 +-10 +10 +-10 +11 +-11 +10 +-10 +10 +-10 +9 +-11 +12 +-10 +9 +-10 +11 +-10 +12 +-11 +12 +-9 +11 +-10 +9 +-11 +10 +-11 +10 +-12 +10 +-10 +10 +-9 +8 +-11 +11 +-9 +10 +-9 +10 +-10 +10 +-9 +10 +-10 +11 +-10 +12 +-10 +9 +-10 +13 +-10 +11 +-9 +11 +-9 +12 +-9 +11 +-10 +10 +-10 +10 +-10 +11 +-9 +9 +-10 +11 +-10 +10 +-9 +9 +-11 +12 +-10 +11 +-9 +10 +-9 +10 +-10 +10 +-11 +11 +-11 +10 +-10 +9 +-11 +10 +-11 +9 +-9 +9 +-12 +10 +-10 +11 +-11 +10 +-11 +12 +-9 +10 +-12 +10 +-9 +11 +-10 +11 +-10 +12 +-9 +11 +-10 +11 +-9 +11 +-11 +11 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +10 +-8 +11 +-10 +12 +-8 +12 +-9 +11 +-10 +11 +-11 +12 +-9 +12 +-12 +11 +-10 +10 +-12 +11 +-10 +12 +9 +-16 +9 +-10 +7 +-12 +9 +-10 +9 +-10 +9 +-12 +9 +-8 +10 +-10 +9 +-9 +12 +-10 +11 +-9 +11 +-10 +9 +-9 +11 +-9 +9 +-10 +9 +-10 +10 +-10 +9 +-9 +8 +-11 +10 +-9 +9 +-10 +9 +-11 +9 +-8 +9 +-10 +11 +-10 +11 +-8 +9 +-9 +11 +-9 +10 +-9 +9 +-9 +10 +-9 +11 +-13 +-8 +14 +-7 +11 +-8 +11 +-8 +10 +-9 +9 +-9 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +9 +-11 +10 +-10 +11 +-8 +10 +-10 +10 +-10 +9 +-9 +11 +-9 +12 +-9 +9 +-8 +11 +-10 +10 +-10 +9 +-9 +11 +-10 +12 +-10 +12 +-8 +11 +-9 +10 +-9 +9 +-10 +12 +-8 +9 +-9 +11 +-9 +12 +-8 +11 +-8 +9 +-9 +11 +-9 +11 +-10 +10 +-10 +10 +-10 +11 +-11 +8 +-12 +11 +-10 +10 +-11 +10 +-9 +10 +-9 +10 +-11 +11 +-12 +8 +-11 +12 +-11 +10 +-9 +10 +-10 +9 +-11 +10 +-11 +12 +-11 +11 +-9 +11 +-10 +10 +-9 +11 +-8 +12 +-10 +10 +-9 +10 +-8 +9 +-11 +12 +-9 +11 +-11 +9 +-10 +10 +-10 +10 +-11 +10 +-11 +11 +-11 +8 +-10 +8 +-10 +13 +-10 +11 +-10 +10 +-9 +11 +-10 +12 +-11 +9 +-10 +11 +-9 +9 +-10 +12 +-11 +13 +9 +-18 +10 +-10 +8 +-11 +10 +-10 +10 +-10 +11 +-9 +9 +-11 +11 +-11 +10 +-9 +10 +-10 +11 +-10 +11 +-11 +9 +-9 +11 +-10 +10 +-9 +10 +-10 +11 +-8 +11 +-9 +10 +-11 +10 +-9 +9 +-10 +12 +-10 +11 +-8 +9 +-9 +12 +-9 +11 +-10 +9 +-9 +10 +-10 +10 +-10 +9 +-11 +10 +-9 +9 +-13 +-8 +13 +-8 +11 +-9 +11 +-7 +10 +-10 +11 +-9 +10 +-9 +11 +-9 +10 +-9 +9 +-8 +11 +-10 +11 +-9 +11 +-9 +10 +-9 +10 +-10 +11 +-9 +12 +10 +-14 +9 +-10 +10 +-11 +9 +-9 +8 +-12 +10 +-10 +9 +-7 +8 +-10 +10 +-11 +9 +-9 +7 +-11 +10 +-11 +8 +-9 +10 +-9 +11 +-9 +11 +-13 +-8 +14 +-8 +9 +-9 +11 +-11 +9 +-10 +10 +-9 +11 +-10 +9 +-9 +9 +-9 +11 +-9 +12 +-9 +9 +-11 +11 +-10 +10 +-9 +10 +-9 +12 +-9 +11 +-9 +10 +-10 +11 +-9 +10 +-9 +10 +-9 +12 +-9 +10 +-8 +11 +-9 +11 +-10 +10 +-9 +11 +-11 +10 +-11 +11 +-11 +9 +-10 +10 +-10 +10 +-10 +11 +-11 +11 +-10 +11 +-9 +9 +-11 +11 +-11 +10 +-10 +10 +-10 +11 +-10 +12 +-10 +10 +-11 +11 +-10 +10 +-11 +10 +-12 +11 +-11 +9 +-10 +9 +-11 +11 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-11 +10 +-10 +10 +-11 +12 +-9 +10 +-10 +12 +-9 +10 +-10 +10 +-9 +10 +-8 +11 +-10 +10 +-8 +9 +-9 +11 +-9 +11 +-9 +10 +-9 +11 +-10 +10 +-10 +12 +-9 +9 +-10 +11 +-10 +9 +-10 +11 +-8 +9 +-11 +9 +-9 +9 +-11 +10 +-10 +11 +-11 +8 +-10 +9 +-11 +12 +-12 +12 +-10 +11 +-10 +10 +-9 +10 +-9 +9 +-8 +11 +-9 +11 +-10 +10 +-11 +10 +-9 +7 +-11 +10 +-11 +9 +-10 +10 +-11 +12 +-11 +10 +-9 +9 +-11 +10 +-9 +11 +-10 +11 +-9 +9 +-9 +10 +-9 +11 +-9 +12 +-10 +12 +-9 +12 +-9 +12 +-11 +10 +-10 +13 +-9 +11 +-10 +12 +-9 +10 +-8 +9 +-9 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +10 +-10 +9 +-11 +9 +-9 +8 +-11 +11 +-10 +11 +-9 +10 +-10 +11 +-10 +11 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +11 +-11 +10 +-11 +10 +-10 +11 +-11 +10 +-10 +10 +-11 +11 +-11 +11 +-9 +11 +-11 +12 +-10 +12 +-8 +10 +-9 +12 +-10 +10 +-10 +11 +-9 +11 +-9 +9 +-11 +10 +-11 +9 +-10 +9 +-11 +11 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-11 +9 +-9 +10 +-10 +11 +-9 +11 +-8 +12 +-10 +11 +-9 +9 +-10 +10 +-10 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +9 +-9 +10 +-11 +11 +-11 +10 +-12 +10 +-11 +10 +-10 +11 +-10 +10 +-9 +11 +-12 +10 +-10 +10 +-11 +10 +-11 +10 +-11 +12 +-10 +11 +-9 +12 +-10 +11 +-9 +10 +-12 +11 +-9 +11 +-10 +12 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-11 +11 +-10 +10 +-11 +10 +-10 +10 +-11 +12 +-10 +10 +-9 +9 +-10 +11 +-9 +10 +-10 +10 +-9 +10 +-11 +11 +-11 +10 +-10 +9 +-10 +11 +-11 +11 +-10 +10 +-10 +12 +-9 +10 +-10 +10 +-10 +11 +-9 +10 +-10 +11 +-12 +13 +-10 +10 +-11 +9 +-10 +9 +-11 +10 +-10 +11 +-9 +9 +-9 +11 +-8 +8 +-10 +12 +-9 +10 +-11 +11 +-10 +10 +-9 +11 +-9 +10 +-9 +11 +-9 +10 +-10 +11 +-9 +11 +-10 +11 +-11 +11 +-11 +10 +-10 +10 +-11 +13 +-11 +11 +-9 +9 +-10 +11 +-10 +10 +-11 +11 +-10 +12 +-11 +10 +-10 +10 +-11 +10 +-9 +10 +-11 +11 +-9 +12 +-9 +11 +-11 +11 +-10 +9 +-9 +11 +-9 +11 +-10 +11 +-10 +11 +-9 +9 +-11 +12 +-9 +11 +-9 +10 +-10 +12 +-10 +13 +-10 +11 +-9 +10 +-10 +9 +-10 +9 +-10 +10 +-10 +12 +-10 +12 +-10 +10 +-10 +10 +-9 +10 +-11 +10 +-10 +11 +-9 +11 +-11 +12 +-10 +11 +-10 +11 +-10 +12 +-9 +12 +-10 +10 +-8 +10 +-11 +11 +-10 +10 +-10 +10 +-9 +10 +-9 +12 +-9 +11 +-9 +10 +-9 +10 +-10 +11 +-11 +10 +-10 +10 +-10 +9 +-11 +11 +-11 +11 +-11 +9 +-10 +9 +-11 +11 +-11 +12 +-9 +12 +-10 +10 +-9 +8 +-11 +11 +-11 +11 +-11 +11 +-10 +11 +-11 +10 +-11 +11 +-11 +9 +-10 +9 +-10 +9 +-11 +12 +-11 +10 +-11 +12 +-11 +10 +-9 +11 +-11 +11 +-11 +10 +-10 +10 +-11 +10 +-11 +10 +-11 +11 +-10 +10 +-11 +11 +-10 +11 +-9 +10 +-10 +10 +-10 +11 +-9 +11 +-11 +10 +-10 +10 +-9 +9 +-9 +10 +-9 +10 +-10 +11 +-10 +11 +-10 +11 +-9 +10 +-10 +11 +-11 +11 +-11 +10 +-10 +11 +-11 +11 +-10 +10 +-10 +11 +-11 +9 +-10 +11 +-10 +11 +-11 +10 +-10 +11 +-10 +8 +-10 +11 +-9 +9 +-11 +11 +-10 +11 +-11 +10 +-10 +11 +-12 +10 +-10 +10 +-10 +9 +-11 +11 +-8 +11 +-11 +11 +-9 +11 +-9 +11 +-9 +10 +-9 +11 +-10 +12 +-9 +10 +-9 +11 +-9 +11 +-10 +11 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-9 +10 +-11 +12 +-11 +12 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +10 +-9 +9 +-13 +12 +-9 +10 +-11 +11 +-10 +11 +-9 +10 +-9 +11 +-9 +12 +-8 +10 +-11 +12 +-10 +12 +-10 +10 +-10 +11 +-9 +10 +-10 +12 +-9 +12 +-10 +10 +-9 +10 +-9 +11 +-10 +10 +-11 +10 +-10 +11 +-10 +10 +-11 +10 +-11 +10 +-10 +8 +-11 +9 +-10 +11 +-12 +10 +-10 +10 +-11 +10 +-10 +11 +-12 +11 +-11 +10 +-9 +11 +-11 +10 +-9 +10 +-10 +12 +-10 +11 +-8 +10 +-9 +12 +-10 +11 +-9 +10 +-9 +11 +-9 +11 +-9 +10 +-8 +10 +-9 +12 +-11 +10 +-9 +11 +-11 +11 +-10 +11 +-11 +9 +-12 +11 +-10 +9 +-11 +9 +-11 +10 +-11 +10 +-10 +10 +-12 +11 +-10 +9 +-10 +12 +-10 +11 +-9 +12 +-9 +10 +-10 +12 +-9 +14 +11 +-15 +11 +-11 +9 +-10 +11 +-10 +10 +-11 +11 +-9 +9 +-11 +11 +-11 +11 +-11 +11 +-9 +7 +-9 +10 +-9 +10 +-9 +9 +-9 +9 +-10 +10 +-11 +10 +-10 +9 +-9 +10 +-9 +10 +-9 +10 +-10 +10 +-9 +12 +-11 +9 +-10 +10 +-9 +13 +-10 +10 +-10 +9 +-9 +11 +-9 +10 +-8 +9 +-9 +10 +-10 +10 +-10 +10 +-9 +9 +-9 +10 +-11 +9 +-11 +10 +-10 +9 +-9 +8 +-10 +9 +-10 +11 +-10 +11 +-8 +7 +-11 +10 +-9 +9 +-10 +12 +-9 +11 +-12 +-8 +14 +-8 +10 +-10 +10 +-10 +10 +-9 +11 +-10 +10 +-8 +10 +-8 +11 +-10 +11 +-9 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +9 +-10 +9 +-10 +11 +-10 +10 +-10 +10 +-9 +11 +-9 +11 +-10 +11 +-9 +11 +-10 +10 +-9 +9 +-8 +11 +-10 +10 +-10 +11 +-9 +10 +-10 +12 +-7 +11 +-8 +11 +-9 +11 +-10 +12 +-11 +10 +-11 +12 +-9 +10 +-11 +10 +-10 +9 +-10 +10 +-9 +9 +-11 +9 +-10 +9 +-11 +10 +-11 +10 +-11 +9 +-9 +9 +-10 +13 +9 +-15 +10 +-11 +12 +-11 +11 +-10 +9 +-10 +8 +-9 +9 +-10 +10 +-11 +9 +-11 +9 +-8 +10 +-9 +9 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-8 +9 +-9 +11 +-10 +10 +-8 +9 +-10 +10 +-9 +10 +-10 +11 +-9 +9 +-9 +8 +-9 +9 +-11 +11 +-10 +9 +-10 +9 +-10 +9 +-10 +10 +-9 +9 +-13 +-8 +15 +-8 +12 +-9 +10 +-8 +11 +-8 +10 +-10 +11 +-10 +10 +-8 +10 +-9 +11 +-9 +11 +-9 +11 +-11 +12 +-10 +11 +-10 +11 +-11 +8 +-10 +12 +-10 +11 +-9 +11 +-12 +11 +-9 +10 +-9 +9 +-10 +11 +-11 +11 +-10 +8 +-11 +10 +-11 +11 +-9 +9 +-10 +11 +-10 +11 +-9 +10 +-13 +12 +-9 +11 +-10 +12 +-10 +9 +-11 +12 +-10 +11 +-11 +9 +-9 +11 +-10 +9 +-11 +10 +-8 +9 +-11 +12 +-9 +10 +-11 +10 +-12 +12 +-10 +10 +-9 +11 +-10 +10 +-10 +12 +-9 +11 +-11 +11 +-10 +11 +-9 +10 +-10 +11 +-10 +10 +-9 +11 +-10 +12 +-11 +11 +-11 +12 +-10 +10 +-10 +11 +-10 +11 +-10 +10 +-11 +15 +10 +-15 +12 +-11 +9 +-10 +9 +-11 +10 +-11 +9 +-10 +11 +-11 +8 +-10 +10 +-10 +10 +-10 +10 +-11 +12 +-11 +10 +-11 +11 +-9 +10 +-8 +10 +-14 +-8 +13 +-10 +12 +-11 +11 +-8 +8 +-8 +11 +-9 +11 +-9 +10 +-9 +11 +-8 +10 +-9 +11 +-9 +13 +-10 +10 +-10 +11 +-11 +10 +-10 +12 +-9 +9 +-9 +12 +-9 +13 +-9 +11 +-9 +12 +-11 +10 +-9 +9 +-11 +10 +-11 +10 +-10 +10 +-11 +11 +-10 +9 +-10 +10 +-10 +10 +-12 +10 +-11 +10 +-11 +10 +-9 +13 +-12 +11 +-9 +11 +-9 +10 +-11 +11 +-10 +10 +-11 +12 +-9 +9 +-10 +10 +-9 +12 +-11 +12 +-9 +11 +-11 +9 +-11 +10 +-10 +10 +-11 +13 +9 +-14 +9 +-12 +9 +-12 +9 +-11 +9 +-9 +9 +-11 +10 +-10 +12 +-10 +9 +-10 +11 +-10 +9 +-10 +9 +-9 +9 +-10 +11 +-11 +11 +-11 +9 +-11 +10 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-7 +9 +-9 +9 +-10 +10 +-8 +10 +-9 +9 +-9 +10 +-9 +10 +-9 +9 +-11 +9 +-9 +10 +-14 +-9 +13 +-8 +10 +-10 +11 +-9 +10 +-8 +9 +-9 +11 +-9 +11 +-10 +12 +-11 +10 +-9 +11 +-10 +10 +-9 +9 +-9 +10 +-10 +11 +-10 +9 +-9 +10 +-9 +11 +-11 +11 +-9 +9 +-11 +11 +-10 +10 +-11 +11 +-10 +12 +-9 +12 +-6 +9 +-10 +12 +-10 +11 +-11 +10 +-11 +10 +-9 +10 +-10 +10 +-10 +9 +-11 +11 +-11 +11 +-10 +10 +-9 +10 +-10 +12 +-8 +9 +-9 +9 +-10 +11 +-10 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-10 +12 +-11 +9 +-10 +10 +-10 +9 +-10 +12 +-11 +11 +-10 +11 +-9 +10 +-10 +10 +-9 +11 +-10 +12 +-10 +10 +-8 +10 +-9 +11 +-9 +10 +-11 +10 +-9 +10 +-11 +10 +-10 +10 +-9 +11 +-12 +11 +-11 +9 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-8 +10 +-9 +11 +-8 +9 +-11 +10 +-9 +11 +-10 +10 +-11 +11 +-9 +9 +-11 +11 +-11 +11 +-9 +10 +-10 +12 +-9 +10 +-10 +10 +-10 +11 +-12 +10 +-9 +10 +-11 +12 +-11 +10 +-11 +13 +10 +-16 +11 +-12 +8 +-11 +9 +-12 +9 +-8 +6 +-12 +9 +-9 +9 +-9 +9 +-10 +11 +-10 +11 +-8 +9 +-9 +10 +-10 +10 +-11 +11 +-9 +10 +-10 +11 +-9 +9 +-8 +9 +-10 +9 +-9 +9 +-8 +9 +-8 +10 +-9 +9 +-11 +10 +-8 +8 +-9 +10 +-10 +11 +-10 +9 +-10 +8 +-9 +10 +-10 +8 +-13 +-7 +13 +-8 +12 +-10 +9 +-9 +11 +-10 +10 +-9 +12 +-9 +13 +-10 +10 +-8 +11 +-8 +11 +-8 +8 +-8 +12 +-10 +10 +-9 +10 +-8 +12 +-9 +11 +-9 +11 +-9 +9 +-9 +10 +-9 +10 +-10 +11 +-11 +10 +-11 +10 +-11 +11 +-11 +8 +-11 +9 +-11 +10 +-9 +10 +-10 +9 +-10 +12 +-10 +12 +-9 +10 +-9 +12 +-9 +12 +-9 +10 +-10 +11 +-11 +11 +-10 +10 +-11 +11 +-11 +11 +-8 +10 +-8 +12 +-10 +11 +-11 +11 +-11 +11 +-9 +12 +-9 +11 +-10 +12 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-12 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +9 +-10 +11 +-9 +9 +-11 +10 +-10 +10 +-10 +11 +-9 +10 +-11 +11 +-10 +9 +-10 +10 +-12 +9 +-8 +8 +-12 +11 +-12 +10 +-9 +10 +-10 +10 +-9 +10 +-10 +10 +-11 +12 +-10 +11 +-9 +9 +-11 +10 +-11 +11 +-10 +14 +11 +-15 +11 +-10 +9 +-9 +9 +-11 +9 +-11 +11 +-9 +9 +-10 +11 +-10 +11 +-9 +9 +-10 +9 +-10 +9 +-10 +10 +-9 +9 +-10 +10 +-9 +11 +-9 +9 +-10 +10 +-10 +9 +-10 +10 +-9 +10 +-9 +9 +-10 +10 +-9 +9 +-8 +8 +-11 +12 +-9 +8 +-11 +12 +-10 +10 +-8 +9 +-8 +10 +-9 +8 +-12 +-6 +13 +-8 +12 +-10 +11 +-10 +11 +-9 +10 +-9 +11 +-10 +11 +-10 +10 +-11 +11 +-9 +10 +-11 +9 +-11 +11 +-10 +10 +-11 +10 +-10 +11 +-9 +14 +9 +-14 +12 +-9 +11 +-10 +11 +-10 +10 +-9 +9 +-11 +9 +-11 +9 +-10 +10 +-10 +9 +-9 +10 +-9 +9 +-9 +11 +-10 +11 +-9 +9 +-9 +10 +-13 +-8 +14 +-9 +12 +-10 +11 +-10 +11 +-9 +11 +-9 +9 +-10 +11 +-9 +11 +-10 +12 +-11 +8 +-9 +9 +-9 +9 +-9 +9 +-10 +10 +-10 +13 +-11 +10 +-10 +11 +-12 +10 +-10 +9 +-10 +9 +-11 +11 +-10 +11 +-9 +9 +-11 +12 +-9 +11 +-10 +10 +-11 +10 +-9 +11 +-10 +11 +-9 +11 +-11 +11 +-9 +10 +-10 +12 +-9 +11 +-12 +10 +-10 +11 +-8 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +12 +-9 +12 +-9 +10 +-9 +11 +-9 +10 +-10 +13 +-10 +9 +-11 +10 +-10 +11 +-10 +11 +-9 +10 +-9 +11 +-11 +11 +-10 +10 +-10 +9 +-10 +11 +-11 +11 +-11 +10 +-9 +9 +-10 +11 +-8 +10 +-10 +10 +-9 +11 +-11 +11 +-11 +10 +-11 +11 +-10 +9 +-11 +10 +-11 +11 +-12 +10 +-11 +9 +-11 +10 +-11 +11 +-11 +9 +-10 +12 +-9 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +10 +-12 +12 +-9 +10 +-10 +10 +-9 +8 +-9 +9 +-10 +12 +-11 +11 +-9 +10 +-10 +11 +-10 +11 +-9 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +12 +-10 +10 +-10 +11 +-9 +11 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-9 +11 +-9 +10 +-9 +11 +-10 +9 +-9 +10 +-9 +10 +-8 +8 +-9 +11 +-11 +11 +-10 +10 +-10 +11 +-9 +11 +-9 +11 +-9 +11 +-10 +10 +-10 +9 +-10 +9 +-10 +11 +-11 +10 +-10 +10 +-12 +12 +-11 +10 +-10 +10 +-11 +11 +-10 +12 +-9 +11 +-9 +10 +-9 +12 +-10 +12 +-8 +11 +-8 +10 +-10 +11 +-10 +11 +-9 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +9 +-11 +10 +-10 +10 +-10 +9 +-11 +10 +-11 +10 +-12 +10 +-11 +8 +-10 +9 +-11 +9 +-10 +9 +-11 +10 +-11 +11 +-9 +10 +-10 +12 +-10 +9 +-10 +12 +-11 +9 +-10 +10 +-9 +11 +-11 +11 +-10 +12 +-9 +11 +-7 +11 +-9 +13 +-10 +13 +-9 +11 +-10 +10 +-8 +9 +-10 +11 +-11 +10 +-9 +8 +-11 +9 +-11 +10 +-11 +12 +-10 +10 +-10 +10 +-9 +10 +-9 +10 +-10 +12 +-10 +11 +-9 +10 +-9 +11 +-11 +10 +-10 +11 +-10 +11 +-10 +11 +-9 +12 +-11 +11 +-12 +11 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-11 +12 +-10 +10 +-9 +11 +-10 +11 +-10 +12 +-9 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +9 +-10 +10 +-11 +12 +-11 +11 +-10 +10 +-9 +9 +-11 +10 +-11 +11 +-10 +11 +-12 +9 +-9 +10 +-11 +10 +-9 +11 +-10 +10 +-10 +10 +-9 +10 +-10 +11 +-9 +10 +-10 +11 +-9 +11 +-9 +12 +-9 +12 +-9 +11 +-10 +12 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-10 +11 +-9 +11 +-11 +12 +-10 +12 +-9 +10 +-11 +11 +-10 +11 +-12 +10 +-9 +9 +-11 +10 +-11 +11 +-10 +8 +-10 +9 +-10 +10 +-9 +10 +-11 +12 +-11 +10 +-10 +10 +-10 +12 +-11 +11 +-11 +10 +-11 +13 +-11 +11 +-10 +11 +-10 +12 +-10 +9 +-10 +11 +-10 +11 +-9 +10 +-11 +11 +-10 +10 +-10 +9 +-10 +11 +-10 +12 +-10 +10 +-11 +10 +-11 +10 +-11 +10 +-10 +9 +-10 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +9 +-10 +9 +-10 +11 +-10 +9 +-10 +12 +-10 +11 +-9 +12 +-10 +11 +-9 +10 +-10 +11 +-9 +11 +-10 +12 +-10 +10 +-12 +12 +-9 +10 +-10 +10 +-10 +10 +-11 +11 +-9 +11 +-11 +8 +-10 +11 +-9 +9 +-11 +12 +-12 +11 +-11 +10 +-11 +10 +-11 +10 +-10 +10 +-11 +10 +-12 +12 +-10 +10 +-9 +10 +-9 +12 +-10 +11 +-10 +12 +-9 +9 +-10 +11 +-11 +10 +-12 +11 +-10 +11 +-10 +9 +-12 +13 +-9 +8 +-11 +10 +-10 +10 +-10 +11 +-11 +11 +-11 +11 +-9 +11 +-10 +12 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-11 +10 +-9 +11 +-12 +11 +-11 +8 +-11 +11 +-11 +10 +-10 +10 +-11 +10 +-12 +11 +-10 +10 +-10 +12 +-9 +10 +-11 +11 +-10 +12 +-10 +13 +-9 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +12 +-9 +10 +-10 +11 +-10 +11 +-12 +9 +-9 +10 +-10 +10 +-11 +11 +-10 +9 +-11 +11 +-9 +9 +-11 +13 +-12 +11 +-9 +10 +-9 +10 +-10 +12 +-9 +11 +-10 +9 +-10 +11 +-11 +11 +-10 +11 +-10 +11 +-8 +8 +-10 +11 +-9 +11 +-9 +10 +-10 +11 +-10 +10 +-8 +12 +-10 +11 +-9 +9 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-11 +11 +-10 +10 +-8 +9 +-11 +11 +-11 +10 +-11 +11 +-11 +11 +-9 +8 +-9 +10 +-11 +12 +-10 +11 +-8 +11 +-9 +12 +-10 +11 +-9 +11 +-9 +11 +-9 +10 +-10 +10 +-9 +10 +-9 +9 +-11 +11 +-10 +11 +-11 +10 +-9 +10 +-11 +10 +-11 +9 +-10 +9 +-10 +10 +-11 +11 +-10 +10 +-12 +13 +-11 +11 +-10 +11 +-11 +12 +-10 +9 +-11 +10 +-11 +10 +-11 +11 +-10 +11 +-12 +12 +-8 +9 +-10 +10 +-12 +12 +-10 +10 +-10 +11 +-8 +11 +-10 +11 +-9 +11 +-10 +11 +-11 +11 +-11 +9 +-8 +10 +-9 +12 +-9 +12 +-10 +10 +-10 +11 +-9 +12 +-11 +10 +-10 +9 +-11 +11 +-11 +11 +-9 +12 +-10 +11 +-9 +10 +-9 +11 +-11 +10 +-11 +11 +-9 +11 +-10 +8 +-8 +11 +-9 +11 +-11 +10 +-10 +12 +-9 +12 +-9 +14 +10 +-15 +10 +-11 +9 +-11 +10 +-11 +9 +-10 +9 +-9 +8 +-9 +10 +-9 +9 +-10 +11 +-8 +10 +-9 +11 +-9 +10 +-9 +11 +-8 +9 +-11 +10 +-10 +9 +-8 +8 +-10 +9 +-9 +9 +-10 +9 +-13 +13 +-8 +10 +-9 +9 +-9 +9 +-9 +9 +-10 +9 +-9 +9 +-9 +10 +-7 +8 +-9 +11 +-9 +11 +-8 +9 +-11 +10 +-10 +10 +-9 +9 +-10 +10 +-10 +11 +-9 +10 +-11 +9 +-10 +10 +-9 +10 +-10 +9 +-10 +11 +-9 +10 +-10 +11 +-10 +9 +-10 +9 +-13 +-8 +13 +-7 +9 +-9 +10 +-9 +9 +-10 +10 +-10 +11 +-11 +9 +-9 +11 +-11 +10 +-9 +12 +-9 +12 +-10 +10 +-9 +10 +-10 +11 +-9 +9 +-10 +11 +-9 +10 +-9 +9 +-9 +11 +-9 +10 +-11 +11 +-10 +9 +-10 +10 +-10 +10 +-9 +10 +-11 +11 +-10 +11 +-10 +10 +-11 +11 +-9 +11 +-9 +11 +-10 +10 +-10 +11 +-8 +10 +-10 +12 +-9 +11 +-9 +12 +-9 +11 +-9 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +11 +-11 +11 +-9 +11 +-8 +10 +-10 +10 +-10 +13 +9 +-16 +12 +-10 +11 +-9 +10 +-10 +10 +-10 +9 +-11 +10 +-9 +8 +-11 +9 +-9 +9 +-10 +9 +-11 +9 +-11 +9 +-10 +8 +-10 +9 +-10 +11 +-10 +10 +-10 +9 +-9 +7 +-9 +10 +-11 +10 +-9 +9 +-9 +8 +-9 +10 +-10 +9 +-10 +9 +-10 +9 +-9 +8 +-10 +9 +-9 +8 +-10 +9 +-9 +10 +-13 +-8 +14 +-8 +9 +-10 +11 +-8 +12 +-8 +9 +-10 +11 +-7 +11 +-9 +11 +-9 +11 +-9 +10 +-10 +11 +-9 +11 +-9 +11 +-9 +9 +-8 +10 +-9 +11 +-11 +10 +-9 +10 +-8 +9 +-10 +11 +-8 +10 +-10 +10 +-10 +11 +-11 +10 +-8 +8 +-11 +12 +-10 +11 +-10 +10 +-10 +11 +-8 +9 +-11 +13 +-11 +9 +-9 +10 +-11 +10 +-10 +11 +-9 +11 +-10 +9 +-10 +10 +-10 +9 +-11 +10 +-9 +11 +-11 +10 +-9 +10 +-9 +10 +-11 +10 +-10 +10 +-10 +11 +-10 +10 +-12 +12 +-10 +12 +-9 +11 +-9 +12 +-11 +10 +-9 +10 +-11 +10 +-11 +11 +-9 +10 +-11 +11 +-9 +11 +-8 +9 +-11 +13 +-9 +12 +-10 +11 +-10 +15 +9 +-16 +12 +-11 +9 +-11 +9 +-11 +8 +-10 +8 +-10 +12 +-12 +9 +-10 +10 +-9 +10 +-12 +9 +-10 +10 +-10 +9 +-9 +10 +-10 +10 +-9 +10 +-12 +-6 +15 +-7 +11 +-8 +11 +-8 +11 +-9 +12 +-9 +12 +-10 +10 +-9 +9 +-9 +11 +-9 +10 +-9 +10 +-11 +11 +-10 +10 +-11 +10 +-10 +10 +-9 +9 +-10 +10 +-10 +10 +-8 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +9 +-11 +11 +-11 +9 +-10 +11 +-11 +11 +-11 +10 +-11 +11 +-10 +9 +-10 +10 +-11 +10 +-11 +10 +-9 +9 +-11 +12 +-9 +10 +-10 +12 +-9 +11 +-9 +11 +-10 +10 +-9 +10 +-11 +12 +-9 +12 +-9 +11 +-9 +12 +-10 +11 +-9 +10 +-10 +15 +10 +-15 +10 +-11 +9 +-11 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +9 +-11 +9 +-11 +10 +-11 +9 +-11 +10 +-9 +9 +-9 +10 +-10 +11 +-11 +9 +-9 +10 +-9 +10 +-10 +11 +-10 +12 +-9 +11 +-8 +8 +-10 +9 +-9 +9 +-10 +10 +-10 +9 +-10 +10 +-10 +11 +-10 +9 +-10 +9 +-9 +10 +-10 +10 +-12 +-9 +14 +-8 +10 +-9 +11 +-8 +8 +-9 +11 +-8 +10 +-9 +12 +-9 +13 +-8 +9 +-8 +11 +-8 +10 +-10 +10 +-10 +11 +-10 +10 +-11 +9 +-10 +9 +-9 +10 +-10 +11 +-9 +10 +-9 +9 +-9 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-11 +10 +-10 +10 +-9 +11 +-11 +12 +-10 +10 +-9 +9 +-11 +11 +-11 +10 +-10 +10 +-10 +12 +-9 +10 +-9 +10 +-12 +10 +-10 +9 +-10 +10 +-11 +11 +-9 +11 +-9 +10 +-10 +10 +-9 +9 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +11 +-9 +10 +-9 +11 +-10 +11 +-9 +11 +-10 +12 +-11 +11 +-9 +11 +-10 +11 +-11 +11 +-9 +9 +-11 +11 +-9 +10 +-9 +9 +-9 +10 +-10 +10 +-9 +10 +-8 +10 +-12 +10 +-11 +10 +-11 +11 +-9 +9 +-9 +11 +-9 +11 +-10 +10 +-10 +11 +-10 +10 +-11 +12 +-9 +10 +-11 +12 +-11 +10 +-10 +10 +-10 +10 +-11 +12 +-11 +9 +-10 +10 +-10 +9 +-10 +12 +-11 +9 +-10 +9 +-9 +11 +-10 +10 +-11 +11 +-9 +11 +-10 +10 +-11 +14 +9 +-15 +11 +-11 +10 +-10 +10 +-12 +9 +-11 +9 +-11 +7 +-11 +10 +-12 +10 +-10 +11 +-10 +10 +-10 +9 +-9 +8 +-9 +10 +-9 +9 +-9 +10 +-9 +12 +-9 +12 +-9 +10 +-9 +10 +-9 +9 +-9 +10 +-11 +9 +-8 +9 +-8 +8 +-10 +9 +-9 +9 +-10 +9 +-10 +10 +-10 +10 +-9 +8 +-10 +10 +-13 +-9 +13 +-8 +11 +-8 +11 +-9 +11 +-6 +10 +-10 +11 +-11 +13 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-9 +10 +-11 +13 +-11 +8 +-10 +11 +-9 +10 +-10 +11 +-10 +11 +-12 +13 +-9 +11 +-9 +11 +-10 +11 +-9 +14 +-12 +10 +-9 +11 +-9 +10 +-9 +12 +-9 +10 +-11 +12 +-10 +11 +-9 +11 +-11 +10 +-10 +11 +-10 +11 +-10 +8 +-9 +9 +-9 +10 +-11 +12 +-10 +9 +-9 +12 +-10 +10 +-9 +9 +-9 +12 +-10 +10 +-8 +9 +-9 +11 +-10 +9 +-10 +11 +-11 +10 +-11 +12 +-9 +10 +-9 +11 +-10 +10 +-10 +8 +-9 +11 +-11 +11 +-9 +10 +-10 +12 +-8 +10 +-8 +10 +-10 +11 +-9 +10 +-9 +10 +-11 +11 +-10 +11 +-11 +10 +-10 +10 +-10 +11 +-11 +10 +-9 +11 +-10 +11 +-10 +10 +-10 +11 +-9 +9 +-9 +10 +-9 +10 +-10 +11 +-10 +11 +-10 +12 +-10 +14 +9 +-16 +10 +-11 +9 +-10 +8 +-11 +8 +-10 +10 +-10 +9 +-11 +8 +-10 +9 +-11 +10 +-11 +9 +-10 +9 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-8 +10 +-9 +11 +-10 +9 +-11 +10 +-10 +10 +-10 +10 +-9 +8 +-11 +10 +-10 +9 +-9 +9 +-9 +9 +-8 +9 +-10 +11 +-9 +10 +-9 +10 +-10 +10 +-11 +-8 +13 +-8 +11 +-9 +11 +-11 +9 +-8 +11 +-8 +10 +-9 +9 +-9 +10 +-10 +9 +-9 +10 +-9 +10 +-11 +12 +-9 +10 +-10 +9 +-9 +10 +-11 +14 +10 +-15 +11 +-10 +9 +-11 +11 +-10 +8 +-8 +9 +-10 +12 +-11 +9 +-9 +11 +-10 +9 +-9 +10 +-9 +10 +-10 +10 +-9 +9 +-9 +7 +-9 +10 +-12 +-8 +14 +-9 +10 +-9 +11 +-10 +10 +-8 +11 +-8 +12 +-9 +12 +-8 +10 +-7 +9 +-9 +10 +-9 +12 +-11 +11 +-10 +9 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +12 +-9 +11 +-9 +10 +-11 +10 +-10 +11 +-11 +10 +-11 +12 +-10 +9 +-10 +9 +-10 +10 +-11 +9 +-9 +9 +-11 +10 +-10 +9 +-10 +10 +-9 +10 +-10 +9 +-11 +11 +-9 +9 +-10 +11 +-9 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +8 +-11 +11 +-10 +11 +-10 +11 +-9 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +12 +-11 +8 +-9 +11 +-10 +11 +-11 +11 +-9 +10 +-12 +10 +-10 +10 +-10 +10 +-10 +10 +-11 +11 +-10 +12 +-10 +10 +-10 +10 +-8 +13 +-9 +8 +-9 +12 +-10 +12 +-10 +11 +-10 +10 +-9 +9 +-10 +10 +-9 +10 +-10 +10 +-10 +9 +-11 +10 +-10 +11 +-10 +11 +-10 +14 +-10 +9 +-8 +12 +-10 +10 +-10 +10 +-11 +12 +-10 +11 +-10 +10 +-9 +10 +-10 +10 +-10 +11 +-11 +9 +-10 +12 +-10 +10 +-10 +9 +-11 +11 +-10 +9 +-10 +9 +-11 +10 +-11 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +12 +-11 +12 +-10 +11 +-10 +11 +-9 +11 +-10 +11 +-9 +10 +-9 +11 +-9 +12 +-10 +12 +-10 +9 +-10 +9 +-11 +12 +-9 +10 +-11 +11 +-11 +11 +-9 +12 +-8 +10 +-10 +11 +-8 +8 +-10 +10 +-10 +11 +-11 +12 +-9 +9 +-9 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +10 +-10 +9 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-10 +11 +-8 +10 +-9 +12 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-9 +11 +-8 +11 +-12 +12 +-11 +11 +-9 +9 +-10 +11 +-12 +10 +-11 +10 +-11 +10 +-11 +10 +-11 +10 +-10 +11 +-10 +10 +-11 +10 +-11 +9 +-10 +10 +-9 +9 +-9 +10 +-9 +12 +-9 +11 +-9 +11 +-10 +12 +-10 +12 +-9 +12 +-10 +11 +-10 +11 +-11 +10 +-9 +8 +-10 +12 +-11 +9 +-11 +8 +-9 +11 +-12 +11 +-11 +10 +-12 +11 +-11 +9 +-10 +9 +-10 +11 +-10 +11 +-9 +10 +-9 +8 +-12 +10 +-10 +9 +-10 +10 +-11 +10 +-11 +11 +-9 +12 +-11 +12 +-9 +12 +-11 +10 +-9 +11 +-10 +10 +-11 +11 +-9 +11 +-10 +9 +-10 +10 +-9 +10 +-10 +11 +-9 +10 +-10 +11 +-11 +9 +-11 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +11 +-9 +12 +-8 +11 +-10 +11 +-10 +11 +-9 +12 +-11 +10 +-9 +10 +-10 +11 +-10 +11 +-9 +11 +-9 +10 +-9 +10 +-10 +10 +-10 +9 +-11 +10 +-10 +10 +-9 +11 +-9 +12 +-10 +10 +-9 +11 +-10 +12 +-11 +9 +-11 +11 +-9 +10 +-11 +12 +-11 +9 +-10 +10 +-10 +10 +-10 +9 +-9 +11 +-10 +11 +-10 +9 +-9 +10 +-9 +9 +-10 +11 +-9 +11 +-10 +13 +-10 +11 +-11 +11 +-8 +10 +-11 +10 +-11 +10 +-12 +12 +-10 +11 +-9 +11 +-11 +12 +-9 +11 +-9 +11 +-11 +12 +-12 +9 +-11 +9 +-10 +12 +-10 +9 +-10 +11 +-10 +11 +-9 +11 +-9 +12 +-10 +9 +-11 +11 +-10 +10 +-10 +9 +-11 +11 +-11 +11 +-10 +11 +-11 +10 +-9 +9 +-10 +11 +-11 +9 +-11 +9 +-10 +10 +-10 +9 +-10 +9 +-11 +12 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-9 +10 +-10 +9 +-9 +10 +-12 +12 +-10 +11 +-9 +8 +-10 +11 +-11 +11 +-10 +11 +-10 +10 +-9 +10 +-9 +11 +-11 +11 +-9 +12 +-11 +11 +-9 +11 +-9 +10 +-10 +13 +-12 +10 +-10 +10 +-10 +11 +-11 +12 +-9 +9 +-10 +9 +-9 +11 +-11 +9 +-10 +11 +-11 +11 +-10 +10 +-10 +11 +-11 +10 +-10 +12 +-9 +10 +-9 +10 +-11 +11 +-9 +11 +-10 +12 +-10 +12 +-10 +12 +-10 +12 +-10 +13 +-9 +9 +-9 +11 +-9 +11 +-10 +12 +-11 +11 +-8 +11 +-11 +11 +-10 +10 +-11 +12 +-12 +12 +-9 +9 +-10 +12 +-10 +9 +-11 +10 +-10 +11 +-11 +11 +-10 +9 +-11 +12 +-10 +10 +-11 +11 +-10 +10 +-11 +10 +-11 +10 +-9 +10 +-10 +11 +-11 +11 +-10 +11 +-11 +10 +-10 +10 +-9 +10 +-11 +10 +-10 +11 +-10 +11 +-10 +12 +-11 +11 +-10 +13 +-10 +10 +-10 +11 +-9 +9 +-11 +12 +-9 +8 +-11 +11 +-10 +11 +-10 +11 +-10 +11 +-11 +9 +-9 +12 +-10 +10 +-11 +9 +-11 +10 +-11 +11 +-12 +11 +-11 +9 +-11 +12 +-10 +10 +-10 +11 +-11 +12 +-12 +12 +-10 +11 +-9 +12 +-9 +10 +-10 +12 +-10 +12 +-9 +11 +-9 +11 +-9 +12 +-10 +13 +-10 +12 +-9 +10 +-10 +11 +-9 +10 +-11 +11 +-11 +11 +-9 +10 +-11 +12 +-10 +11 +-9 +10 +-9 +9 +-10 +11 +-9 +11 +-9 +10 +-9 +9 +-10 +11 +-10 +10 +-10 +10 +-12 +11 +-11 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +9 +-9 +13 +-11 +8 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-10 +11 +-9 +10 +-9 +13 +-8 +9 +-10 +12 +-10 +9 +-10 +11 +-11 +10 +-11 +9 +-10 +8 +-10 +11 +-11 +12 +-9 +9 +-9 +11 +-10 +13 +-11 +12 +-11 +10 +-10 +10 +-10 +10 +-11 +11 +-9 +11 +-10 +12 +-9 +11 +-9 +11 +-9 +10 +-10 +11 +-9 +11 +-10 +10 +-10 +11 +-9 +11 +-10 +11 +-11 +12 +-11 +9 +-9 +12 +-10 +10 +-11 +10 +-9 +8 +-10 +14 +9 +-15 +11 +-11 +10 +-10 +10 +-10 +10 +-10 +10 +-12 +10 +-10 +10 +-10 +9 +-10 +8 +-10 +9 +-10 +9 +-10 +8 +-10 +9 +-10 +10 +-11 +8 +-9 +9 +-11 +10 +-11 +10 +-9 +9 +-10 +10 +-9 +11 +-9 +9 +-9 +10 +-9 +9 +-10 +11 +-8 +10 +-10 +11 +-8 +11 +-10 +11 +-9 +11 +-9 +11 +-9 +10 +-8 +9 +-10 +10 +-10 +10 +-9 +9 +-9 +10 +-10 +11 +-10 +10 +-9 +10 +-8 +10 +-10 +11 +-8 +10 +-11 +10 +-8 +8 +-11 +9 +-10 +9 +-12 +-11 +14 +-9 +11 +-10 +10 +-10 +10 +-8 +11 +-8 +10 +-9 +10 +-9 +8 +-10 +11 +-8 +10 +-11 +12 +-9 +8 +-10 +9 +-10 +9 +-10 +9 +-11 +11 +-10 +11 +-11 +9 +-8 +11 +-10 +12 +-10 +10 +-10 +10 +-10 +12 +-10 +10 +-10 +12 +-11 +10 +-11 +11 +-10 +9 +-10 +11 +-11 +11 +-10 +11 +-8 +9 +-8 +11 +-9 +11 +-9 +11 +-9 +11 +-9 +10 +-10 +12 +-11 +12 +-9 +10 +-9 +9 +-11 +11 +-10 +11 +-8 +9 +-11 +12 +-10 +9 +-9 +9 +-10 +13 +10 +-16 +12 +-9 +9 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +8 +-10 +10 +-10 +8 +-9 +9 +-9 +9 +-10 +10 +-10 +8 +-10 +9 +-10 +10 +-9 +11 +-9 +8 +-9 +11 +-10 +9 +-9 +9 +-8 +11 +-9 +10 +-10 +10 +-9 +10 +-9 +10 +-9 +10 +-9 +9 +-10 +9 +-9 +10 +-9 +8 +-10 +10 +-12 +-8 +14 +-8 +11 +-9 +9 +-8 +10 +-9 +10 +-9 +9 +-10 +10 +-10 +11 +-12 +10 +-8 +10 +-9 +12 +-9 +12 +-9 +10 +-10 +11 +-9 +10 +-9 +12 +-10 +12 +-9 +9 +-9 +11 +-10 +10 +-11 +10 +-10 +10 +-11 +9 +-9 +9 +-10 +12 +-9 +9 +-11 +11 +-10 +8 +-11 +11 +-10 +11 +-9 +11 +-11 +10 +-10 +8 +-11 +10 +-11 +11 +-9 +10 +-11 +11 +-10 +9 +-9 +11 +-10 +12 +-9 +10 +-8 +10 +-9 +11 +-9 +11 +-8 +10 +-10 +9 +-10 +10 +-9 +12 +-10 +11 +-10 +11 +-9 +9 +-11 +12 +-8 +10 +-10 +12 +-11 +11 +-10 +9 +-10 +9 +-11 +8 +-9 +12 +-9 +9 +-11 +10 +-10 +11 +-10 +9 +-10 +13 +11 +-16 +10 +-11 +7 +-12 +11 +-11 +9 +-11 +9 +-11 +10 +-11 +9 +-9 +10 +-11 +9 +-10 +10 +-11 +9 +-9 +11 +-11 +9 +-9 +10 +-10 +11 +-12 +-8 +15 +-8 +11 +-9 +10 +-9 +10 +-10 +11 +-9 +11 +-10 +9 +-10 +9 +-9 +9 +-9 +11 +-9 +11 +-10 +12 +-11 +11 +-10 +10 +-9 +11 +-10 +11 +-9 +11 +-10 +10 +-9 +10 +-9 +10 +-11 +9 +-9 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +10 +-10 +12 +-10 +11 +-8 +8 +-9 +13 +-11 +12 +-7 +9 +-9 +10 +-10 +12 +-10 +10 +-11 +11 +-9 +11 +-10 +10 +-9 +10 +-10 +9 +-9 +10 +-10 +9 +-10 +11 +-9 +10 +-10 +9 +-10 +11 +-10 +9 +-11 +13 +10 +-14 +11 +-10 +11 +-10 +10 +-9 +10 +-10 +10 +-8 +8 +-11 +12 +-12 +10 +-7 +7 +-11 +10 +-10 +8 +-11 +9 +-10 +10 +-10 +9 +-10 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +10 +-10 +9 +-8 +10 +-10 +12 +-9 +10 +-9 +10 +-9 +11 +-12 +8 +-9 +10 +-10 +10 +-9 +9 +-9 +10 +-9 +10 +-12 +-8 +14 +-8 +11 +-10 +10 +-10 +11 +-9 +10 +-11 +10 +-10 +9 +-9 +11 +-9 +11 +-9 +10 +-10 +12 +-9 +10 +-9 +12 +-8 +10 +-9 +10 +-10 +11 +-10 +10 +-12 +12 +-8 +9 +-10 +11 +-11 +9 +-10 +10 +-10 +9 +-11 +11 +-9 +11 +-10 +9 +-10 +12 +-10 +9 +-10 +10 +-11 +11 +-10 +10 +-9 +10 +-10 +11 +-12 +10 +-9 +9 +-10 +10 +-10 +11 +-10 +12 +-10 +9 +-11 +10 +-9 +8 +-11 +11 +-9 +11 +-10 +11 +-11 +11 +-9 +10 +-9 +9 +-10 +11 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-11 +10 +-10 +10 +-11 +12 +-11 +11 +-10 +9 +-12 +11 +-12 +12 +-10 +10 +-9 +10 +-10 +10 +-9 +8 +-10 +10 +-10 +9 +-9 +12 +-9 +11 +-10 +11 +-10 +13 +-10 +11 +-9 +10 +-10 +12 +-9 +12 +-9 +9 +-11 +10 +-10 +10 +-10 +10 +-11 +12 +-11 +11 +-10 +10 +-11 +10 +-9 +11 +-10 +10 +-12 +10 +-11 +11 +-9 +11 +-10 +10 +-10 +11 +-10 +8 +-9 +10 +-11 +11 +-10 +12 +-10 +10 +-9 +11 +-9 +10 +-11 +14 +10 +-16 +11 +-12 +9 +-11 +8 +-11 +9 +-11 +9 +-10 +9 +-10 +10 +-10 +9 +-10 +9 +-10 +10 +-10 +11 +-9 +10 +-9 +9 +-9 +9 +-10 +10 +-8 +10 +-10 +12 +-9 +9 +-9 +12 +-11 +9 +-9 +9 +-9 +9 +-9 +12 +-10 +9 +-10 +10 +-10 +9 +-9 +9 +-9 +12 +-11 +9 +-11 +10 +-11 +9 +-13 +-9 +13 +-8 +8 +-10 +11 +-9 +10 +-10 +11 +-10 +11 +-8 +12 +-8 +12 +-9 +12 +-8 +10 +-9 +11 +-9 +10 +-9 +10 +-9 +10 +-9 +10 +-11 +11 +-10 +10 +-11 +10 +-11 +10 +-10 +10 +-10 +9 +-9 +10 +-11 +11 +-10 +11 +-9 +11 +-10 +13 +-10 +10 +-8 +12 +-9 +12 +-10 +11 +-11 +12 +-11 +10 +-8 +9 +-11 +9 +-10 +10 +-11 +10 +-11 +10 +-10 +9 +-10 +12 +-10 +11 +-10 +10 +-11 +8 +-10 +10 +-9 +10 +-10 +9 +-11 +10 +-10 +9 +-10 +11 +-10 +11 +-10 +11 +-10 +9 +-10 +9 +-11 +9 +-10 +11 +-10 +11 +-9 +11 +-9 +11 +-9 +10 +-9 +11 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +12 +-10 +10 +-10 +10 +-10 +12 +-9 +9 +-10 +11 +-11 +11 +-9 +9 +-11 +10 +-12 +11 +-9 +9 +-11 +9 +-10 +9 +-10 +10 +-10 +11 +-10 +9 +-9 +14 +9 +-15 +11 +-11 +9 +-10 +10 +-9 +11 +-9 +9 +-9 +11 +-9 +11 +-10 +11 +-11 +9 +-10 +10 +-11 +10 +-9 +10 +-10 +9 +-9 +10 +-11 +10 +-10 +9 +-10 +10 +-10 +10 +-9 +10 +-9 +10 +-8 +9 +-9 +9 +-9 +10 +-11 +9 +-9 +10 +-9 +9 +-10 +9 +-10 +12 +-10 +10 +-11 +10 +-9 +10 +-13 +-7 +13 +-8 +10 +-9 +11 +-9 +10 +-9 +10 +-8 +10 +-8 +9 +-9 +10 +-11 +11 +-9 +11 +-9 +11 +-10 +9 +-11 +12 +-9 +10 +-10 +10 +-8 +14 +11 +-14 +12 +-11 +9 +-9 +10 +-11 +10 +-11 +10 +-10 +9 +-10 +11 +-10 +11 +-11 +11 +-11 +10 +-9 +9 +-9 +9 +-10 +11 +-10 +10 +-9 +11 +-10 +-9 +14 +-8 +11 +-8 +9 +-8 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-9 +11 +-10 +11 +-11 +11 +-9 +11 +-8 +11 +-8 +12 +-10 +12 +-11 +9 +-9 +11 +-9 +8 +-12 +11 +-9 +12 +-11 +10 +-8 +11 +-10 +12 +-10 +10 +-8 +9 +-10 +10 +-9 +10 +-9 +12 +-10 +10 +-9 +10 +-11 +12 +-11 +11 +-11 +10 +-10 +9 +-11 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +10 +-11 +12 +-9 +8 +-8 +12 +-10 +11 +-10 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +9 +-9 +12 +-10 +12 +-9 +10 +-10 +12 +-10 +10 +-11 +11 +-10 +10 +-11 +11 +-11 +11 +-12 +10 +-9 +9 +-9 +9 +-11 +9 +-8 +10 +-9 +11 +-11 +10 +-8 +10 +-9 +10 +-9 +10 +-11 +10 +-10 +10 +-11 +11 +-8 +9 +-9 +10 +-10 +11 +-9 +12 +-9 +11 +-11 +13 +-9 +11 +-9 +12 +-10 +10 +-9 +10 +-10 +12 +-10 +11 +-10 +13 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-10 +8 +-10 +11 +-9 +12 +-10 +10 +-10 +12 +-10 +10 +-10 +10 +-10 +12 +-10 +11 +-10 +10 +-10 +9 +-7 +9 +-10 +11 +-9 +12 +-11 +10 +-11 +9 +-11 +12 +-11 +10 +-10 +10 +-10 +8 +-9 +11 +-10 +10 +-11 +11 +-9 +11 +-10 +12 +-10 +11 +-11 +11 +-9 +9 +-10 +11 +-10 +8 +-11 +11 +-8 +9 +-10 +12 +-11 +11 +-10 +10 +-10 +10 +-11 +9 +-9 +9 +-11 +13 +-9 +9 +-11 +11 +-10 +12 +-9 +11 +-10 +10 +-11 +10 +-11 +10 +-9 +10 +-11 +11 +-11 +12 +-10 +9 +-10 +11 +-9 +11 +-8 +10 +-11 +11 +-10 +10 +-8 +11 +-10 +12 +-11 +12 +-9 +11 +-10 +11 +-11 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +9 +-10 +9 +-10 +9 +-9 +11 +-12 +11 +-12 +9 +-11 +10 +-11 +10 +-10 +10 +-10 +9 +-8 +9 +-12 +11 +-9 +11 +-11 +11 +-11 +10 +-11 +12 +-10 +11 +-10 +9 +-10 +11 +-10 +10 +-10 +11 +-9 +9 +-9 +10 +-10 +10 +-10 +10 +-11 +11 +-9 +11 +-10 +9 +-10 +11 +-10 +11 +-10 +13 +-10 +10 +-9 +9 +-9 +10 +-9 +11 +-11 +11 +-10 +11 +-8 +9 +-10 +10 +-10 +11 +-9 +11 +-10 +11 +-9 +13 +-9 +11 +-11 +12 +-9 +9 +-12 +12 +-10 +12 +-11 +12 +-10 +10 +-10 +11 +-9 +11 +-12 +10 +-10 +11 +-9 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +12 +-11 +12 +-10 +11 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-11 +10 +-11 +10 +-9 +8 +-11 +12 +-10 +10 +-9 +8 +-9 +13 +-13 +11 +-10 +11 +-11 +9 +-10 +10 +-11 +12 +-9 +12 +-10 +10 +-10 +10 +-10 +12 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +9 +-10 +11 +-11 +11 +-11 +10 +-10 +11 +-9 +8 +-10 +11 +-8 +12 +-11 +11 +-10 +10 +-8 +9 +-10 +10 +-9 +8 +-9 +10 +-10 +12 +-10 +10 +-10 +12 +-10 +10 +-9 +10 +-9 +9 +-9 +10 +-11 +11 +-11 +10 +-10 +9 +-10 +11 +-11 +11 +-10 +10 +-11 +12 +-10 +11 +-10 +12 +-12 +11 +-11 +10 +-10 +9 +-11 +10 +-10 +11 +-9 +11 +-10 +9 +-9 +11 +-9 +11 +-10 +10 +-9 +11 +-10 +12 +-9 +12 +-9 +10 +-10 +11 +-11 +9 +-10 +9 +-10 +11 +-11 +12 +-11 +11 +-11 +9 +-10 +9 +-11 +11 +-11 +12 +-9 +10 +-11 +10 +-10 +11 +-11 +10 +-9 +10 +-9 +9 +-10 +12 +-10 +12 +-10 +10 +-10 +10 +-10 +12 +-10 +11 +-10 +10 +-10 +12 +-10 +11 +-8 +11 +-11 +11 +-9 +12 +-10 +10 +-10 +12 +-9 +10 +-9 +10 +-10 +10 +-11 +10 +-10 +10 +-10 +11 +-11 +11 +-11 +9 +-10 +12 +-11 +10 +-8 +10 +-8 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-11 +9 +-9 +9 +-12 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-10 +10 +-11 +12 +-10 +9 +-11 +12 +-10 +10 +-10 +9 +-11 +12 +-10 +11 +-8 +9 +-10 +10 +-11 +10 +-10 +10 +-10 +12 +-10 +9 +-10 +12 +-13 +13 +-9 +9 +-11 +11 +-9 +10 +-9 +11 +-10 +9 +-10 +10 +-10 +11 +-9 +8 +-11 +10 +-11 +10 +-11 +10 +-10 +8 +-9 +10 +-10 +12 +-9 +10 +-9 +12 +-10 +12 +-9 +12 +-10 +11 +-10 +12 +-10 +9 +-10 +11 +-9 +11 +-9 +11 +-9 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +11 +-11 +10 +-10 +11 +-10 +10 +-10 +9 +-10 +9 +-9 +10 +-10 +12 +-10 +10 +-11 +12 +-9 +10 +-9 +10 +-10 +11 +-11 +10 +-9 +11 +-9 +11 +-11 +11 +-11 +11 +-9 +10 +-9 +10 +-9 +11 +-10 +9 +-9 +11 +-9 +12 +-11 +10 +-9 +10 +-10 +11 +-10 +11 +-10 +11 +-11 +12 +-10 +10 +-10 +10 +-12 +12 +-10 +11 +-11 +11 +-10 +10 +-10 +11 +-10 +11 +-9 +10 +-11 +9 +-10 +11 +-10 +11 +-11 +10 +-9 +10 +-11 +11 +-9 +11 +-10 +11 +-8 +11 +-9 +11 +-9 +11 +-10 +12 +-11 +10 +-9 +10 +-11 +11 +-9 +10 +-10 +9 +-11 +10 +-10 +9 +-9 +10 +-10 +11 +-12 +10 +-7 +7 +-11 +10 +-11 +10 +-10 +9 +-10 +10 +-10 +10 +-10 +11 +-10 +12 +-10 +9 +-10 +9 +-10 +10 +-9 +12 +-10 +14 +11 +-15 +10 +-11 +9 +-10 +9 +-10 +9 +-11 +9 +-11 +9 +-10 +11 +-9 +10 +-10 +11 +-11 +10 +-9 +9 +-8 +10 +-9 +10 +-9 +10 +-10 +9 +-10 +10 +-9 +10 +-9 +9 +-9 +9 +-9 +11 +-11 +9 +-9 +9 +-11 +9 +-10 +9 +-9 +8 +-10 +10 +-11 +9 +-10 +10 +-9 +10 +-10 +9 +-10 +9 +-11 +11 +-11 +10 +-9 +8 +-9 +11 +-9 +9 +-9 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-9 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +12 +-6 +9 +-13 +-6 +15 +-7 +11 +-9 +12 +-8 +12 +-9 +11 +-9 +11 +-9 +12 +-9 +10 +-10 +12 +-9 +12 +-10 +11 +-9 +12 +-9 +11 +-10 +12 +-10 +10 +-9 +9 +-8 +11 +-10 +12 +-10 +10 +-10 +10 +-11 +11 +-10 +10 +-11 +11 +-9 +10 +-10 +10 +-10 +11 +-11 +10 +-11 +10 +-10 +9 +-9 +11 +-10 +11 +-10 +11 +-11 +12 +-10 +9 +-10 +11 +-9 +11 +-11 +10 +-10 +11 +-11 +9 +-9 +10 +-11 +11 +-9 +10 +-9 +12 +-9 +10 +-9 +9 +-9 +11 +-9 +10 +-9 +12 +10 +-15 +11 +-11 +10 +-11 +9 +-10 +9 +-10 +9 +-11 +8 +-10 +8 +-11 +9 +-12 +10 +-10 +8 +-11 +10 +-9 +10 +-10 +12 +-10 +12 +-8 +8 +-9 +12 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-9 +10 +-11 +9 +-9 +9 +-11 +10 +-10 +10 +-7 +8 +-9 +10 +-8 +10 +-9 +10 +-10 +11 +-9 +11 +-13 +-6 +13 +-8 +10 +-8 +11 +-8 +8 +-9 +12 +-8 +10 +-9 +11 +-9 +10 +-9 +11 +-11 +12 +-11 +11 +-10 +9 +-10 +11 +-11 +11 +-9 +10 +-10 +10 +-10 +9 +-9 +10 +-11 +10 +-10 +11 +-10 +11 +-11 +8 +-11 +10 +-10 +11 +-9 +9 +-8 +9 +-10 +12 +-10 +11 +-9 +10 +-9 +9 +-9 +8 +-10 +10 +-9 +11 +-9 +8 +-9 +9 +-9 +11 +-10 +11 +-10 +11 +-12 +13 +-9 +10 +-9 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-9 +8 +-10 +10 +-11 +9 +-12 +11 +-12 +11 +-10 +12 +-8 +9 +-9 +12 +-9 +10 +-9 +10 +-9 +11 +-10 +11 +-10 +12 +-9 +12 +-9 +10 +-9 +10 +-9 +13 +9 +-15 +11 +-11 +8 +-11 +11 +-11 +10 +-9 +10 +-10 +10 +-10 +9 +-11 +11 +-10 +10 +-10 +11 +-11 +10 +-11 +11 +-10 +10 +-11 +11 +-9 +8 +-13 +-8 +15 +-8 +11 +-9 +10 +-8 +12 +-10 +11 +-9 +12 +-8 +12 +-9 +12 +-10 +10 +-11 +11 +-10 +10 +-9 +11 +-11 +10 +-10 +10 +-11 +10 +-9 +11 +-11 +10 +-10 +9 +-11 +10 +-9 +11 +-10 +10 +-11 +10 +-11 +10 +-9 +8 +-11 +11 +-10 +10 +-11 +11 +-9 +10 +-9 +11 +-11 +12 +-10 +11 +-10 +10 +-8 +10 +-10 +11 +-10 +11 +-9 +7 +-12 +12 +-8 +9 +-9 +10 +-9 +12 +-10 +10 +-8 +11 +-9 +11 +-10 +9 +-10 +10 +-10 +10 +-9 +11 +-10 +14 +10 +-13 +11 +-11 +10 +-10 +10 +-11 +9 +-11 +9 +-10 +9 +-11 +10 +-10 +10 +-11 +9 +-10 +9 +-11 +9 +-10 +11 +-10 +9 +-10 +9 +-10 +9 +-11 +10 +-10 +11 +-10 +9 +-9 +9 +-8 +9 +-10 +10 +-9 +9 +-9 +10 +-9 +11 +-10 +9 +-8 +8 +-11 +9 +-10 +11 +-9 +11 +-8 +11 +-8 +10 +-11 +-7 +15 +-7 +10 +-9 +11 +-8 +10 +-11 +11 +-9 +10 +-10 +13 +-10 +11 +-9 +10 +-10 +9 +-8 +11 +-9 +10 +-8 +10 +-10 +11 +-9 +12 +-9 +11 +-9 +11 +-10 +11 +-9 +11 +-12 +11 +-9 +9 +-8 +12 +-11 +11 +-10 +12 +-9 +10 +-10 +12 +-9 +9 +-10 +11 +-10 +9 +-10 +9 +-9 +11 +-11 +10 +-10 +10 +-10 +9 +-11 +11 +-10 +9 +-11 +9 +-11 +9 +-12 +11 +-11 +10 +-10 +10 +-10 +10 +-11 +12 +-10 +9 +-10 +11 +-11 +11 +-9 +11 +-9 +12 +-7 +10 +-9 +12 +-10 +10 +-9 +11 +-10 +13 +-9 +11 +-11 +10 +-10 +10 +-10 +10 +-11 +13 +-11 +10 +-11 +11 +-9 +10 +-11 +9 +-12 +11 +-9 +8 +-10 +10 +-10 +11 +-9 +10 +-10 +11 +-9 +11 +-9 +12 +-12 +12 +-10 +10 +-10 +10 +-11 +9 +-11 +10 +-11 +10 +-10 +10 +-9 +10 +-11 +10 +-10 +9 +-9 +11 +-9 +10 +-11 +10 +-10 +9 +-12 +13 +-10 +10 +-10 +11 +-9 +9 +-11 +10 +-8 +10 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +12 +12 +-14 +9 +-12 +11 +-10 +11 +-11 +10 +-11 +9 +-11 +8 +-11 +10 +-10 +10 +-8 +10 +-10 +11 +-10 +10 +-10 +10 +-9 +10 +-10 +9 +-10 +9 +-9 +11 +-9 +10 +-9 +9 +-11 +13 +-11 +10 +-9 +10 +-11 +9 +-11 +9 +-10 +10 +-10 +9 +-9 +9 +-10 +10 +-9 +11 +-9 +11 +-10 +10 +-7 +11 +-12 +-6 +13 +-7 +11 +-8 +9 +-7 +10 +-9 +9 +-9 +9 +-9 +9 +-10 +10 +-10 +12 +-9 +10 +-8 +8 +-11 +10 +-9 +10 +-9 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-11 +12 +-7 +8 +-10 +11 +-11 +12 +-10 +9 +-10 +11 +-9 +11 +-11 +10 +-10 +10 +-10 +13 +-11 +12 +-10 +11 +-10 +12 +-10 +10 +-10 +11 +-10 +10 +-9 +12 +-9 +12 +-11 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +9 +-8 +11 +-11 +12 +-11 +11 +-10 +11 +-11 +10 +-10 +11 +-10 +11 +-9 +11 +-9 +11 +-9 +10 +-11 +13 +-12 +12 +-11 +11 +-9 +10 +-10 +11 +-11 +10 +-9 +10 +-10 +9 +-10 +10 +-9 +10 +-10 +11 +-12 +9 +-11 +11 +-11 +10 +-10 +10 +-10 +9 +-10 +10 +-9 +12 +-11 +11 +-10 +9 +-10 +10 +-9 +9 +-11 +10 +-11 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +14 +10 +-15 +10 +-12 +8 +-10 +10 +-11 +8 +-11 +8 +-11 +9 +-10 +9 +-11 +8 +-9 +8 +-9 +8 +-11 +10 +-10 +9 +-10 +9 +-9 +10 +-10 +12 +-10 +9 +-9 +11 +-9 +10 +-9 +9 +-10 +9 +-10 +9 +-10 +12 +-11 +11 +-10 +9 +-11 +11 +-9 +8 +-10 +9 +-9 +9 +-10 +11 +-10 +11 +-10 +11 +-13 +-8 +15 +-9 +10 +-9 +11 +-9 +10 +-9 +12 +-8 +10 +-8 +10 +-9 +12 +-10 +11 +-10 +11 +-8 +10 +-9 +11 +-9 +11 +-10 +11 +-12 +9 +-10 +12 +11 +-15 +10 +-10 +10 +-10 +12 +-12 +10 +-11 +9 +-10 +9 +-9 +8 +-11 +9 +-12 +10 +-9 +8 +-8 +8 +-9 +10 +-10 +10 +-10 +10 +-9 +10 +-13 +-6 +16 +-8 +11 +-7 +12 +-9 +12 +-8 +12 +-8 +10 +-8 +11 +-9 +11 +-9 +12 +-10 +11 +-10 +9 +-10 +10 +-8 +9 +-10 +12 +-10 +11 +-9 +10 +-10 +9 +-11 +11 +-10 +8 +-10 +10 +-9 +10 +-11 +11 +-10 +9 +-9 +10 +-10 +11 +-9 +8 +-10 +12 +-10 +9 +-9 +10 +-11 +12 +-10 +11 +-8 +11 +-9 +10 +-10 +11 +-10 +10 +-11 +10 +-10 +11 +-10 +9 +-11 +10 +-10 +10 +-10 +12 +-9 +9 +-10 +11 +-9 +10 +-11 +10 +-10 +12 +-10 +12 +-11 +10 +-11 +11 +-11 +12 +-10 +10 +-12 +11 +-10 +10 +-9 +10 +-9 +11 +-11 +11 +-10 +9 +-10 +11 +-12 +9 +-10 +11 +-11 +9 +-10 +10 +-9 +11 +-9 +10 +-10 +11 +-11 +10 +-12 +8 +-10 +9 +-10 +12 +-10 +9 +-8 +11 +-10 +11 +-11 +10 +-8 +11 +-12 +11 +-11 +11 +-9 +9 +-9 +12 +-10 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +9 +-9 +10 +-10 +11 +-9 +10 +-10 +11 +-10 +9 +-11 +12 +-9 +12 +-9 +10 +-10 +11 +-11 +11 +-10 +11 +-10 +9 +-10 +10 +-11 +11 +-11 +10 +-10 +9 +-11 +9 +-10 +10 +-11 +10 +-11 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-9 +12 +-9 +12 +-9 +14 +-10 +11 +-9 +12 +-10 +13 +-9 +11 +-8 +12 +-9 +13 +-8 +13 +-8 +10 +-9 +11 +-9 +12 +-10 +11 +-9 +10 +-11 +10 +-12 +10 +-12 +9 +-12 +9 +-10 +10 +-10 +9 +-10 +8 +-10 +8 +-10 +10 +-11 +9 +-10 +10 +-10 +9 +-10 +12 +-11 +10 +-10 +11 +-8 +9 +-11 +11 +-11 +10 +-9 +9 +-11 +14 +-11 +10 +-9 +10 +-9 +11 +-8 +9 +-11 +12 +-10 +10 +-11 +10 +-11 +10 +-10 +9 +-8 +11 +-11 +11 +-11 +11 +-10 +10 +-11 +12 +-10 +11 +-11 +10 +-10 +11 +-9 +11 +-10 +11 +-11 +10 +-9 +11 +-11 +12 +-11 +11 +-10 +9 +-9 +10 +-9 +10 +-10 +10 +-12 +12 +-9 +10 +-11 +12 +-10 +10 +-9 +11 +-9 +11 +-10 +12 +-11 +9 +-9 +10 +-12 +12 +-11 +11 +-10 +9 +-11 +9 +-10 +10 +-10 +11 +-11 +11 +-9 +9 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-9 +10 +-10 +10 +-10 +12 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-12 +12 +-11 +10 +-9 +9 +-10 +10 +-11 +10 +-10 +9 +-9 +11 +-10 +10 +-8 +10 +-9 +10 +-9 +10 +-9 +12 +-9 +12 +-10 +12 +-8 +11 +-9 +11 +-10 +11 +-11 +10 +-11 +10 +-11 +11 +-10 +9 +-10 +10 +-11 +12 +-11 +11 +-10 +9 +-10 +11 +-11 +11 +-10 +10 +-10 +12 +-11 +11 +-9 +10 +-11 +11 +-10 +11 +-10 +10 +-10 +12 +-10 +12 +-10 +12 +-10 +10 +-9 +12 +-8 +12 +-9 +11 +-9 +10 +-9 +11 +-9 +10 +-9 +11 +-11 +10 +-10 +10 +-10 +9 +-10 +10 +-12 +11 +-10 +10 +-9 +10 +-9 +9 +-9 +12 +-8 +10 +-10 +12 +-10 +10 +-10 +11 +-10 +9 +-11 +11 +-11 +11 +-10 +10 +-10 +11 +-9 +12 +-11 +10 +-11 +11 +-10 +11 +-11 +10 +-11 +12 +-9 +11 +-10 +11 +-11 +10 +-10 +9 +-9 +9 +-11 +10 +-11 +10 +-11 +11 +-11 +9 +-11 +11 +-11 +9 +-11 +8 +-10 +11 +-10 +12 +-11 +11 +-11 +12 +-9 +10 +-9 +10 +-10 +12 +-10 +12 +-10 +11 +-11 +11 +-10 +10 +-11 +10 +-11 +11 +-8 +11 +-10 +12 +-11 +12 +-10 +10 +-9 +11 +-10 +11 +-10 +9 +-9 +12 +-11 +9 +-11 +8 +-10 +10 +-11 +13 +-10 +10 +-9 +10 +-9 +11 +-8 +10 +-10 +11 +-9 +11 +-9 +11 +-9 +10 +-10 +11 +-9 +11 +-10 +12 +-9 +12 +-10 +10 +-9 +11 +-10 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +12 +-12 +9 +-11 +10 +-11 +10 +-11 +9 +-12 +11 +-11 +11 +-11 +9 +-9 +10 +-11 +10 +-10 +11 +-10 +12 +-9 +10 +-10 +12 +-10 +10 +-8 +10 +-9 +12 +-11 +10 +-11 +10 +-9 +11 +-11 +9 +-9 +9 +-11 +10 +-10 +13 +-10 +10 +-10 +11 +-9 +11 +-9 +9 +-9 +12 +-9 +7 +-10 +12 +-11 +10 +-10 +11 +-10 +11 +-10 +12 +-11 +11 +-9 +9 +-10 +10 +-10 +13 +-11 +11 +-9 +8 +-11 +12 +-11 +9 +-11 +12 +-11 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +11 +-9 +10 +-9 +9 +-11 +10 +-10 +11 +-11 +9 +-11 +12 +-10 +10 +-11 +12 +-10 +13 +-10 +10 +-11 +9 +-12 +12 +-11 +10 +-11 +9 +-11 +10 +-10 +10 +-11 +11 +-11 +10 +-9 +12 +-10 +12 +-8 +11 +-9 +11 +-10 +11 +-10 +13 +-9 +11 +-9 +12 +-10 +10 +-10 +12 +-9 +11 +-9 +9 +-11 +10 +-10 +9 +-10 +10 +-10 +10 +-11 +11 +-10 +9 +-10 +11 +-10 +11 +-11 +9 +-11 +9 +-9 +11 +-9 +11 +-11 +10 +-11 +9 +-11 +11 +-11 +9 +-10 +11 +-11 +10 +-10 +12 +-12 +10 +-10 +9 +-10 +11 +-11 +10 +-11 +11 +-10 +9 +-11 +10 +-10 +11 +-10 +11 +-10 +10 +-9 +10 +-9 +12 +-10 +13 +-9 +10 +-10 +10 +-10 +10 +-8 +10 +-9 +12 +-10 +11 +-11 +9 +-11 +12 +-10 +7 +-10 +11 +-11 +12 +-10 +11 +-10 +11 +-12 +9 +-9 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-10 +11 +-9 +11 +-11 +11 +-10 +12 +-10 +11 +-10 +10 +-9 +13 +-8 +11 +-10 +11 +-9 +9 +-10 +15 +11 +-14 +10 +-11 +10 +-10 +9 +-11 +10 +-11 +11 +-12 +10 +-9 +9 +-11 +12 +-11 +12 +-11 +9 +-10 +9 +-9 +9 +-10 +9 +-9 +9 +-10 +10 +-9 +9 +-10 +8 +-10 +10 +-10 +9 +-10 +9 +-10 +10 +-11 +10 +-11 +9 +-10 +10 +-9 +9 +-9 +9 +-10 +10 +-9 +11 +-9 +8 +-9 +9 +-10 +9 +-10 +11 +-10 +9 +-9 +9 +-10 +8 +-9 +9 +-9 +10 +-10 +10 +-9 +8 +-10 +9 +-9 +10 +-11 +9 +-10 +10 +-9 +11 +-9 +9 +-7 +9 +-9 +10 +-13 +-6 +14 +-9 +11 +-10 +11 +-8 +10 +-8 +12 +-8 +11 +-9 +11 +-8 +13 +-10 +12 +-9 +10 +-9 +12 +-8 +9 +-11 +11 +-10 +10 +-10 +9 +-10 +11 +-9 +11 +-10 +10 +-9 +11 +-10 +10 +-11 +11 +-11 +10 +-10 +11 +-10 +12 +-11 +11 +-11 +12 +-9 +10 +-10 +11 +-9 +12 +-11 +10 +-9 +11 +-11 +11 +-11 +9 +-11 +10 +-11 +12 +-9 +11 +-11 +11 +-10 +12 +-9 +11 +-10 +11 +-9 +10 +-9 +12 +-11 +10 +-11 +12 +-10 +10 +-9 +10 +-10 +10 +-11 +15 +10 +-16 +10 +-10 +9 +-11 +9 +-11 +8 +-10 +8 +-11 +9 +-10 +9 +-9 +10 +-11 +9 +-10 +11 +-9 +8 +-11 +10 +-10 +8 +-9 +9 +-10 +11 +-9 +10 +-9 +11 +-10 +11 +-8 +10 +-10 +11 +-11 +9 +-9 +10 +-11 +9 +-9 +9 +-9 +10 +-9 +9 +-10 +11 +-8 +9 +-10 +10 +-9 +10 +-9 +10 +-13 +-7 +13 +-8 +12 +-8 +11 +-9 +10 +-9 +11 +-9 +11 +-9 +10 +-9 +9 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +9 +-8 +11 +-10 +10 +-11 +10 +-10 +10 +-11 +9 +-9 +10 +-9 +11 +-9 +10 +-9 +11 +-12 +11 +-11 +10 +-11 +10 +-9 +10 +-10 +10 +-11 +10 +-9 +10 +-9 +11 +-10 +12 +-10 +10 +-10 +11 +-11 +10 +-10 +10 +-9 +12 +-10 +11 +-9 +10 +-11 +11 +-11 +11 +-10 +11 +-10 +12 +-8 +8 +-10 +13 +-9 +11 +-9 +10 +-10 +11 +-9 +9 +-9 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +12 +-12 +10 +-11 +10 +-10 +10 +-11 +11 +-11 +10 +-11 +12 +-9 +10 +-11 +10 +-11 +11 +-10 +9 +-11 +13 +10 +-16 +10 +-14 +10 +-11 +6 +-10 +10 +-11 +10 +-11 +11 +-8 +9 +-9 +8 +-10 +9 +-10 +9 +-10 +10 +-10 +11 +-9 +9 +-10 +9 +-11 +10 +-12 +-9 +14 +-9 +10 +-9 +10 +-10 +11 +-9 +10 +-9 +11 +-9 +12 +-9 +11 +-8 +10 +-9 +12 +-9 +11 +-9 +10 +-9 +9 +-10 +11 +-9 +10 +-10 +10 +-12 +13 +-11 +12 +-11 +11 +-9 +9 +-11 +12 +-11 +9 +-9 +10 +-9 +9 +-12 +11 +-10 +11 +-10 +9 +-10 +10 +-10 +10 +-9 +10 +-10 +11 +-10 +10 +-11 +11 +-8 +11 +-10 +11 +-9 +12 +-9 +11 +-9 +9 +-10 +12 +-12 +10 +-10 +12 +-10 +9 +-9 +10 +-11 +10 +-10 +9 +-10 +9 +-10 +11 +-9 +14 +11 +-15 +10 +-11 +10 +-12 +7 +-8 +8 +-12 +10 +-10 +12 +-9 +11 +-10 +9 +-7 +8 +-11 +10 +-9 +9 +-10 +9 +-10 +11 +-9 +10 +-8 +11 +-10 +11 +-7 +10 +-8 +10 +-9 +10 +-9 +12 +-10 +10 +-9 +10 +-9 +9 +-10 +10 +-10 +9 +-10 +9 +-10 +10 +-11 +9 +-8 +7 +-10 +9 +-9 +11 +-14 +-8 +14 +-8 +10 +-8 +9 +-9 +10 +-10 +10 +-9 +11 +-11 +9 +-10 +10 +-10 +11 +-11 +9 +-10 +9 +-11 +10 +-8 +11 +-9 +10 +-9 +10 +-10 +12 +-8 +9 +-10 +11 +-9 +10 +-9 +10 +-10 +10 +-10 +11 +-10 +9 +-10 +9 +-10 +12 +-10 +11 +-10 +10 +-11 +10 +-9 +10 +-10 +11 +-12 +10 +-12 +9 +-8 +8 +-12 +12 +-10 +11 +-10 +10 +-10 +9 +-11 +12 +-9 +10 +-9 +10 +-11 +11 +-10 +11 +-11 +11 +-10 +11 +-10 +11 +-9 +10 +-9 +12 +-9 +10 +-8 +11 +-8 +10 +-8 +12 +-7 +9 +-9 +11 +-10 +12 +-11 +11 +-10 +12 +-9 +11 +-9 +11 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-10 +11 +-10 +7 +-11 +11 +-10 +10 +-9 +10 +-12 +11 +-10 +10 +-11 +11 +-11 +10 +-11 +10 +-11 +10 +-10 +9 +-10 +10 +-9 +9 +-10 +11 +-10 +11 +-10 +10 +-11 +11 +-9 +10 +-11 +10 +-10 +12 +-10 +11 +-11 +11 +-10 +11 +-9 +12 +-10 +11 +-12 +13 +-9 +12 +-9 +12 +-10 +11 +-10 +10 +-8 +9 +-11 +12 +11 +-16 +10 +-11 +8 +-11 +8 +-11 +9 +-11 +8 +-11 +11 +-9 +9 +-10 +11 +-12 +11 +-9 +10 +-9 +10 +-9 +10 +-10 +10 +-11 +10 +-11 +9 +-9 +10 +-9 +7 +-11 +10 +-11 +9 +-10 +9 +-10 +10 +-10 +9 +-9 +10 +-9 +9 +-10 +11 +-10 +10 +-8 +9 +-9 +10 +-8 +10 +-7 +10 +-10 +10 +-12 +-9 +13 +-7 +11 +-11 +10 +-10 +11 +-9 +10 +-9 +11 +-9 +10 +-8 +11 +-9 +11 +-9 +13 +-8 +11 +-10 +11 +-9 +9 +-10 +10 +-10 +9 +-10 +10 +-11 +10 +-10 +9 +-11 +13 +-9 +11 +-8 +10 +-8 +10 +-8 +11 +-9 +11 +-10 +10 +-10 +10 +-10 +13 +-11 +9 +-10 +9 +-10 +11 +-9 +8 +-9 +10 +-11 +12 +-12 +11 +-10 +12 +-9 +9 +-12 +12 +-9 +10 +-9 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +10 +-10 +9 +-11 +11 +-10 +9 +-10 +9 +-10 +13 +-11 +10 +-10 +9 +-11 +10 +-9 +11 +-11 +11 +-9 +11 +-11 +13 +-10 +12 +-10 +10 +-10 +10 +-8 +10 +-10 +9 +-11 +12 +-10 +11 +-8 +8 +-10 +11 +-11 +10 +-9 +12 +-11 +10 +-10 +12 +-11 +12 +-10 +10 +-11 +10 +-10 +12 +-9 +9 +-11 +12 +-9 +12 +-9 +11 +-10 +11 +-9 +12 +-11 +12 +-10 +14 +10 +-16 +11 +-12 +10 +-10 +9 +-12 +10 +-11 +9 +-9 +10 +-10 +9 +-11 +9 +-10 +10 +-10 +9 +-10 +9 +-10 +10 +-10 +9 +-10 +9 +-9 +8 +-10 +9 +-9 +9 +-10 +8 +-10 +10 +-9 +11 +-8 +10 +-10 +11 +-10 +10 +-10 +11 +-8 +10 +-9 +10 +-8 +9 +-8 +10 +-9 +11 +-9 +12 +-12 +8 +-12 +-8 +13 +-10 +9 +-10 +10 +-9 +12 +-9 +10 +-11 +10 +-10 +10 +-9 +10 +-9 +11 +-9 +11 +-8 +12 +-9 +12 +-9 +10 +-10 +10 +-9 +9 +-10 +15 +11 +-14 +11 +-11 +11 +-10 +10 +-9 +9 +-10 +11 +-9 +9 +-11 +10 +-11 +9 +-10 +9 +-10 +8 +-11 +10 +-10 +8 +-9 +9 +-9 +10 +-10 +11 +-14 +-8 +14 +-7 +10 +-12 +11 +-9 +11 +-9 +9 +-9 +10 +-10 +10 +-11 +10 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-9 +10 +-9 +11 +-9 +11 +-10 +10 +-9 +9 +-9 +10 +-11 +10 +-9 +10 +-9 +9 +-9 +10 +-9 +10 +-11 +11 +-8 +8 +-9 +11 +-9 +9 +-9 +11 +-11 +10 +-10 +11 +-11 +9 +-10 +13 +-10 +10 +-11 +11 +-11 +11 +-10 +11 +-10 +10 +-9 +12 +-12 +9 +-9 +10 +-10 +11 +-12 +11 +-9 +10 +-10 +11 +-9 +9 +-11 +11 +-8 +10 +-11 +12 +-9 +11 +-10 +11 +-10 +10 +-10 +11 +-8 +9 +-10 +12 +-10 +11 +-10 +11 +-10 +10 +-10 +9 +-9 +9 +-10 +12 +-9 +8 +-11 +11 +-10 +10 +-11 +10 +-10 +9 +-11 +11 +-11 +9 +-9 +11 +-10 +10 +-10 +11 +-9 +12 +-10 +8 +-9 +10 +-10 +11 +-9 +12 +-9 +10 +-8 +10 +-10 +11 +-10 +11 +-10 +10 +-9 +9 +-10 +10 +-10 +9 +-11 +10 +-11 +12 +-8 +9 +-11 +11 +-10 +10 +-10 +10 +-11 +11 +-9 +8 +-11 +11 +-11 +12 +-9 +9 +-10 +11 +-10 +10 +-11 +10 +-9 +11 +-8 +9 +-10 +12 +-11 +10 +-9 +10 +-10 +9 +-11 +12 +-10 +11 +-10 +11 +-10 +10 +-11 +11 +-8 +8 +-9 +12 +-8 +11 +-9 +11 +-10 +12 +-10 +9 +-8 +10 +-10 +10 +-9 +10 +-10 +12 +-9 +11 +-10 +9 +-8 +11 +-11 +11 +-10 +11 +-9 +11 +-9 +11 +-10 +11 +-9 +8 +-10 +10 +-10 +9 +-11 +10 +-10 +9 +-10 +9 +-9 +9 +-10 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +11 +-11 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +9 +-10 +11 +-11 +12 +-10 +11 +-10 +9 +-11 +10 +-10 +10 +-10 +9 +-11 +9 +-12 +10 +-10 +9 +-10 +9 +-10 +10 +-10 +11 +-9 +11 +-11 +11 +-11 +11 +-11 +10 +-9 +10 +-9 +12 +-11 +11 +-11 +12 +-11 +10 +-11 +12 +-9 +13 +-10 +10 +-9 +12 +-10 +11 +-9 +11 +-8 +10 +-11 +12 +-11 +10 +-10 +11 +-10 +11 +-11 +9 +-10 +10 +-10 +10 +-10 +11 +-10 +9 +-12 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-10 +9 +-10 +9 +-11 +11 +-11 +11 +-10 +9 +-11 +11 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-9 +9 +-10 +10 +-10 +13 +-10 +11 +-10 +11 +-8 +9 +-11 +13 +-9 +10 +-9 +11 +-11 +11 +-10 +10 +-9 +9 +-10 +9 +-11 +11 +-11 +12 +-11 +11 +-8 +10 +-8 +12 +-9 +12 +-8 +12 +-9 +10 +-11 +14 +-11 +10 +-10 +12 +-10 +11 +-11 +11 +-9 +8 +-10 +10 +-10 +11 +-10 +10 +-10 +9 +-11 +12 +-11 +10 +-10 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +9 +-10 +10 +-9 +12 +-9 +10 +-10 +12 +-10 +10 +-9 +9 +-10 +10 +-9 +10 +-10 +10 +-10 +11 +-9 +11 +-10 +10 +-11 +12 +-10 +10 +-11 +11 +-10 +10 +-11 +11 +-8 +11 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-11 +13 +-10 +9 +-9 +10 +-9 +12 +-9 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-9 +9 +-9 +11 +-11 +8 +-10 +10 +-11 +10 +-9 +10 +-10 +11 +-10 +12 +-10 +11 +-9 +11 +-11 +13 +-11 +10 +-10 +8 +-9 +10 +-10 +10 +-10 +11 +-9 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +9 +-10 +14 +-10 +10 +-9 +11 +-9 +10 +-10 +11 +-9 +10 +-11 +11 +-9 +12 +-11 +10 +-11 +10 +-9 +10 +-11 +10 +-11 +11 +-12 +11 +-10 +12 +-11 +10 +-11 +12 +-9 +12 +-10 +10 +-11 +11 +-10 +9 +-9 +8 +-11 +11 +-10 +11 +-12 +11 +-10 +9 +-10 +11 +-10 +10 +-11 +12 +-10 +12 +-11 +9 +-10 +12 +-11 +11 +-9 +9 +-8 +10 +-10 +10 +-9 +8 +-7 +10 +-11 +11 +-11 +8 +-10 +10 +-11 +11 +-11 +9 +-10 +9 +-10 +9 +-12 +11 +-11 +9 +-9 +9 +-12 +9 +-10 +8 +-11 +10 +-9 +9 +-11 +10 +-9 +10 +-9 +11 +-9 +12 +-9 +13 +-10 +13 +-8 +9 +-10 +11 +-10 +10 +-10 +11 +-9 +11 +-10 +9 +-10 +9 +-9 +11 +-10 +12 +-9 +11 +-9 +11 +-9 +11 +-10 +12 +-9 +10 +-9 +12 +-9 +12 +-10 +10 +-11 +11 +-11 +10 +-11 +9 +-9 +11 +-12 +11 +-9 +10 +-11 +10 +-9 +10 +-11 +10 +-11 +10 +-10 +8 +-10 +11 +-11 +10 +-10 +9 +-11 +10 +-11 +10 +-10 +11 +-9 +10 +-11 +11 +-10 +11 +-12 +10 +-10 +9 +-11 +10 +-10 +11 +-10 +11 +-9 +9 +-10 +12 +-11 +12 +-11 +11 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-9 +10 +-11 +12 +-10 +10 +-9 +11 +-10 +12 +-10 +10 +-9 +12 +-11 +10 +-10 +10 +-9 +11 +-10 +10 +-9 +11 +-9 +11 +-11 +12 +-12 +11 +-11 +10 +-9 +9 +-11 +11 +-10 +10 +-12 +12 +-10 +9 +-11 +11 +-9 +11 +-8 +11 +-10 +12 +-10 +12 +-10 +10 +-10 +10 +-11 +11 +-9 +10 +-11 +11 +-10 +10 +-10 +9 +-11 +9 +-11 +12 +-9 +9 +-10 +12 +-10 +10 +-10 +10 +-9 +10 +-9 +11 +-9 +12 +-10 +11 +-10 +10 +-10 +11 +-8 +10 +-10 +12 +-11 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +12 +-11 +11 +-10 +10 +-9 +11 +-11 +10 +-10 +12 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-11 +9 +-9 +9 +-11 +15 +9 +-15 +11 +-10 +10 +-9 +11 +-10 +10 +-9 +9 +-9 +9 +-11 +11 +-10 +10 +-9 +10 +-10 +11 +-9 +9 +-9 +9 +-8 +7 +-10 +9 +-9 +8 +-11 +10 +-10 +9 +-9 +9 +-9 +8 +-11 +10 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-11 +10 +-8 +10 +-9 +10 +-10 +11 +-10 +9 +-9 +10 +-10 +9 +-9 +9 +-10 +10 +-9 +9 +-9 +10 +-9 +10 +-10 +10 +-9 +9 +-10 +9 +-9 +8 +-11 +9 +-9 +8 +-10 +10 +-10 +9 +-9 +8 +-9 +9 +-9 +10 +-13 +-5 +14 +-8 +12 +-8 +10 +-8 +10 +-9 +10 +-8 +9 +-9 +10 +-10 +10 +-9 +11 +-8 +10 +-9 +11 +-8 +11 +-9 +10 +-9 +11 +-9 +10 +-9 +10 +-9 +10 +-9 +10 +-9 +9 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-11 +10 +-11 +9 +-11 +8 +-11 +10 +-11 +10 +-9 +9 +-11 +8 +-11 +10 +-10 +9 +-10 +11 +-10 +10 +-9 +10 +-9 +11 +-10 +11 +-9 +13 +-11 +12 +-10 +10 +-8 +10 +-10 +11 +-9 +11 +-11 +11 +-9 +10 +-10 +10 +-11 +13 +-11 +13 +10 +-15 +12 +-13 +10 +-10 +9 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-8 +10 +-9 +10 +-10 +10 +-10 +11 +-10 +9 +-9 +10 +-11 +10 +-11 +10 +-10 +9 +-8 +9 +-10 +10 +-10 +11 +-9 +9 +-10 +10 +-9 +11 +-8 +10 +-9 +10 +-9 +10 +-8 +9 +-9 +9 +-9 +10 +-10 +11 +-9 +10 +-9 +9 +-12 +-8 +13 +-9 +10 +-10 +9 +-10 +10 +-10 +10 +-12 +10 +-10 +10 +-10 +10 +-11 +9 +-10 +10 +-10 +9 +-10 +9 +-11 +10 +-8 +7 +-11 +9 +-10 +10 +-11 +11 +-10 +10 +-10 +10 +-11 +10 +-9 +11 +-10 +11 +-10 +12 +-9 +11 +-9 +10 +-11 +12 +-8 +12 +-9 +10 +-10 +10 +-9 +11 +-9 +11 +-10 +11 +-9 +10 +-10 +10 +-11 +12 +-9 +11 +-11 +11 +-9 +10 +-10 +11 +-10 +10 +-9 +11 +-10 +12 +-10 +10 +-9 +10 +-9 +10 +-11 +11 +-11 +11 +-11 +10 +-11 +11 +-10 +11 +-12 +11 +-10 +11 +-10 +12 +-10 +12 +-11 +12 +-10 +11 +-10 +10 +-9 +10 +-11 +9 +-10 +11 +-10 +9 +-11 +11 +-11 +9 +-10 +12 +9 +-16 +10 +-12 +10 +-11 +9 +-10 +12 +-11 +9 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-9 +11 +-10 +11 +-8 +9 +-10 +10 +-9 +10 +-13 +-8 +14 +-8 +9 +-9 +12 +-9 +10 +-9 +11 +-9 +11 +-8 +11 +-10 +10 +-8 +11 +-10 +10 +-9 +11 +-9 +10 +-10 +12 +-11 +11 +-9 +11 +-10 +11 +-11 +12 +-10 +10 +-9 +12 +-10 +12 +-11 +10 +-10 +9 +-8 +11 +-10 +10 +-9 +11 +-8 +9 +-10 +12 +-12 +11 +-9 +9 +-10 +10 +-10 +10 +-12 +11 +-9 +11 +-11 +11 +-10 +10 +-10 +9 +-12 +10 +-10 +10 +-9 +9 +-10 +10 +-10 +11 +-10 +10 +-11 +12 +-10 +11 +-9 +9 +-12 +13 +-10 +10 +-11 +15 +10 +-16 +11 +-11 +10 +-10 +8 +-11 +10 +-10 +9 +-10 +10 +-11 +9 +-9 +9 +-11 +9 +-9 +11 +-10 +11 +-11 +11 +-11 +10 +-10 +9 +-9 +9 +-10 +10 +-9 +10 +-9 +12 +-10 +12 +-10 +9 +-10 +10 +-8 +9 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-8 +11 +-10 +8 +-9 +10 +-10 +9 +-10 +10 +-13 +-9 +13 +-9 +9 +-10 +9 +-10 +10 +-9 +11 +-10 +11 +-11 +10 +-11 +10 +-9 +11 +-8 +12 +-10 +10 +-8 +10 +-8 +11 +-9 +9 +-10 +12 +-10 +12 +-10 +10 +-9 +10 +-9 +10 +-9 +10 +-10 +12 +-9 +11 +-10 +11 +-10 +10 +-10 +11 +-11 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-9 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +10 +-9 +10 +-11 +11 +-10 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-10 +12 +-10 +12 +-9 +8 +-10 +10 +-10 +10 +-11 +10 +-10 +11 +-10 +10 +-12 +11 +-10 +9 +-10 +14 +-10 +11 +-10 +11 +-10 +11 +-9 +9 +-11 +11 +-11 +9 +-11 +10 +-10 +10 +-10 +9 +-11 +10 +-10 +9 +-11 +11 +-11 +9 +-11 +9 +-11 +10 +-11 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-12 +12 +-10 +11 +-10 +10 +-9 +12 +-10 +13 +-7 +9 +-9 +10 +-10 +10 +-10 +10 +-11 +12 +-10 +12 +-10 +11 +-9 +11 +-11 +12 +-11 +10 +-10 +10 +-9 +10 +-10 +11 +-9 +7 +-10 +10 +-11 +9 +-11 +13 +9 +-16 +10 +-13 +10 +-10 +8 +-9 +9 +-11 +13 +-11 +10 +-11 +10 +-11 +9 +-11 +9 +-9 +9 +-11 +10 +-10 +9 +-9 +10 +-10 +10 +-10 +10 +-11 +11 +-8 +9 +-9 +10 +-10 +11 +-10 +11 +-9 +10 +-8 +9 +-9 +10 +-9 +9 +-9 +11 +-10 +12 +-9 +11 +-8 +10 +-9 +11 +-10 +10 +-10 +10 +-13 +-7 +13 +-8 +10 +-10 +11 +-9 +13 +-8 +12 +-9 +11 +-9 +10 +-8 +11 +-8 +11 +-10 +12 +-10 +11 +-11 +10 +-10 +10 +-10 +10 +-9 +9 +-10 +10 +-11 +10 +-10 +10 +-10 +10 +-11 +10 +-8 +9 +-10 +11 +-11 +10 +-9 +11 +-9 +9 +-9 +10 +-10 +10 +-10 +11 +-10 +10 +-10 +12 +-9 +11 +-12 +11 +-9 +12 +-9 +10 +-10 +12 +-8 +12 +-9 +12 +-10 +11 +-9 +10 +-10 +11 +-11 +10 +-10 +10 +-11 +11 +-10 +9 +-11 +10 +-10 +11 +-11 +12 +-11 +10 +-9 +12 +-8 +9 +-10 +11 +-9 +10 +-10 +11 +-11 +10 +-9 +9 +-10 +10 +-9 +8 +-10 +10 +-9 +11 +-11 +11 +-9 +10 +-10 +10 +-11 +10 +-9 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +10 +-11 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +11 +-11 +11 +-10 +9 +-10 +11 +-11 +11 +-10 +11 +-10 +10 +-10 +14 +10 +-15 +10 +-10 +9 +-11 +9 +-12 +9 +-9 +10 +-10 +9 +-10 +9 +-10 +9 +-10 +10 +-12 +9 +-10 +9 +-10 +10 +-10 +10 +-9 +10 +-10 +8 +-10 +10 +-8 +11 +-10 +10 +-9 +9 +-9 +10 +-8 +10 +-9 +10 +-9 +10 +-10 +10 +-9 +10 +-9 +9 +-10 +12 +-9 +8 +-9 +9 +-10 +10 +-8 +10 +-12 +-7 +14 +-7 +11 +-9 +12 +-9 +11 +-9 +12 +-9 +11 +-9 +10 +-9 +10 +-10 +12 +-8 +10 +-9 +13 +-9 +12 +-9 +12 +-8 +11 +-10 +10 +-10 +13 +10 +-16 +11 +-10 +10 +-12 +9 +-9 +8 +-10 +9 +-10 +10 +-10 +10 +-10 +10 +-9 +11 +-9 +9 +-10 +10 +-10 +9 +-9 +8 +-10 +10 +-10 +10 +-13 +-8 +14 +-8 +10 +-11 +9 +-9 +9 +-10 +10 +-10 +11 +-9 +13 +-9 +11 +-9 +11 +-10 +12 +-9 +12 +-9 +11 +-9 +10 +-9 +10 +-9 +11 +-10 +12 +-10 +10 +-9 +11 +-10 +10 +-10 +12 +-9 +11 +-11 +9 +-9 +11 +-12 +12 +-11 +11 +-9 +10 +-12 +10 +-11 +10 +-10 +10 +-11 +10 +-10 +10 +-11 +11 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-9 +8 +-11 +11 +-9 +9 +-10 +11 +-10 +10 +-11 +11 +-10 +10 +-11 +10 +-10 +11 +-10 +8 +-11 +11 +-8 +9 +-8 +10 +-9 +12 +-11 +10 +-9 +11 +-10 +12 +-10 +11 +-9 +12 +-10 +11 +-9 +11 +-9 +11 +-10 +12 +-8 +10 +-11 +10 +-11 +11 +-11 +10 +-11 +11 +-10 +9 +-10 +9 +-11 +11 +-9 +10 +-12 +10 +-10 +9 +-11 +10 +-11 +11 +-13 +11 +-12 +12 +-12 +10 +-10 +10 +-10 +11 +-9 +10 +-9 +12 +-9 +12 +-8 +10 +-9 +12 +-10 +11 +-9 +12 +-9 +10 +-9 +10 +-10 +11 +-10 +9 +-9 +11 +-10 +9 +-9 +10 +-10 +10 +-9 +11 +-10 +9 +-11 +12 +-10 +9 +-12 +12 +-9 +10 +-9 +11 +-10 +10 +-9 +11 +-9 +11 +-10 +11 +-10 +12 +-9 +10 +-10 +11 +-9 +12 +-10 +10 +-10 +10 +-11 +11 +-10 +10 +-11 +10 +-11 +12 +-8 +11 +-9 +10 +-10 +10 +-11 +10 +-10 +10 +-10 +11 +-10 +12 +-10 +12 +-10 +12 +-11 +12 +-10 +10 +-11 +12 +-10 +10 +-9 +10 +-10 +11 +-10 +10 +-10 +9 +-8 +9 +-12 +11 +-11 +9 +-11 +10 +-9 +9 +-10 +9 +-11 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +12 +-9 +10 +-9 +11 +-9 +10 +-12 +11 +-9 +10 +-10 +10 +-11 +11 +-10 +13 +-10 +11 +-9 +12 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-9 +10 +-11 +9 +-11 +11 +-10 +10 +-10 +10 +-12 +9 +-11 +10 +-10 +9 +-11 +10 +-10 +11 +-10 +12 +-9 +11 +-10 +10 +-10 +10 +-8 +12 +-10 +11 +-9 +13 +-8 +9 +-8 +9 +-10 +11 +-10 +10 +-11 +9 +-10 +11 +-10 +8 +-11 +10 +-11 +9 +-10 +9 +-10 +11 +-10 +11 +-9 +12 +-11 +10 +-9 +11 +-10 +12 +-9 +9 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +12 +-9 +10 +-9 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +12 +-9 +12 +-10 +10 +-10 +9 +-11 +13 +-10 +11 +-9 +10 +-9 +10 +-9 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +11 +-10 +11 +-10 +11 +-10 +11 +-10 +12 +-9 +10 +-10 +11 +-10 +12 +-11 +11 +-8 +8 +-11 +11 +-9 +11 +-10 +10 +-10 +11 +-11 +9 +-10 +11 +-8 +10 +-10 +11 +-11 +12 +-10 +11 +-9 +10 +-11 +10 +-11 +11 +-9 +9 +-10 +10 +-11 +9 +-10 +10 +-11 +10 +-12 +11 +-9 +11 +-10 +11 +-10 +11 +-9 +11 +-9 +11 +-9 +12 +-10 +12 +-9 +11 +-11 +10 +-9 +12 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +9 +-12 +11 +-11 +10 +-12 +10 +-11 +8 +-12 +11 +-10 +9 +-11 +8 +-11 +9 +-10 +10 +-8 +11 +-10 +11 +-10 +12 +-8 +11 +-9 +11 +-8 +12 +-9 +10 +-9 +10 +-9 +11 +-12 +11 +-10 +10 +-11 +9 +-11 +10 +-9 +10 +-10 +10 +-10 +8 +-10 +11 +-11 +11 +-9 +10 +-10 +11 +-10 +12 +-10 +10 +-10 +11 +-10 +10 +-10 +12 +-11 +11 +-9 +9 +-11 +10 +-10 +11 +-10 +10 +-9 +10 +-12 +12 +-10 +11 +-10 +10 +-10 +12 +-10 +11 +-9 +10 +-9 +9 +-11 +11 +-9 +9 +-11 +12 +-10 +9 +-10 +10 +-10 +8 +-9 +11 +-10 +11 +-11 +11 +-11 +10 +-11 +11 +-10 +10 +-10 +12 +-11 +11 +-10 +9 +-8 +11 +-10 +9 +-10 +11 +-9 +12 +-12 +10 +-11 +10 +-11 +11 +-9 +8 +-10 +12 +-9 +13 +-12 +9 +-9 +9 +-11 +10 +-9 +9 +-11 +11 +-11 +12 +-10 +12 +-9 +12 +-10 +10 +-9 +11 +-11 +11 +-11 +11 +-10 +10 +-10 +10 +-9 +10 +-11 +10 +-11 +11 +-9 +11 +-8 +8 +-9 +12 +-10 +10 +-11 +11 +-11 +12 +-10 +9 +-10 +10 +-9 +10 +-11 +10 +-10 +11 +-10 +9 +-10 +11 +-11 +9 +-10 +9 +-9 +12 +-10 +12 +-11 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +11 +-8 +10 +-9 +11 +-10 +12 +-9 +11 +-8 +12 +-9 +10 +-8 +13 +-10 +9 +-11 +12 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-11 +10 +-10 +9 +-12 +10 +-11 +10 +-10 +9 +-11 +10 +-12 +10 +-12 +9 +-10 +9 +-11 +10 +-11 +11 +-12 +11 +-11 +11 +-11 +8 +-10 +10 +-10 +12 +-10 +12 +-11 +12 +-8 +12 +-9 +10 +-9 +12 +-10 +10 +-11 +12 +-10 +11 +-10 +11 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-9 +10 +-9 +10 +-11 +11 +-10 +9 +-10 +9 +-11 +10 +-11 +11 +-10 +11 +-11 +11 +-11 +10 +-11 +10 +-10 +9 +-9 +10 +-10 +11 +-10 +10 +-11 +10 +-9 +8 +-10 +12 +-11 +11 +-10 +11 +-11 +10 +-11 +11 +-10 +11 +-11 +12 +-8 +11 +-10 +11 +-10 +11 +-9 +12 +-11 +11 +-10 +9 +-11 +11 +-10 +10 +-11 +9 +-10 +11 +-9 +10 +-9 +11 +-8 +12 +-10 +11 +-11 +11 +-9 +11 +-10 +11 +-10 +11 +-9 +10 +-10 +11 +-9 +11 +-9 +11 +-11 +12 +10 +-16 +10 +-11 +9 +-9 +9 +-10 +10 +-9 +10 +-12 +10 +-11 +8 +-10 +9 +-9 +10 +-11 +10 +-12 +11 +-9 +9 +-9 +10 +-10 +10 +-9 +9 +-10 +8 +-9 +11 +-9 +10 +-9 +9 +-8 +11 +-10 +11 +-9 +9 +-9 +8 +-10 +9 +-10 +12 +-10 +8 +-9 +11 +-9 +10 +-8 +10 +-9 +11 +-9 +10 +-9 +10 +-9 +10 +-9 +10 +-10 +12 +-8 +10 +-9 +11 +-10 +10 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-9 +9 +-9 +8 +-9 +10 +-10 +9 +-9 +9 +-12 +-9 +14 +-8 +10 +-8 +9 +-9 +10 +-9 +10 +-9 +10 +-8 +8 +-10 +11 +-9 +9 +-10 +11 +-9 +10 +-9 +9 +-8 +10 +-10 +10 +-10 +10 +-9 +11 +-9 +11 +-8 +10 +-10 +10 +-11 +11 +-10 +12 +-10 +10 +-10 +11 +-11 +9 +-10 +10 +-11 +11 +-11 +9 +-11 +11 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +12 +-9 +11 +-9 +11 +-10 +10 +-9 +10 +-10 +13 +-9 +11 +-10 +12 +-9 +12 +-10 +12 +-9 +10 +-9 +14 +9 +-15 +9 +-11 +9 +-10 +9 +-11 +10 +-11 +9 +-11 +8 +-11 +9 +-11 +10 +-12 +8 +-11 +9 +-11 +8 +-11 +10 +-10 +10 +-11 +9 +-10 +9 +-10 +9 +-10 +9 +-9 +10 +-10 +10 +-8 +12 +-10 +9 +-9 +9 +-9 +10 +-11 +11 +-9 +9 +-9 +8 +-10 +12 +-10 +9 +-9 +9 +-7 +8 +-9 +10 +-12 +-8 +13 +-8 +10 +-10 +11 +-10 +12 +-9 +10 +-10 +10 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-9 +10 +-9 +11 +-10 +9 +-10 +10 +-9 +10 +-9 +10 +-9 +12 +-8 +11 +-8 +12 +-9 +12 +-9 +12 +-8 +11 +-9 +11 +-10 +12 +-10 +12 +-9 +9 +-10 +11 +-10 +9 +-9 +11 +-11 +12 +-10 +11 +-11 +9 +-11 +10 +-10 +9 +-9 +10 +-11 +10 +-11 +10 +-10 +10 +-10 +12 +-11 +11 +-10 +10 +-10 +10 +-10 +11 +-8 +9 +-10 +11 +-10 +10 +-9 +11 +-12 +11 +-11 +12 +-10 +9 +-11 +10 +-11 +9 +-10 +10 +-10 +11 +-11 +9 +-11 +9 +-11 +10 +-11 +9 +-11 +8 +-10 +11 +-11 +11 +-11 +11 +-9 +10 +-10 +15 +10 +-15 +11 +-10 +9 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-9 +9 +-10 +11 +-10 +9 +-14 +-9 +13 +-8 +11 +-8 +11 +-8 +9 +-9 +12 +-8 +10 +-8 +11 +-9 +11 +-8 +10 +-9 +12 +-8 +10 +-9 +11 +-10 +10 +-9 +11 +-9 +9 +-10 +13 +-11 +8 +-10 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +12 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-11 +12 +-10 +9 +-10 +11 +-11 +11 +-11 +11 +-9 +9 +-10 +11 +-11 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +11 +-11 +11 +-9 +11 +-10 +12 +-10 +12 +-10 +10 +-11 +10 +-9 +10 +-11 +14 +10 +-16 +12 +-12 +8 +-11 +9 +-11 +10 +-12 +9 +-12 +10 +-11 +9 +-9 +10 +-10 +10 +-9 +9 +-9 +9 +-12 +10 +-9 +9 +-9 +10 +-12 +11 +-10 +10 +-10 +10 +-10 +9 +-10 +9 +-9 +9 +-10 +11 +-9 +10 +-9 +10 +-10 +9 +-9 +11 +-10 +11 +-10 +10 +-10 +11 +-9 +10 +-8 +10 +-9 +12 +-13 +-8 +14 +-8 +11 +-9 +10 +-9 +11 +-9 +10 +-10 +11 +-9 +12 +-9 +11 +-8 +11 +-9 +10 +-9 +10 +-10 +9 +-10 +10 +-10 +9 +-10 +11 +-10 +9 +-9 +9 +-8 +11 +-9 +10 +-10 +13 +-8 +10 +-9 +10 +-11 +10 +-9 +11 +-8 +10 +-10 +10 +-9 +10 +-12 +10 +-11 +11 +-10 +9 +-11 +11 +-11 +10 +-10 +11 +-11 +10 +-9 +11 +-9 +10 +-11 +10 +-11 +11 +-12 +9 +-11 +9 +-9 +11 +-11 +11 +-10 +11 +-10 +10 +-11 +10 +-8 +12 +-10 +11 +-7 +10 +-9 +11 +-10 +11 +-8 +10 +-9 +11 +-9 +12 +-9 +11 +-10 +10 +-10 +11 +-8 +11 +-10 +11 +-11 +10 +-10 +9 +-10 +10 +-9 +10 +-10 +10 +-12 +12 +-10 +10 +-11 +10 +-9 +10 +-10 +11 +-9 +10 +-11 +9 +-9 +11 +-9 +11 +-11 +10 +-8 +10 +-11 +10 +-11 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +10 +-11 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-10 +10 +-10 +9 +-10 +11 +-9 +11 +-8 +11 +-10 +11 +-10 +12 +-9 +11 +-10 +9 +-10 +14 +10 +-16 +9 +-11 +9 +-11 +8 +-9 +10 +-11 +9 +-11 +10 +-10 +9 +-10 +8 +-9 +9 +-11 +10 +-10 +10 +-9 +9 +-11 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +9 +-10 +9 +-9 +9 +-11 +10 +-10 +10 +-9 +10 +-9 +11 +-8 +8 +-10 +10 +-9 +9 +-10 +10 +-11 +10 +-10 +8 +-10 +11 +-11 +10 +-13 +-8 +14 +-8 +12 +-9 +11 +-10 +10 +-9 +12 +-7 +8 +-9 +12 +-9 +11 +-8 +12 +-8 +12 +-9 +10 +-9 +11 +-8 +10 +-10 +10 +-9 +10 +-9 +10 +-9 +11 +-9 +10 +-10 +10 +-10 +12 +-8 +11 +-10 +11 +-9 +11 +-10 +11 +-9 +11 +-9 +11 +-9 +11 +-9 +11 +-10 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +9 +-9 +10 +-10 +11 +-10 +12 +-10 +11 +-10 +10 +-10 +10 +-11 +10 +-10 +11 +-10 +10 +-9 +9 +-10 +11 +-12 +10 +-10 +10 +-11 +10 +-11 +10 +-11 +12 +-10 +10 +-10 +10 +-11 +11 +-9 +9 +-12 +9 +-10 +11 +-10 +10 +-11 +12 +-9 +9 +-11 +10 +-11 +11 +-9 +10 +-9 +10 +-10 +11 +-11 +9 +-9 +9 +-10 +10 +-9 +9 +-10 +10 +-9 +9 +-11 +11 +-10 +12 +-11 +9 +-10 +11 +-10 +11 +-10 +12 +-12 +8 +-11 +11 +-10 +9 +-9 +10 +-9 +13 +8 +-15 +11 +-11 +9 +-10 +9 +-11 +11 +-10 +10 +-10 +10 +-11 +11 +-11 +9 +-12 +9 +-9 +9 +-10 +9 +-10 +10 +-10 +10 +-9 +9 +-9 +9 +-10 +10 +-9 +10 +-10 +10 +-10 +9 +-9 +9 +-10 +10 +-10 +10 +-9 +8 +-9 +10 +-9 +10 +-9 +10 +-10 +9 +-8 +9 +-9 +11 +-10 +10 +-9 +10 +-13 +-7 +13 +-8 +11 +-8 +9 +-8 +11 +-10 +9 +-10 +10 +-10 +10 +-10 +10 +-9 +11 +-9 +10 +-9 +11 +-10 +10 +-9 +11 +-9 +11 +-10 +11 +-10 +14 +10 +-13 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +9 +-9 +9 +-9 +9 +-9 +9 +-12 +10 +-11 +10 +-8 +9 +-12 +-8 +15 +-8 +11 +-8 +10 +-9 +10 +-9 +10 +-9 +9 +-8 +10 +-9 +12 +-9 +12 +-10 +11 +-9 +10 +-8 +10 +-8 +10 +-9 +10 +-10 +10 +-10 +11 +-10 +11 +-9 +10 +-9 +10 +-10 +9 +-10 +9 +-10 +9 +-11 +9 +-11 +9 +-10 +10 +-10 +10 +-10 +12 +-9 +11 +-10 +11 +-10 +11 +-8 +11 +-10 +11 +-9 +12 +-10 +10 +-10 +10 +-10 +11 +-11 +12 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +11 +-10 +12 +-10 +13 +-10 +11 +-10 +10 +-9 +11 +-9 +12 +-11 +12 +-12 +11 +-11 +10 +-9 +10 +-9 +11 +-9 +11 +-11 +10 +-9 +12 +-11 +9 +-9 +10 +-9 +10 +-11 +12 +-9 +10 +-10 +11 +-11 +12 +-11 +11 +-11 +11 +-10 +8 +-8 +11 +-10 +10 +-10 +11 +-9 +8 +-10 +11 +-11 +11 +-11 +11 +-12 +9 +-9 +11 +-10 +10 +-9 +10 +-9 +12 +-9 +11 +-9 +11 +-10 +10 +-9 +9 +-12 +11 +-10 +9 +-9 +9 +-10 +10 +-11 +10 +-10 +9 +-11 +10 +-10 +10 +-11 +10 +-10 +11 +-8 +11 +-10 +11 +-9 +11 +-11 +9 +-10 +9 +-11 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +9 +-10 +11 +-9 +12 +-10 +11 +-8 +11 +-10 +13 +-8 +12 +-10 +12 +-9 +12 +-9 +12 +-8 +13 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +12 +-11 +10 +-9 +9 +-10 +10 +-11 +11 +-10 +9 +-11 +10 +-10 +9 +-10 +9 +-11 +9 +-10 +10 +-10 +11 +-8 +10 +-11 +11 +-10 +11 +-10 +12 +-10 +10 +-11 +11 +-11 +10 +-11 +10 +-9 +10 +-10 +10 +-9 +11 +-9 +12 +-10 +10 +-11 +10 +-11 +11 +-10 +11 +-9 +11 +-10 +11 +-11 +12 +-9 +10 +-10 +12 +-10 +10 +-11 +10 +-10 +10 +-9 +12 +-11 +12 +-9 +12 +-10 +11 +-11 +9 +-9 +10 +-11 +12 +-9 +10 +-10 +10 +-11 +10 +-9 +10 +-10 +9 +-10 +10 +-10 +11 +-11 +10 +-11 +12 +-12 +9 +-9 +10 +-10 +11 +-10 +12 +-10 +10 +-10 +11 +-10 +10 +-10 +9 +-9 +10 +-11 +11 +-11 +12 +-11 +11 +-11 +10 +-10 +10 +-10 +9 +-11 +9 +-10 +10 +-10 +10 +-11 +9 +-9 +10 +-9 +11 +-8 +10 +-9 +10 +-8 +10 +-9 +12 +-8 +10 +-10 +12 +-8 +10 +-8 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +9 +-10 +11 +-11 +9 +-11 +11 +-10 +10 +-11 +11 +-9 +10 +-11 +11 +-9 +10 +-12 +11 +-10 +11 +-10 +9 +-11 +10 +-9 +11 +-11 +12 +-10 +11 +-9 +10 +-11 +11 +-11 +9 +-10 +9 +-12 +11 +-11 +10 +-10 +11 +-11 +11 +-9 +12 +-8 +11 +-9 +11 +-9 +10 +-11 +9 +-11 +11 +-10 +11 +-9 +10 +-12 +11 +-10 +12 +-10 +10 +-10 +10 +-10 +10 +-11 +11 +-11 +10 +-10 +11 +-10 +10 +-10 +11 +-9 +12 +-9 +10 +-10 +11 +-11 +11 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-8 +10 +-11 +10 +-11 +10 +-11 +10 +-11 +11 +-11 +10 +-10 +10 +-8 +11 +-10 +11 +-10 +11 +-11 +11 +-9 +9 +-9 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +10 +-12 +11 +-10 +11 +-10 +10 +-11 +10 +-10 +10 +-10 +10 +-10 +12 +-10 +11 +-9 +9 +-9 +11 +-11 +10 +-10 +10 +-10 +10 +-10 +11 +-12 +9 +-10 +10 +-10 +11 +-11 +10 +-10 +12 +-10 +10 +-9 +10 +-9 +11 +-9 +12 +-10 +9 +-10 +12 +-10 +11 +-11 +11 +-11 +11 +-10 +11 +-10 +10 +-8 +8 +-10 +11 +-10 +13 +-11 +10 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-9 +10 +-10 +11 +-10 +12 +-10 +11 +-10 +10 +-11 +10 +-10 +9 +-10 +11 +-10 +10 +-10 +11 +-10 +11 +-9 +9 +-11 +11 +-11 +11 +-10 +8 +-11 +11 +-11 +10 +-10 +10 +-11 +11 +-9 +11 +-9 +8 +-10 +10 +-9 +11 +-9 +12 +-8 +10 +-9 +11 +-10 +10 +-9 +10 +-10 +10 +-11 +12 +-10 +12 +-10 +12 +-10 +9 +-10 +11 +-11 +10 +-10 +10 +-11 +10 +-11 +10 +-9 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-10 +11 +-10 +9 +-10 +10 +-9 +11 +-10 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +11 +-8 +11 +-9 +11 +-10 +10 +-11 +9 +-9 +10 +-11 +10 +-11 +11 +-9 +11 +-9 +11 +-10 +11 +-10 +11 +-9 +11 +-10 +12 +-9 +9 +-10 +11 +-11 +10 +-10 +10 +-11 +11 +-10 +11 +-11 +10 +-9 +11 +-11 +13 +-11 +12 +-9 +10 +-11 +11 +-11 +11 +-10 +10 +-11 +9 +-10 +10 +-12 +10 +-11 +10 +-11 +10 +-11 +11 +-10 +9 +-10 +11 +-10 +11 +-11 +10 +-11 +13 +-9 +10 +-11 +10 +-9 +9 +-10 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +9 +-11 +10 +-12 +10 +-10 +10 +-10 +10 +-11 +10 +-10 +12 +-12 +11 +-12 +12 +-10 +9 +-9 +12 +-8 +10 +-9 +12 +-8 +12 +-8 +11 +-9 +12 +-9 +12 +-10 +12 +-10 +11 +-10 +11 +-10 +10 +-11 +12 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +11 +-10 +10 +-11 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-10 +11 +-10 +9 +-11 +10 +-11 +9 +-11 +10 +-10 +9 +-10 +11 +-10 +10 +-10 +12 +-11 +10 +-11 +10 +-10 +10 +-10 +11 +-11 +11 +-10 +10 +-9 +11 +-10 +10 +-9 +15 +10 +-15 +10 +-10 +9 +-9 +11 +-12 +10 +-10 +8 +-11 +10 +-9 +9 +-10 +9 +-11 +9 +-10 +10 +-10 +9 +-10 +10 +-9 +9 +-10 +10 +-9 +10 +-10 +11 +-9 +9 +-10 +11 +-10 +10 +-8 +9 +-9 +10 +-10 +9 +-9 +9 +-10 +10 +-9 +8 +-10 +9 +-10 +9 +-9 +9 +-10 +9 +-10 +10 +-10 +9 +-8 +10 +-9 +9 +-9 +11 +-9 +10 +-9 +9 +-10 +11 +-10 +10 +-8 +9 +-9 +10 +-9 +9 +-10 +8 +-10 +8 +-10 +10 +-11 +9 +-9 +9 +-9 +11 +-12 +-10 +13 +-8 +12 +-9 +10 +-8 +11 +-9 +10 +-10 +13 +-9 +11 +-11 +10 +-9 +10 +-10 +9 +-9 +12 +-9 +12 +-10 +9 +-11 +10 +-9 +11 +-9 +10 +-10 +10 +-10 +9 +-11 +10 +-9 +8 +-11 +10 +-11 +11 +-10 +11 +-9 +10 +-9 +12 +-8 +12 +-10 +11 +-9 +12 +-11 +12 +-8 +9 +-10 +11 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +12 +-10 +10 +-10 +9 +-9 +10 +-10 +10 +-10 +10 +-11 +9 +-10 +9 +-10 +10 +-11 +10 +-10 +10 +-10 +11 +-9 +15 +10 +-13 +11 +-10 +11 +-10 +12 +-9 +10 +-10 +11 +-11 +11 +-11 +11 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-11 +10 +-9 +9 +-11 +9 +-10 +9 +-10 +9 +-12 +11 +-11 +7 +-10 +9 +-10 +8 +-9 +10 +-7 +9 +-8 +9 +-8 +10 +-8 +11 +-9 +11 +-9 +10 +-9 +9 +-8 +10 +-9 +11 +-9 +10 +-13 +-8 +14 +-9 +11 +-9 +9 +-8 +10 +-9 +11 +-10 +10 +-8 +10 +-9 +9 +-10 +11 +-8 +11 +-8 +11 +-10 +11 +-10 +11 +-9 +10 +-10 +12 +-9 +11 +-9 +10 +-10 +13 +-9 +11 +-8 +11 +-10 +11 +-9 +12 +-11 +12 +-12 +10 +-9 +9 +-11 +11 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-9 +10 +-10 +10 +-12 +12 +-10 +10 +-11 +10 +-11 +10 +-11 +9 +-11 +10 +-10 +9 +-11 +11 +-10 +10 +-11 +10 +-10 +10 +-9 +9 +-11 +10 +-9 +10 +-8 +9 +-9 +9 +-9 +10 +-9 +10 +-11 +12 +-11 +12 +-9 +10 +-9 +10 +-9 +12 +-11 +10 +-10 +11 +-9 +9 +-11 +10 +-11 +11 +-10 +9 +-10 +12 +-11 +10 +-10 +15 +9 +-14 +11 +-11 +13 +-9 +9 +-10 +11 +-10 +10 +-12 +12 +-11 +9 +-10 +8 +-11 +11 +-11 +11 +-10 +10 +-10 +11 +-9 +9 +-8 +10 +-9 +10 +-13 +-7 +15 +-7 +11 +-10 +11 +-8 +10 +-8 +9 +-9 +11 +-10 +11 +-9 +10 +-8 +10 +-10 +10 +-11 +12 +-10 +10 +-9 +11 +-10 +11 +-10 +9 +-10 +10 +-10 +10 +-10 +9 +-9 +11 +-9 +12 +-9 +9 +-11 +11 +-10 +10 +-10 +11 +-10 +9 +-11 +12 +-8 +8 +-10 +10 +-10 +9 +-10 +9 +-10 +8 +-10 +10 +-9 +10 +-11 +12 +-10 +11 +-8 +10 +-10 +11 +-10 +11 +-8 +11 +-10 +12 +-10 +12 +-10 +11 +-10 +9 +-10 +11 +-9 +10 +-10 +10 +-10 +11 +-11 +14 +8 +-16 +10 +-11 +10 +-12 +8 +-11 +9 +-12 +9 +-10 +10 +-10 +10 +-9 +9 +-9 +9 +-11 +11 +-10 +10 +-9 +11 +-8 +8 +-9 +10 +-11 +11 +-9 +10 +-10 +9 +-11 +11 +-10 +9 +-9 +8 +-10 +10 +-9 +9 +-10 +8 +-10 +10 +-11 +11 +-12 +8 +-10 +9 +-10 +10 +-11 +9 +-9 +8 +-8 +9 +-12 +-7 +13 +-8 +13 +-9 +12 +-8 +11 +-8 +8 +-8 +11 +-9 +11 +-9 +10 +-9 +10 +-9 +8 +-11 +11 +-8 +9 +-12 +12 +-9 +10 +-10 +10 +-11 +11 +-9 +10 +-10 +11 +-9 +11 +-9 +10 +-9 +10 +-10 +12 +-10 +11 +-10 +11 +-11 +11 +-10 +9 +-11 +10 +-9 +10 +-11 +12 +-10 +10 +-11 +10 +-10 +11 +-9 +10 +-8 +10 +-8 +12 +-10 +11 +-10 +11 +-10 +9 +-9 +10 +-9 +11 +-11 +10 +-10 +12 +-9 +13 +-9 +9 +-9 +12 +-10 +12 +-10 +11 +-9 +8 +-10 +9 +-11 +9 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +10 +-9 +10 +-10 +9 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-9 +10 +-10 +12 +-13 +10 +-9 +10 +-10 +12 +-11 +10 +-11 +12 +-9 +11 +-9 +11 +-9 +12 +-9 +10 +-9 +11 +-10 +11 +-9 +9 +-9 +10 +-10 +10 +-9 +11 +-11 +10 +-10 +9 +-10 +10 +-11 +12 +-11 +10 +-10 +9 +-11 +11 +-10 +10 +-11 +10 +-11 +12 +-11 +10 +-9 +10 +-10 +10 +-10 +10 +-9 +13 +10 +-16 +10 +-11 +10 +-9 +9 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +11 +-10 +9 +-10 +10 +-10 +10 +-9 +9 +-10 +10 +-10 +10 +-9 +11 +-9 +9 +-9 +9 +-9 +12 +-7 +8 +-9 +10 +-9 +11 +-8 +11 +-10 +13 +-9 +10 +-8 +10 +-9 +8 +-10 +9 +-10 +9 +-11 +9 +-9 +10 +-14 +-8 +13 +-8 +11 +-10 +8 +-9 +12 +-8 +10 +-9 +9 +-6 +11 +-8 +13 +-9 +11 +-9 +10 +-11 +12 +-10 +10 +-10 +11 +-10 +12 +-9 +9 +-9 +11 +-9 +10 +-9 +9 +-10 +12 +-9 +9 +-9 +11 +-11 +12 +-9 +9 +-8 +12 +-9 +10 +-9 +12 +-10 +9 +-10 +10 +-10 +10 +-10 +12 +-10 +10 +-9 +10 +-10 +13 +-11 +10 +-10 +11 +-9 +9 +-10 +9 +-9 +9 +-11 +12 +-10 +11 +-9 +11 +-10 +10 +-11 +11 +-9 +11 +-11 +11 +-9 +10 +-9 +9 +-10 +10 +-9 +11 +-10 +12 +-10 +11 +-11 +11 +-12 +12 +-9 +12 +-10 +10 +-9 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +11 +-10 +10 +-10 +8 +-10 +10 +-11 +8 +-11 +9 +-10 +10 +-10 +10 +-10 +10 +-11 +9 +-11 +10 +-11 +11 +-11 +9 +-10 +11 +-8 +11 +-10 +10 +-10 +10 +-11 +13 +10 +-15 +10 +-12 +9 +-11 +10 +-10 +10 +-10 +10 +-12 +10 +-11 +10 +-9 +8 +-11 +10 +-10 +8 +-10 +8 +-11 +9 +-10 +9 +-10 +9 +-10 +9 +-10 +10 +-10 +10 +-9 +10 +-7 +8 +-9 +12 +-9 +9 +-9 +10 +-9 +10 +-10 +11 +-8 +10 +-9 +11 +-8 +9 +-7 +9 +-9 +12 +-9 +9 +-8 +10 +-13 +-7 +15 +-7 +12 +-9 +11 +-8 +11 +-10 +11 +-8 +9 +-9 +11 +-9 +10 +-10 +11 +-9 +11 +-9 +10 +-10 +10 +-10 +11 +-10 +10 +-10 +10 +-9 +13 +9 +-16 +10 +-11 +10 +-10 +8 +-11 +10 +-10 +8 +-10 +10 +-10 +8 +-9 +9 +-10 +8 +-11 +9 +-10 +10 +-9 +10 +-10 +10 +-9 +10 +-10 +9 +-12 +-9 +12 +-7 +11 +-8 +11 +-8 +11 +-8 +10 +-10 +11 +-10 +10 +-9 +10 +-8 +10 +-10 +11 +-9 +11 +-9 +10 +-10 +12 +-9 +10 +-8 +11 +-11 +11 +-9 +12 +-10 +8 +-10 +10 +-10 +10 +-10 +11 +-11 +11 +-10 +9 +-11 +10 +-10 +9 +-11 +13 +-10 +12 +-9 +12 +-9 +13 +-9 +11 +-9 +12 +-10 +11 +-9 +10 +-9 +11 +-9 +10 +-10 +10 +-10 +10 +-9 +8 +-10 +11 +-11 +11 +-10 +10 +-10 +9 +-10 +9 +-9 +11 +-10 +12 +-9 +9 +-10 +12 +-9 +11 +-11 +10 +-9 +12 +-11 +11 +-10 +10 +-11 +10 +-10 +11 +-10 +10 +-9 +8 +-9 +11 +-11 +11 +-10 +11 +-10 +12 +-9 +10 +-10 +10 +-10 +11 +-11 +11 +-11 +11 +-9 +11 +-10 +12 +-10 +10 +-9 +10 +-9 +11 +-9 +11 +-9 +11 +-10 +9 +-10 +9 +-10 +11 +-11 +9 +-10 +10 +-10 +11 +-9 +11 +-11 +12 +-9 +11 +-8 +10 +-10 +10 +-10 +10 +-10 +11 +-11 +12 +-10 +11 +-10 +10 +-10 +11 +-11 +12 +-10 +10 +-10 +11 +-10 +10 +-9 +10 +-12 +10 +-10 +11 +-10 +11 +-11 +10 +-11 +11 +-9 +11 +-10 +11 +-11 +11 +-10 +10 +-11 +11 +-10 +10 +-10 +12 +-11 +10 +-12 +11 +-10 +9 +-11 +9 +-11 +11 +-10 +11 +-11 +9 +-10 +9 +-11 +11 +-10 +11 +-10 +11 +-11 +12 +-11 +12 +-10 +10 +-11 +12 +-11 +10 +-9 +10 +-8 +11 +-10 +11 +-9 +11 +-10 +13 +-10 +12 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-11 +10 +-9 +10 +-11 +9 +-11 +12 +-9 +9 +-9 +9 +-10 +9 +-9 +10 +-12 +10 +-10 +8 +-11 +9 +-11 +10 +-11 +10 +-10 +10 +-10 +10 +-12 +10 +-10 +8 +-11 +10 +-10 +11 +-10 +12 +-9 +10 +-10 +11 +-10 +11 +-10 +11 +-8 +11 +-11 +11 +-10 +11 +-9 +12 +-11 +12 +-9 +9 +-11 +10 +-10 +10 +-10 +11 +-11 +9 +-10 +9 +-13 +11 +-11 +9 +-12 +11 +-11 +10 +-10 +10 +-10 +12 +-10 +11 +-11 +12 +-9 +12 +-10 +10 +-10 +12 +-9 +10 +-9 +11 +-10 +12 +-11 +13 +-10 +10 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-11 +11 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +12 +-10 +11 +-10 +12 +-9 +11 +-10 +10 +-11 +11 +-9 +11 +-11 +9 +-11 +11 +-9 +10 +-11 +11 +-10 +10 +-10 +10 +-11 +11 +-9 +11 +-11 +11 +-10 +10 +-10 +11 +-10 +9 +-9 +11 +-8 +11 +-10 +11 +-9 +11 +-9 +12 +-10 +9 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-10 +11 +-10 +11 +-9 +10 +-11 +12 +-10 +10 +-9 +11 +-10 +11 +-10 +10 +-11 +10 +-10 +11 +-11 +9 +-10 +10 +-10 +11 +-9 +11 +-10 +12 +-9 +11 +-11 +12 +-9 +11 +-11 +11 +-10 +10 +-9 +10 +-9 +9 +-11 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +9 +-11 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +12 +-10 +10 +-11 +10 +-9 +9 +-9 +11 +-10 +11 +-9 +11 +-9 +10 +-9 +10 +-10 +11 +-11 +11 +-10 +11 +-11 +10 +-10 +10 +-10 +11 +-11 +13 +-10 +10 +-11 +11 +-11 +10 +-9 +11 +-10 +10 +-11 +11 +-11 +10 +-9 +10 +-11 +11 +-10 +12 +-11 +9 +-9 +10 +-11 +11 +-10 +11 +-9 +10 +-11 +9 +-11 +11 +-9 +10 +-10 +11 +-11 +9 +-9 +11 +-8 +9 +-9 +10 +-8 +11 +-11 +11 +-9 +9 +-11 +11 +-11 +10 +-11 +11 +-12 +11 +-9 +8 +-9 +9 +-12 +10 +-10 +11 +-10 +12 +-10 +12 +-10 +10 +-9 +10 +-10 +13 +-10 +12 +-9 +11 +-9 +10 +-10 +11 +-10 +10 +-11 +10 +-11 +11 +-10 +8 +-10 +10 +-11 +9 +-12 +10 +-11 +10 +-10 +10 +-11 +11 +-11 +12 +-10 +10 +-8 +10 +-10 +10 +-9 +11 +-8 +11 +-11 +12 +-10 +11 +-9 +9 +-9 +11 +-13 +10 +-8 +10 +-9 +12 +-10 +12 +-10 +10 +-10 +12 +-10 +9 +-9 +11 +-10 +10 +-10 +12 +-11 +11 +-9 +11 +-10 +11 +-11 +11 +-11 +12 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +9 +-11 +10 +-10 +10 +-12 +9 +-9 +9 +-9 +10 +-10 +11 +-12 +12 +-11 +12 +-8 +11 +-12 +9 +-10 +10 +-10 +11 +-11 +11 +-10 +11 +-9 +11 +-9 +10 +-9 +10 +-11 +10 +-10 +10 +-10 +9 +-10 +11 +-12 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +10 +-11 +11 +-10 +9 +-11 +12 +-11 +11 +-10 +10 +-10 +11 +-10 +10 +-10 +9 +-11 +10 +-11 +11 +-10 +7 +-9 +10 +-10 +9 +-10 +11 +-9 +11 +-10 +11 +-10 +10 +-9 +10 +-9 +11 +-10 +10 +-9 +11 +-9 +11 +-9 +11 +-9 +11 +-10 +10 +-10 +10 +-9 +11 +-10 +10 +-9 +10 +-10 +11 +-11 +10 +-10 +11 +-10 +8 +-11 +10 +-10 +10 +-11 +10 +-11 +10 +-9 +11 +-10 +10 +-10 +10 +-11 +12 +-9 +10 +-9 +9 +-9 +11 +-10 +11 +-10 +10 +-9 +10 +-8 +10 +-9 +12 +-10 +11 +-9 +12 +-8 +11 +-9 +12 +-10 +12 +-11 +10 +-10 +9 +-12 +12 +-9 +9 +-11 +11 +-10 +11 +-9 +8 +-10 +10 +-9 +11 +-10 +9 +-10 +10 +-10 +11 +-9 +9 +-10 +11 +-10 +11 +-7 +9 +-9 +12 +-10 +11 +-10 +9 +-11 +11 +-11 +9 +-10 +10 +-11 +8 +-11 +9 +-9 +10 +-11 +10 +-11 +11 +-12 +11 +-10 +12 +-10 +11 +-10 +13 +10 +-14 +11 +-12 +10 +-11 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +9 +-10 +9 +-12 +9 +-9 +9 +-10 +11 +-12 +9 +-11 +9 +-11 +8 +-10 +9 +-9 +9 +-10 +9 +-10 +9 +-8 +10 +-9 +9 +-10 +10 +-9 +9 +-10 +10 +-10 +11 +-10 +9 +-9 +9 +-11 +9 +-9 +9 +-9 +9 +-11 +10 +-11 +10 +-9 +9 +-10 +11 +-8 +10 +-7 +9 +-9 +12 +-9 +11 +-8 +10 +-9 +12 +-9 +10 +-9 +9 +-10 +10 +-10 +10 +-9 +9 +-9 +9 +-10 +9 +-10 +10 +-12 +-7 +16 +-7 +12 +-9 +11 +-10 +12 +-8 +10 +-9 +10 +-10 +11 +-10 +10 +-9 +9 +-8 +10 +-9 +8 +-8 +9 +-10 +10 +-9 +12 +-10 +10 +-8 +10 +-11 +11 +-9 +11 +-8 +12 +-8 +11 +-8 +12 +-9 +13 +-10 +11 +-10 +12 +-10 +11 +-8 +9 +-9 +10 +-8 +10 +-11 +12 +-9 +11 +-10 +11 +-10 +11 +-9 +10 +-10 +10 +-11 +10 +-10 +10 +-9 +10 +-10 +10 +-9 +12 +-9 +11 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +14 +10 +-15 +10 +-11 +9 +-12 +9 +-11 +10 +-10 +8 +-12 +10 +-10 +10 +-11 +9 +-10 +9 +-9 +9 +-12 +10 +-11 +10 +-10 +10 +-10 +11 +-9 +10 +-8 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +10 +-10 +10 +-10 +9 +-10 +11 +-10 +10 +-9 +11 +-10 +10 +-9 +10 +-9 +9 +-11 +10 +-11 +10 +-10 +9 +-13 +-10 +14 +-8 +9 +-10 +11 +-9 +10 +-10 +12 +-9 +13 +-9 +9 +-10 +11 +-9 +11 +-8 +12 +-8 +10 +-8 +10 +-10 +12 +-9 +11 +-9 +10 +-8 +9 +-12 +11 +-9 +10 +-11 +10 +-11 +9 +-8 +10 +-11 +11 +-10 +10 +-10 +9 +-11 +11 +-11 +9 +-11 +9 +-9 +11 +-10 +10 +-10 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +9 +-10 +10 +-11 +10 +-9 +11 +-10 +9 +-10 +11 +-10 +11 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-9 +11 +-9 +10 +-10 +13 +-9 +10 +-9 +9 +-10 +10 +-11 +11 +-9 +10 +-11 +10 +-11 +10 +-9 +8 +-11 +11 +-11 +11 +-9 +11 +-11 +10 +-11 +10 +-11 +12 +-11 +11 +-10 +10 +-9 +13 +11 +-15 +11 +-11 +9 +-11 +9 +-11 +9 +-11 +10 +-10 +10 +-9 +8 +-10 +9 +-10 +9 +-11 +11 +-10 +10 +-9 +8 +-10 +9 +-9 +10 +-10 +11 +-13 +-8 +14 +-7 +10 +-10 +11 +-8 +12 +-8 +10 +-9 +12 +-10 +9 +-9 +11 +-9 +12 +-8 +10 +-11 +11 +-11 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-9 +8 +-11 +11 +-10 +9 +-10 +9 +-10 +9 +-9 +12 +-12 +10 +-9 +11 +-8 +10 +-9 +10 +-10 +9 +-10 +11 +-10 +9 +-11 +11 +-9 +10 +-10 +13 +-12 +10 +-11 +10 +-8 +12 +-9 +13 +-9 +13 +-9 +10 +-9 +10 +-9 +9 +-11 +10 +-10 +10 +-11 +9 +-10 +9 +-11 +10 +-10 +9 +-11 +13 +11 +-15 +10 +-12 +9 +-11 +10 +-10 +9 +-11 +10 +-11 +9 +-11 +9 +-11 +8 +-10 +10 +-10 +11 +-9 +8 +-9 +9 +-9 +11 +-10 +11 +-9 +12 +-9 +8 +-10 +10 +-10 +10 +-9 +9 +-9 +11 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-9 +11 +-8 +10 +-8 +11 +-10 +11 +-8 +10 +-9 +11 +-9 +9 +-12 +-8 +14 +-9 +12 +-10 +13 +-9 +9 +-8 +9 +-10 +11 +-8 +11 +-10 +11 +-8 +12 +-8 +10 +-9 +11 +-9 +10 +-9 +11 +-9 +12 +-9 +10 +-10 +11 +-8 +10 +-9 +11 +-10 +11 +-11 +11 +-11 +9 +-10 +10 +-10 +9 +-9 +9 +-10 +10 +-11 +10 +-11 +9 +-10 +9 +-11 +9 +-12 +11 +-10 +11 +-11 +11 +-9 +9 +-9 +10 +-9 +9 +-10 +12 +-11 +9 +-10 +10 +-11 +10 +-11 +9 +-9 +9 +-9 +10 +-12 +10 +-10 +11 +-9 +11 +-10 +11 +-9 +12 +-10 +12 +-11 +12 +-8 +11 +-10 +9 +-9 +11 +-10 +10 +-11 +9 +-10 +10 +-11 +9 +-11 +10 +-9 +9 +-11 +10 +-10 +11 +-9 +11 +-8 +10 +-11 +12 +-9 +11 +-11 +11 +-11 +10 +-11 +10 +-10 +9 +-11 +12 +-12 +10 +-10 +9 +-11 +10 +-11 +11 +-9 +11 +-12 +11 +-10 +11 +-9 +12 +-9 +10 +-9 +12 +-10 +11 +-9 +11 +-10 +10 +-10 +13 +-9 +12 +-11 +11 +-10 +11 +-10 +10 +-9 +10 +-9 +11 +-10 +10 +-9 +9 +-11 +12 +-9 +10 +-8 +10 +-9 +10 +-10 +15 +9 +-15 +11 +-10 +8 +-11 +9 +-11 +9 +-10 +8 +-11 +11 +-10 +10 +-11 +9 +-9 +8 +-10 +9 +-10 +10 +-10 +9 +-9 +9 +-9 +11 +-10 +9 +-10 +11 +-12 +10 +-10 +10 +-11 +9 +-10 +10 +-11 +9 +-11 +9 +-10 +8 +-9 +10 +-8 +10 +-9 +10 +-10 +11 +-10 +10 +-8 +9 +-9 +10 +-9 +10 +-13 +-8 +13 +-7 +11 +-10 +9 +-10 +11 +-8 +10 +-8 +11 +-8 +11 +-10 +9 +-8 +10 +-8 +11 +-10 +11 +-10 +9 +-9 +9 +-8 +9 +-12 +10 +-7 +8 +-10 +10 +-11 +10 +-8 +10 +-11 +10 +-10 +10 +-9 +9 +-9 +10 +-9 +8 +-9 +13 +-10 +9 +-12 +11 +-10 +12 +-9 +10 +-10 +11 +-10 +11 +-11 +12 +-9 +10 +-11 +8 +-10 +10 +-10 +12 +-9 +11 +-8 +11 +-10 +11 +-10 +10 +-10 +13 +-9 +11 +-10 +11 +-9 +9 +-9 +10 +-11 +11 +-10 +12 +-11 +10 +-10 +11 +-10 +11 +-10 +12 +-10 +10 +-10 +11 +-11 +10 +-10 +9 +-10 +10 +-11 +8 +-10 +11 +-11 +9 +-12 +14 +-10 +9 +-10 +13 +-9 +12 +-10 +10 +-10 +11 +-10 +9 +-9 +11 +-9 +11 +-13 +9 +-10 +10 +-11 +9 +-10 +12 +-10 +10 +-9 +10 +-11 +9 +-10 +10 +-8 +11 +-11 +12 +-10 +10 +-10 +15 +10 +-14 +11 +-10 +10 +-10 +9 +-10 +9 +-10 +8 +-11 +11 +-9 +10 +-10 +8 +-10 +9 +-12 +11 +-6 +8 +-11 +12 +-9 +11 +-8 +10 +-10 +11 +-11 +9 +-9 +10 +-8 +10 +-10 +9 +-10 +10 +-9 +12 +-9 +9 +-8 +10 +-9 +11 +-9 +10 +-9 +9 +-7 +9 +-11 +11 +-10 +9 +-9 +9 +-10 +9 +-13 +-9 +14 +-8 +11 +-10 +10 +-10 +9 +-9 +9 +-9 +10 +-9 +11 +-10 +11 +-9 +11 +-10 +11 +-9 +10 +-10 +10 +-9 +11 +-12 +10 +-9 +9 +-11 +15 +9 +-15 +10 +-10 +10 +-11 +10 +-9 +9 +-9 +9 +-10 +12 +-11 +9 +-8 +8 +-11 +10 +-9 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +9 +-7 +9 +-14 +-7 +14 +-8 +9 +-9 +12 +-10 +10 +-8 +11 +-11 +10 +-8 +11 +-8 +11 +-8 +11 +-9 +10 +-10 +11 +-9 +10 +-9 +10 +-11 +10 +-9 +10 +-10 +10 +-8 +9 +-11 +11 +-11 +10 +-11 +12 +-10 +11 +-9 +12 +-10 +11 +-9 +10 +-10 +11 +-9 +10 +-9 +12 +-8 +9 +-9 +10 +-9 +12 +-9 +8 +-10 +11 +-9 +10 +-10 +12 +-12 +12 +-10 +11 +-7 +10 +-9 +12 +-10 +11 +-10 +11 +-10 +11 +-10 +11 +-10 +8 +-9 +9 +-10 +11 +-10 +10 +-9 +12 +-9 +10 +-9 +12 +-11 +11 +-9 +10 +-10 +12 +-10 +12 +-9 +10 +-9 +10 +-9 +11 +-12 +10 +-9 +9 +-9 +10 +-10 +10 +-9 +9 +-9 +10 +-11 +10 +-9 +10 +-10 +10 +-12 +11 +-11 +11 +-11 +10 +-11 +10 +-12 +9 +-10 +9 +-11 +10 +-11 +10 +-10 +10 +-11 +12 +-11 +11 +-10 +10 +-11 +12 +-11 +9 +-11 +11 +-9 +10 +-11 +12 +-10 +10 +-11 +12 +-10 +11 +-9 +10 +-10 +12 +-9 +13 +-9 +11 +-10 +12 +-9 +10 +-9 +11 +-11 +11 +-11 +10 +-10 +10 +-10 +9 +-12 +9 +-10 +10 +-9 +10 +-12 +11 +-9 +10 +-12 +11 +-12 +11 +-11 +11 +-10 +11 +-11 +12 +-9 +10 +-10 +12 +-9 +11 +-9 +11 +-9 +11 +-9 +11 +-8 +10 +-11 +13 +-9 +10 +-9 +10 +-9 +11 +-10 +10 +-12 +11 +-10 +11 +-10 +12 +-10 +11 +-9 +11 +-9 +11 +-10 +12 +-9 +9 +-9 +11 +-9 +12 +-10 +11 +-10 +11 +-10 +9 +-9 +10 +-10 +10 +-10 +8 +-11 +10 +-11 +10 +-10 +10 +-10 +9 +-11 +12 +-10 +10 +-10 +9 +-10 +11 +-11 +10 +-11 +11 +-10 +9 +-10 +11 +-11 +9 +-11 +12 +-9 +10 +-9 +9 +-11 +10 +-10 +10 +-9 +9 +-10 +9 +-10 +11 +-9 +11 +-11 +11 +-8 +10 +-10 +10 +-9 +9 +-11 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +11 +-10 +11 +-10 +11 +-9 +8 +-12 +12 +-9 +11 +-9 +10 +-10 +11 +-10 +11 +-9 +9 +-9 +12 +-9 +12 +-9 +10 +-10 +12 +-10 +11 +-10 +10 +-11 +10 +-10 +10 +-11 +11 +-10 +9 +-10 +11 +-9 +10 +-10 +10 +-11 +10 +-10 +9 +-10 +10 +-10 +12 +-10 +9 +-9 +10 +-10 +12 +-10 +11 +-9 +10 +-10 +10 +-11 +11 +-9 +11 +-9 +11 +-9 +11 +-10 +12 +-10 +10 +-10 +10 +-10 +10 +-10 +9 +-9 +11 +-10 +9 +-9 +12 +-11 +10 +-10 +10 +-11 +10 +-12 +11 +-11 +10 +-10 +9 +-11 +12 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +11 +-9 +12 +-12 +9 +-10 +10 +-10 +10 +-10 +11 +-11 +9 +-9 +9 +-9 +11 +-10 +12 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-10 +11 +-10 +10 +-9 +9 +-11 +12 +-12 +10 +-10 +9 +-11 +11 +-9 +11 +-9 +12 +-11 +10 +-10 +10 +-9 +10 +-9 +10 +-10 +11 +-10 +11 +-12 +13 +-10 +12 +-9 +10 +-11 +12 +-11 +11 +-10 +10 +-10 +11 +-11 +11 +-9 +10 +-12 +11 +-9 +10 +-10 +11 +-11 +12 +-11 +9 +-9 +10 +-11 +10 +-11 +11 +-10 +9 +-10 +10 +-11 +10 +-9 +10 +-11 +11 +-11 +11 +-10 +11 +-9 +10 +-9 +11 +-10 +11 +-10 +10 +-10 +12 +-10 +12 +-9 +10 +-10 +12 +-11 +11 +-9 +11 +-9 +10 +-10 +11 +-11 +11 +-8 +9 +-10 +10 +-10 +10 +-11 +11 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-11 +10 +-9 +9 +-10 +10 +-10 +11 +-10 +12 +-10 +10 +-10 +11 +-10 +10 +-11 +11 +-9 +9 +-11 +11 +-10 +9 +-10 +11 +-10 +11 +-11 +10 +-10 +12 +-11 +10 +-11 +10 +-11 +10 +-10 +11 +-11 +12 +-10 +10 +-9 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-12 +10 +-11 +11 +-10 +11 +-10 +11 +-9 +12 +-9 +11 +-10 +11 +-9 +11 +-9 +12 +-9 +10 +-10 +11 +-8 +10 +-9 +11 +-11 +11 +-11 +9 +-9 +11 +-8 +9 +-10 +11 +-10 +12 +-10 +10 +-8 +10 +-10 +11 +-11 +10 +-11 +10 +-11 +9 +-12 +10 +-10 +10 +-10 +10 +-12 +11 +-10 +9 +-10 +9 +-12 +10 +-10 +10 +-10 +8 +-10 +11 +-10 +11 +-10 +11 +-9 +11 +-9 +10 +-11 +12 +-9 +11 +-10 +11 +-8 +10 +-12 +10 +-10 +10 +-11 +10 +-11 +11 +-11 +9 +-10 +10 +-9 +9 +-10 +11 +-11 +10 +-10 +11 +-11 +11 +-12 +11 +-10 +10 +-11 +11 +-10 +11 +-11 +10 +-11 +9 +-9 +10 +-10 +10 +-11 +13 +-11 +10 +-10 +11 +-9 +11 +-9 +10 +-11 +11 +-10 +12 +-10 +9 +-9 +10 +-10 +12 +-10 +11 +-10 +11 +-11 +10 +-9 +10 +-10 +11 +-10 +11 +-9 +9 +-8 +10 +-9 +10 +-10 +12 +-10 +9 +-10 +10 +-11 +12 +-9 +11 +-9 +10 +-11 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +9 +-11 +12 +-11 +12 +-9 +10 +-9 +11 +-10 +12 +-10 +12 +-10 +11 +-9 +11 +-9 +10 +-10 +11 +-10 +11 +-11 +10 +-11 +10 +-10 +10 +-10 +13 +-11 +10 +-10 +10 +-9 +9 +-10 +9 +-10 +9 +-11 +9 +-10 +11 +-11 +10 +-11 +9 +-9 +11 +-10 +11 +-10 +10 +-11 +10 +-10 +9 +-11 +10 +-11 +10 +-11 +10 +-11 +10 +-10 +9 +-11 +10 +-10 +10 +-12 +10 +-10 +11 +-10 +10 +-9 +12 +-9 +10 +-10 +9 +-10 +10 +-11 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +15 +9 +-15 +11 +-11 +11 +-11 +10 +-10 +9 +-9 +11 +-9 +10 +-9 +10 +-11 +12 +-9 +8 +-10 +9 +-11 +10 +-10 +10 +-9 +10 +-10 +11 +-8 +10 +-10 +11 +-9 +8 +-10 +11 +-8 +11 +-10 +10 +-11 +11 +-9 +8 +-8 +8 +-10 +10 +-9 +9 +-10 +9 +-10 +10 +-8 +10 +-11 +10 +-7 +8 +-10 +10 +-10 +8 +-10 +12 +-9 +9 +-8 +9 +-7 +10 +-9 +10 +-7 +10 +-8 +11 +-9 +10 +-8 +10 +-9 +9 +-10 +10 +-9 +8 +-8 +10 +-9 +9 +-9 +11 +-13 +-8 +13 +-8 +11 +-10 +9 +-8 +10 +-9 +11 +-10 +10 +-9 +9 +-9 +9 +-10 +10 +-11 +10 +-10 +11 +-11 +11 +-9 +9 +-10 +10 +-9 +12 +-9 +11 +-9 +10 +-9 +11 +-10 +11 +-8 +10 +-12 +10 +-10 +9 +-11 +11 +-11 +11 +-10 +9 +-10 +9 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-9 +9 +-9 +10 +-9 +11 +-10 +10 +-11 +10 +-10 +11 +-10 +10 +-10 +12 +-11 +11 +-10 +12 +-11 +11 +-10 +11 +-11 +11 +-9 +9 +-10 +10 +-11 +10 +-9 +10 +-9 +13 +10 +-14 +11 +-12 +9 +-12 +10 +-10 +10 +-11 +9 +-10 +10 +-10 +11 +-9 +11 +-9 +10 +-9 +12 +-10 +11 +-9 +12 +-8 +11 +-9 +10 +-10 +11 +-10 +10 +-10 +10 +-9 +9 +-8 +9 +-10 +9 +-10 +9 +-10 +11 +-11 +9 +-10 +9 +-10 +9 +-9 +8 +-10 +9 +-11 +10 +-11 +10 +-11 +8 +-9 +9 +-13 +-6 +11 +-8 +10 +-10 +12 +-8 +11 +-8 +11 +-7 +10 +-10 +11 +-8 +11 +-8 +12 +-11 +11 +-6 +9 +-11 +11 +-9 +10 +-9 +11 +-10 +11 +-10 +10 +-10 +11 +-11 +10 +-9 +11 +-9 +8 +-9 +11 +-10 +10 +-11 +11 +-9 +9 +-10 +11 +-10 +10 +-9 +11 +-10 +11 +-11 +10 +-11 +9 +-10 +10 +-11 +10 +-9 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +10 +-9 +10 +-10 +12 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +12 +-9 +11 +-11 +11 +-8 +10 +-11 +11 +-11 +10 +-9 +10 +-11 +12 +-11 +10 +-11 +11 +-11 +10 +-9 +10 +-10 +11 +-8 +11 +-12 +13 +-9 +11 +-9 +11 +-10 +12 +-11 +12 +-9 +9 +-10 +14 +10 +-16 +10 +-11 +10 +-10 +9 +-10 +9 +-10 +10 +-11 +11 +-12 +8 +-11 +10 +-11 +10 +-11 +8 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-9 +11 +-13 +-7 +15 +-7 +10 +-8 +10 +-9 +12 +-9 +11 +-10 +6 +-8 +10 +-8 +11 +-9 +11 +-8 +11 +-9 +10 +-9 +9 +-9 +9 +-10 +10 +-10 +10 +-9 +11 +-10 +12 +-10 +11 +-9 +11 +-9 +11 +-10 +9 +-9 +10 +-10 +10 +-10 +9 +-11 +9 +-9 +11 +-11 +11 +-9 +11 +-10 +12 +-8 +10 +-9 +9 +-8 +11 +-10 +10 +-11 +10 +-10 +11 +-10 +11 +-11 +10 +-11 +10 +-10 +11 +-12 +11 +-10 +11 +-8 +9 +-11 +9 +-10 +10 +-10 +8 +-10 +10 +-11 +9 +-12 +15 +9 +-16 +9 +-12 +10 +-10 +8 +-10 +8 +-12 +9 +-12 +10 +-10 +8 +-11 +10 +-9 +10 +-8 +9 +-9 +9 +-8 +9 +-8 +11 +-9 +11 +-9 +11 +-10 +9 +-9 +10 +-9 +9 +-9 +10 +-9 +9 +-9 +9 +-10 +9 +-11 +12 +-9 +7 +-10 +9 +-9 +10 +-12 +9 +-9 +9 +-9 +11 +-9 +12 +-9 +9 +-13 +-8 +14 +-7 +12 +-8 +11 +-9 +12 +-9 +10 +-9 +11 +-10 +10 +-8 +9 +-9 +10 +-9 +10 +-11 +11 +-8 +10 +-10 +11 +-9 +9 +-11 +10 +-10 +10 +-11 +8 +-10 +10 +-11 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +12 +-8 +11 +-9 +9 +-9 +10 +-9 +13 +-9 +10 +-9 +10 +-10 +9 +-10 +10 +-9 +11 +-10 +10 +-11 +11 +-9 +9 +-9 +9 +-10 +12 +-11 +11 +-11 +11 +-8 +9 +-9 +12 +-8 +11 +-11 +11 +-10 +11 +-10 +10 +-11 +12 +-10 +12 +-10 +12 +-12 +11 +-10 +11 +-11 +11 +-10 +11 +-10 +12 +-10 +11 +-10 +11 +-10 +10 +-10 +9 +-10 +10 +-11 +12 +-11 +12 +-10 +11 +-11 +10 +-10 +10 +-10 +11 +-10 +12 +-12 +9 +-9 +9 +-11 +12 +-10 +10 +-10 +10 +-11 +11 +-9 +10 +-10 +9 +-10 +10 +-10 +9 +-10 +11 +-10 +9 +-11 +10 +-11 +12 +-10 +10 +-9 +9 +-10 +11 +-10 +11 +-10 +11 +-9 +11 +-8 +11 +-9 +12 +-12 +11 +-8 +11 +-11 +12 +-10 +10 +-9 +10 +-11 +10 +-11 +10 +-10 +10 +-11 +14 +9 +-15 +10 +-12 +9 +-11 +10 +-12 +11 +-9 +9 +-13 +11 +-11 +9 +-10 +9 +-10 +11 +-9 +8 +-11 +12 +-10 +10 +-11 +10 +-10 +11 +-9 +10 +-10 +10 +-9 +9 +-10 +9 +-10 +9 +-9 +9 +-9 +9 +-10 +9 +-10 +10 +-9 +9 +-9 +11 +-8 +9 +-8 +8 +-8 +9 +-8 +9 +-9 +11 +-8 +10 +-13 +-9 +16 +-8 +11 +-9 +10 +-8 +11 +-8 +11 +-9 +8 +-9 +12 +-10 +10 +-9 +10 +-9 +11 +-9 +11 +-10 +10 +-10 +9 +-9 +9 +-9 +10 +-10 +10 +-11 +10 +-10 +10 +-9 +13 +-10 +10 +-8 +11 +-8 +11 +-10 +12 +-8 +12 +-8 +12 +-8 +8 +-10 +12 +-11 +10 +-9 +8 +-10 +10 +-10 +11 +-11 +9 +-11 +10 +-11 +10 +-11 +9 +-10 +10 +-11 +10 +-11 +10 +-9 +10 +-10 +11 +-11 +10 +-8 +9 +-11 +11 +-10 +10 +-9 +10 +-11 +10 +-11 +9 +-11 +12 +-10 +11 +-11 +12 +-9 +10 +-10 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +9 +-11 +11 +-10 +10 +-10 +12 +-10 +11 +-8 +11 +-8 +8 +-12 +11 +-9 +10 +-10 +12 +-9 +11 +-9 +10 +-9 +9 +-9 +10 +-9 +11 +-10 +10 +-8 +11 +-13 +13 +-10 +10 +-11 +10 +-11 +13 +-11 +10 +-10 +11 +-9 +11 +-10 +15 +10 +-16 +10 +-11 +9 +-11 +11 +-11 +10 +-10 +9 +-11 +10 +-10 +9 +-11 +9 +-10 +9 +-12 +10 +-10 +10 +-11 +9 +-11 +11 +-9 +9 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-8 +9 +-9 +11 +-9 +10 +-8 +9 +-10 +8 +-9 +10 +-9 +10 +-9 +9 +-9 +9 +-9 +9 +-10 +9 +-10 +9 +-11 +10 +-12 +-8 +13 +-8 +10 +-10 +10 +-8 +10 +-8 +12 +-8 +11 +-9 +11 +-7 +11 +-10 +12 +-10 +10 +-8 +11 +-9 +10 +-8 +10 +-9 +10 +-10 +11 +-9 +14 +10 +-16 +10 +-11 +11 +-10 +9 +-9 +9 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-10 +11 +-10 +10 +-9 +8 +-10 +10 +-9 +10 +-11 +9 +-10 +10 +-13 +-8 +14 +-8 +11 +-9 +9 +-9 +11 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-10 +9 +-9 +12 +-9 +10 +-9 +11 +-10 +9 +-9 +10 +-11 +11 +-9 +11 +-9 +9 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-11 +9 +-10 +12 +-10 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +9 +-10 +10 +-10 +12 +-12 +9 +-10 +9 +-10 +11 +-10 +12 +-9 +11 +-11 +11 +-10 +10 +-9 +11 +-11 +10 +-9 +11 +-9 +10 +-10 +11 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-11 +10 +-9 +11 +-10 +10 +-11 +12 +-10 +10 +-10 +10 +-10 +10 +-11 +11 +-11 +12 +-12 +10 +-10 +10 +-10 +12 +-11 +10 +-10 +11 +-9 +11 +-10 +11 +-9 +12 +-9 +12 +-10 +11 +-10 +12 +-11 +10 +-10 +11 +-9 +9 +-10 +11 +-9 +11 +-11 +10 +-9 +10 +-11 +12 +-9 +11 +-9 +10 +-10 +12 +-9 +11 +-9 +9 +-10 +12 +-11 +11 +-11 +9 +-9 +11 +-11 +10 +-9 +11 +-10 +12 +-10 +11 +-9 +10 +-10 +11 +-11 +10 +-9 +11 +-10 +10 +-9 +11 +-10 +12 +-10 +12 +-10 +11 +-11 +11 +-10 +11 +-10 +11 +-10 +12 +-11 +9 +-10 +10 +-10 +10 +-9 +10 +-9 +10 +-10 +9 +-9 +10 +-10 +11 +-9 +11 +-10 +12 +-10 +11 +-10 +12 +-10 +11 +-10 +12 +-11 +10 +-11 +11 +-12 +9 +-8 +10 +-10 +10 +-11 +9 +-10 +10 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-12 +10 +-9 +9 +-10 +10 +-9 +11 +-10 +11 +-9 +10 +-9 +11 +-9 +11 +-8 +8 +-10 +11 +-10 +11 +-10 +10 +-10 +9 +-10 +11 +-11 +10 +-11 +12 +-9 +9 +-10 +10 +-10 +8 +-10 +12 +-10 +10 +-9 +9 +-11 +10 +-11 +10 +-10 +11 +-9 +9 +-9 +10 +-9 +11 +-10 +12 +-11 +12 +-11 +10 +-10 +10 +-9 +12 +-10 +12 +-9 +10 +-10 +11 +-10 +10 +-11 +11 +-10 +10 +-9 +8 +-11 +10 +-11 +10 +-10 +12 +-9 +11 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-11 +11 +-9 +10 +-10 +11 +-9 +10 +-10 +9 +-11 +11 +-9 +11 +-9 +11 +-10 +10 +-10 +10 +-10 +12 +-10 +11 +-10 +11 +-9 +12 +-9 +12 +-10 +10 +-10 +11 +-11 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +9 +-9 +10 +-10 +12 +-10 +10 +-10 +9 +-11 +11 +-11 +11 +-12 +10 +-10 +11 +-11 +11 +-10 +10 +-9 +10 +-10 +12 +-10 +11 +-9 +10 +-9 +10 +-9 +10 +-11 +11 +-11 +12 +-9 +11 +-12 +12 +-10 +12 +-10 +10 +-9 +11 +-10 +10 +-11 +11 +-10 +9 +-10 +10 +-10 +11 +-11 +11 +-9 +10 +-10 +10 +-10 +11 +-9 +11 +-11 +9 +-9 +10 +-10 +11 +-10 +11 +-9 +9 +-11 +13 +-9 +11 +-10 +11 +-10 +10 +-11 +10 +-8 +8 +-10 +11 +-10 +10 +-10 +9 +-12 +12 +-10 +10 +-9 +11 +-11 +13 +-10 +10 +-11 +11 +-10 +11 +-10 +11 +-11 +11 +-11 +11 +-10 +10 +-8 +10 +-10 +9 +-10 +11 +-10 +10 +-10 +12 +-11 +12 +-9 +10 +-11 +11 +-10 +12 +-10 +10 +-9 +9 +-10 +11 +-11 +7 +-10 +10 +-11 +10 +-10 +11 +-10 +12 +-9 +11 +-9 +11 +-10 +11 +-12 +10 +-11 +9 +-9 +10 +-9 +12 +-9 +10 +-8 +11 +-11 +11 +-10 +10 +-10 +11 +-11 +11 +-11 +9 +-10 +10 +-11 +12 +-11 +11 +-11 +11 +-10 +10 +-10 +11 +-8 +9 +-10 +10 +-10 +10 +-9 +9 +-10 +11 +-11 +10 +-11 +12 +-10 +11 +-9 +10 +-10 +10 +-9 +11 +-9 +11 +-8 +10 +-11 +11 +-10 +11 +-12 +12 +-10 +10 +-10 +10 +-11 +11 +-11 +9 +-10 +11 +-11 +10 +-11 +10 +-10 +11 +-11 +10 +-11 +11 +-12 +10 +-9 +11 +-12 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +10 +-11 +12 +-9 +11 +-11 +11 +-11 +11 +-11 +11 +-8 +11 +-10 +11 +-9 +11 +-11 +10 +-10 +9 +-8 +10 +-10 +11 +-10 +10 +-11 +11 +-9 +9 +-10 +10 +-9 +11 +-11 +10 +-11 +10 +-11 +10 +-11 +11 +-10 +9 +-12 +11 +-9 +10 +-10 +11 +-10 +12 +-9 +10 +-10 +12 +-9 +11 +-9 +11 +-9 +12 +-9 +10 +-9 +12 +-10 +11 +-10 +10 +-11 +11 +-10 +9 +-11 +12 +-10 +11 +-9 +13 +-8 +12 +-9 +10 +-9 +11 +-10 +10 +-10 +10 +-10 +12 +-9 +10 +-10 +10 +-9 +12 +-12 +11 +-11 +9 +-10 +10 +-8 +11 +-10 +12 +-9 +10 +-10 +11 +-10 +10 +-11 +9 +-9 +10 +-11 +10 +-9 +10 +-9 +10 +-11 +11 +-11 +10 +-10 +10 +-10 +9 +-9 +11 +-11 +11 +-11 +10 +-10 +9 +-11 +9 +-9 +9 +-10 +8 +-11 +10 +-8 +9 +-11 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +10 +-10 +12 +-9 +11 +-10 +12 +-8 +10 +-9 +11 +-10 +10 +-9 +9 +-11 +10 +-9 +10 +-11 +9 +-10 +12 +-11 +10 +-11 +11 +-12 +9 +-11 +11 +-12 +9 +-10 +10 +-12 +11 +-10 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +11 +-11 +12 +-9 +11 +-10 +11 +-11 +11 +-10 +9 +-10 +10 +-9 +11 +-10 +12 +-9 +11 +-9 +9 +-10 +10 +-10 +9 +-9 +10 +-10 +10 +-11 +11 +-9 +10 +-11 +11 +-11 +11 +-10 +10 +-9 +11 +-10 +12 +-10 +11 +-11 +12 +-9 +11 +-10 +10 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +9 +-10 +14 +9 +-16 +10 +-11 +9 +-11 +9 +-10 +9 +-11 +10 +-10 +10 +-8 +9 +-10 +9 +-10 +9 +-11 +12 +-10 +10 +-9 +9 +-9 +10 +-9 +10 +-9 +9 +-11 +10 +-10 +8 +-11 +10 +-9 +11 +-9 +10 +-9 +9 +-10 +10 +-10 +9 +-10 +9 +-9 +9 +-10 +9 +-10 +10 +-9 +9 +-9 +11 +-10 +11 +-9 +10 +-8 +10 +-10 +9 +-8 +11 +-9 +10 +-10 +10 +-9 +9 +-10 +10 +-10 +9 +-11 +10 +-10 +9 +-9 +9 +-10 +10 +-9 +11 +-10 +9 +-9 +10 +-10 +11 +-14 +-8 +15 +-7 +11 +-9 +11 +-8 +11 +-9 +10 +-10 +10 +-8 +11 +-9 +11 +-10 +12 +-8 +11 +-8 +11 +-10 +12 +-7 +11 +-10 +12 +-9 +11 +-9 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +8 +-9 +12 +-12 +10 +-10 +10 +-10 +9 +-10 +10 +-11 +11 +-12 +11 +-10 +11 +-10 +10 +-10 +10 +-8 +12 +-10 +11 +-9 +7 +-9 +10 +-11 +11 +-9 +11 +-9 +12 +-12 +12 +-9 +9 +-10 +11 +-10 +11 +-9 +10 +-10 +10 +-8 +10 +-10 +11 +-10 +11 +-11 +10 +-11 +14 +9 +-16 +10 +-11 +9 +-11 +10 +-12 +9 +-10 +8 +-11 +9 +-11 +10 +-12 +9 +-11 +11 +-10 +8 +-10 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +9 +-9 +11 +-11 +12 +-10 +10 +-9 +9 +-10 +11 +-9 +11 +-10 +11 +-10 +10 +-10 +10 +-9 +9 +-10 +10 +-9 +9 +-9 +9 +-10 +9 +-8 +8 +-9 +10 +-12 +-9 +14 +-8 +11 +-9 +10 +-9 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +11 +-9 +10 +-8 +12 +-9 +13 +-10 +10 +-9 +10 +-9 +12 +-11 +11 +-9 +9 +-8 +9 +-9 +10 +-9 +10 +-10 +10 +-10 +11 +-11 +10 +-11 +9 +-10 +10 +-12 +12 +-10 +11 +-11 +10 +-8 +10 +-11 +12 +-8 +10 +-10 +11 +-9 +9 +-10 +13 +-11 +9 +-10 +9 +-9 +11 +-12 +11 +-11 +11 +-9 +8 +-11 +12 +-9 +11 +-9 +11 +-11 +11 +-11 +10 +-11 +10 +-11 +11 +-10 +11 +-10 +9 +-10 +9 +-10 +9 +-11 +11 +-12 +12 +-10 +10 +-10 +10 +-11 +10 +-10 +10 +-11 +12 +-10 +12 +-10 +11 +-10 +11 +-11 +11 +-10 +9 +-10 +11 +-10 +15 +10 +-16 +10 +-12 +9 +-11 +10 +-11 +10 +-11 +10 +-10 +10 +-10 +9 +-10 +11 +-10 +10 +-9 +10 +-10 +11 +-9 +11 +-10 +10 +-9 +11 +-9 +11 +-13 +-8 +15 +-8 +10 +-9 +10 +-7 +9 +-10 +10 +-9 +10 +-9 +11 +-9 +11 +-9 +10 +-11 +11 +-10 +9 +-11 +11 +-9 +9 +-11 +11 +-9 +10 +-9 +12 +-10 +10 +-10 +10 +-11 +10 +-9 +11 +-10 +8 +-10 +11 +-8 +10 +-10 +12 +-10 +12 +-10 +12 +-8 +12 +-10 +12 +-10 +10 +-10 +12 +-9 +10 +-8 +10 +-9 +10 +-11 +10 +-10 +9 +-11 +10 +-10 +10 +-9 +9 +-10 +11 +-11 +11 +-10 +9 +-9 +10 +-10 +13 +-11 +12 +-8 +12 +-10 +10 +-10 +11 +-10 +14 +9 +-14 +10 +-12 +10 +-11 +9 +-11 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +9 +-9 +9 +-11 +9 +-12 +9 +-10 +9 +-10 +8 +-9 +8 +-11 +10 +-12 +10 +-10 +11 +-10 +8 +-11 +9 +-9 +9 +-10 +10 +-9 +10 +-8 +10 +-9 +10 +-8 +11 +-9 +11 +-9 +11 +-8 +11 +-10 +11 +-9 +10 +-10 +11 +-12 +-9 +12 +-7 +9 +-9 +11 +-10 +10 +-10 +9 +-11 +9 +-8 +9 +-10 +10 +-10 +10 +-8 +10 +-9 +8 +-10 +10 +-9 +10 +-11 +11 +-11 +9 +-11 +10 +-10 +11 +-8 +10 +-10 +10 +-11 +11 +-11 +9 +-9 +9 +-9 +9 +-10 +12 +-9 +10 +-8 +8 +-9 +12 +-9 +12 +-10 +11 +-9 +11 +-9 +10 +-10 +12 +-10 +10 +-10 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +12 +-8 +11 +-10 +10 +-10 +11 +-10 +11 +-9 +10 +-9 +9 +-10 +11 +-11 +10 +-11 +11 +-11 +10 +-10 +9 +-11 +11 +-9 +11 +-10 +10 +-10 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-9 +12 +-10 +9 +-10 +11 +-9 +11 +-9 +10 +-10 +10 +-9 +11 +-9 +10 +-9 +10 +-9 +11 +-10 +11 +-10 +11 +-10 +10 +-10 +11 +-9 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-11 +10 +-11 +12 +-12 +11 +-10 +10 +-10 +12 +-12 +10 +-10 +11 +-10 +11 +-10 +11 +-9 +12 +-10 +11 +-10 +12 +-10 +8 +-8 +11 +-12 +13 +-11 +9 +-11 +9 +-11 +10 +-11 +10 +-10 +10 +9 +-16 +10 +-12 +9 +-11 +10 +-11 +9 +-12 +10 +-10 +8 +-11 +10 +-9 +8 +-9 +9 +-11 +9 +-11 +9 +-10 +12 +-10 +11 +-10 +9 +-10 +11 +-10 +11 +-8 +11 +-8 +10 +-8 +10 +-10 +13 +-9 +9 +-9 +10 +-9 +10 +-10 +10 +-9 +9 +-9 +10 +-10 +12 +-10 +9 +-9 +10 +-10 +11 +-9 +9 +-13 +-8 +15 +-8 +11 +-9 +12 +-10 +10 +-9 +10 +-9 +10 +-9 +10 +-10 +10 +-10 +12 +-10 +10 +-10 +11 +-9 +10 +-10 +11 +-9 +13 +-9 +10 +-9 +10 +-9 +11 +-9 +10 +-9 +10 +-10 +11 +-12 +9 +-9 +11 +-9 +10 +-8 +12 +-9 +12 +-10 +11 +-10 +11 +-9 +11 +-9 +11 +-9 +11 +-11 +11 +-9 +11 +-9 +11 +-10 +11 +-11 +10 +-10 +11 +-10 +9 +-10 +11 +-11 +10 +-11 +10 +-11 +10 +-11 +10 +-10 +11 +-12 +10 +-10 +9 +-11 +10 +-9 +12 +-8 +8 +-11 +12 +-9 +10 +-10 +11 +-9 +12 +-10 +12 +-9 +11 +-11 +9 +-9 +7 +-9 +10 +-10 +12 +-10 +12 +-10 +10 +-11 +11 +-10 +12 +-10 +11 +-11 +12 +-10 +9 +-10 +11 +-13 +9 +-10 +9 +-9 +11 +-12 +10 +-10 +11 +-8 +9 +-11 +11 +-9 +11 +-9 +12 +-10 +11 +-9 +11 +-10 +9 +-10 +10 +-11 +13 +10 +-14 +12 +-13 +9 +-10 +11 +-11 +9 +-10 +9 +-10 +10 +-11 +9 +-11 +9 +-10 +8 +-10 +8 +-9 +9 +-9 +10 +-10 +11 +-9 +10 +-9 +10 +-9 +10 +-9 +9 +-9 +11 +-10 +11 +-10 +10 +-10 +9 +-10 +9 +-10 +9 +-9 +10 +-10 +10 +-9 +9 +-10 +9 +-8 +10 +-9 +9 +-11 +11 +-9 +9 +-13 +-10 +14 +-8 +10 +-10 +10 +-11 +11 +-8 +9 +-9 +9 +-10 +11 +-9 +10 +-9 +11 +-11 +10 +-9 +11 +-10 +13 +-10 +10 +-10 +10 +-10 +10 +-9 +14 +9 +-14 +8 +-11 +10 +-11 +10 +-12 +9 +-11 +9 +-10 +8 +-10 +9 +-10 +10 +-10 +9 +-10 +9 +-10 +11 +-8 +9 +-8 +10 +-10 +12 +-7 +9 +-13 +-8 +14 +-7 +11 +-9 +11 +-8 +11 +-9 +10 +-8 +11 +-8 +10 +-10 +12 +-9 +13 +-9 +11 +-9 +11 +-9 +12 +-10 +9 +-10 +11 +-10 +11 +-9 +9 +-9 +11 +-12 +10 +-11 +8 +-11 +9 +-11 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-11 +10 +-10 +11 +-9 +11 +-9 +11 +-10 +10 +-11 +11 +-11 +11 +-11 +10 +-10 +9 +-11 +11 +-11 +10 +-9 +10 +-11 +10 +-10 +10 +-10 +11 +-10 +12 +-9 +10 +-9 +12 +-8 +10 +-8 +10 +-10 +12 +-10 +10 +-9 +12 +-10 +11 +-10 +10 +-9 +11 +-10 +11 +-9 +10 +-11 +10 +-10 +9 +-10 +11 +-10 +10 +-10 +11 +-10 +9 +-10 +10 +-10 +11 +-9 +11 +-9 +12 +-10 +10 +-9 +9 +-10 +12 +-11 +11 +-9 +11 +-10 +10 +-10 +10 +-9 +11 +-11 +11 +-10 +10 +-10 +9 +-11 +11 +-10 +12 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +12 +-12 +10 +-11 +9 +-10 +10 +-10 +10 +-9 +9 +-10 +12 +-11 +11 +-9 +11 +-9 +12 +-11 +10 +-11 +10 +-10 +10 +-9 +10 +-10 +11 +-9 +11 +-9 +12 +-10 +11 +-11 +12 +-10 +12 +-9 +10 +-9 +12 +-11 +10 +-11 +10 +-10 +10 +-10 +8 +-10 +10 +-10 +10 +-9 +11 +-9 +11 +-9 +8 +-10 +11 +-11 +11 +-12 +10 +-11 +11 +-10 +10 +-9 +10 +-10 +12 +-10 +11 +-10 +10 +-11 +10 +-10 +12 +-10 +10 +-9 +11 +-10 +12 +-9 +10 +-10 +10 +-10 +9 +-9 +10 +-9 +11 +-10 +12 +-10 +11 +-9 +11 +-10 +11 +-11 +11 +-10 +9 +-10 +11 +-11 +9 +-10 +10 +-9 +10 +-10 +11 +-9 +9 +-9 +12 +-9 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +11 +-10 +12 +-10 +11 +-10 +10 +-10 +11 +-9 +11 +-10 +12 +-10 +10 +-11 +10 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-8 +10 +-11 +10 +-10 +10 +-9 +10 +-10 +11 +-11 +11 +-10 +11 +-10 +11 +-10 +9 +-9 +10 +-10 +11 +-10 +10 +-10 +11 +-10 +9 +-10 +11 +-10 +9 +-10 +10 +-10 +9 +-10 +10 +-11 +10 +-11 +11 +-11 +10 +-10 +9 +-9 +10 +-11 +11 +-11 +10 +-10 +10 +-10 +10 +-9 +11 +-11 +12 +-10 +11 +-9 +11 +-10 +9 +-11 +11 +-10 +9 +-11 +12 +-10 +10 +-10 +10 +-11 +9 +-11 +12 +-10 +10 +-10 +9 +-10 +10 +-10 +13 +-10 +9 +-10 +12 +-11 +10 +-10 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +12 +-10 +11 +-11 +9 +-11 +9 +-10 +10 +-10 +10 +-9 +10 +-10 +12 +-8 +12 +-10 +12 +-10 +11 +-10 +12 +-9 +12 +-10 +10 +-8 +10 +-10 +11 +-9 +11 +-9 +9 +-11 +12 +-11 +10 +-10 +9 +-11 +10 +-10 +10 +-10 +9 +-9 +11 +-10 +10 +-11 +10 +-10 +9 +-12 +11 +-10 +9 +-12 +11 +-10 +10 +-9 +11 +-11 +12 +-8 +10 +-9 +10 +-10 +11 +-11 +10 +-9 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +11 +-10 +10 +-9 +12 +-10 +12 +-11 +12 +-10 +13 +-10 +9 +-9 +12 +-10 +10 +-10 +10 +-9 +11 +-10 +12 +-10 +10 +-12 +11 +-9 +11 +-8 +10 +-10 +12 +-10 +12 +-10 +11 +-9 +10 +-10 +11 +-11 +10 +-12 +9 +-8 +10 +-10 +10 +-10 +10 +-10 +10 +-11 +9 +-11 +10 +-11 +10 +-9 +10 +-11 +12 +-10 +12 +-9 +11 +-10 +11 +-11 +11 +-9 +10 +-10 +11 +-10 +9 +-10 +9 +-11 +11 +-12 +10 +-10 +10 +-9 +9 +-12 +9 +-11 +11 +-10 +9 +-11 +9 +-10 +11 +-11 +12 +-9 +12 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-9 +11 +-10 +11 +-9 +9 +-11 +11 +-10 +10 +-10 +12 +-9 +10 +-9 +11 +-9 +12 +-10 +9 +-9 +10 +-11 +11 +-10 +11 +-11 +10 +-10 +10 +-8 +9 +-9 +10 +-10 +11 +-10 +12 +-9 +10 +-10 +10 +-8 +11 +-10 +12 +-9 +11 +-9 +10 +-10 +10 +-11 +10 +-11 +9 +-10 +10 +-11 +11 +-11 +10 +-12 +10 +-10 +10 +-11 +10 +-10 +10 +-11 +10 +-11 +10 +-10 +9 +-12 +11 +-10 +10 +-9 +11 +-10 +11 +-9 +11 +-8 +11 +-10 +11 +-9 +11 +-10 +10 +-10 +10 +-9 +10 +-9 +9 +-10 +9 +-9 +9 +-10 +11 +-9 +12 +-9 +10 +-9 +13 +-11 +9 +-11 +10 +-10 +10 +-9 +10 +-10 +12 +-10 +11 +-10 +11 +-11 +10 +-10 +11 +-11 +12 +-10 +11 +-11 +12 +-9 +10 +-10 +10 +-11 +10 +-12 +10 +-10 +10 +-11 +9 +-11 +9 +-10 +9 +-10 +9 +-11 +9 +-11 +10 +-10 +10 +-11 +11 +-10 +11 +-8 +11 +-10 +12 +-9 +11 +-9 +13 +-9 +10 +-9 +11 +-8 +10 +-10 +10 +-10 +12 +-9 +9 +-11 +12 +-9 +10 +-10 +9 +-9 +11 +-11 +11 +-10 +10 +-9 +12 +-12 +10 +-11 +9 +-10 +11 +-11 +10 +-9 +10 +-10 +9 +-11 +10 +-10 +9 +-10 +10 +-10 +8 +-10 +11 +-9 +10 +-10 +11 +-9 +10 +-10 +10 +-10 +10 +-11 +9 +-11 +10 +-11 +11 +-12 +10 +-9 +11 +-10 +11 +-10 +11 +-9 +11 +-9 +9 +-9 +11 +-10 +11 +-9 +11 +-10 +11 +-10 +10 +-8 +10 +-10 +11 +-10 +11 +-10 +11 +-11 +11 +-9 +12 +-9 +10 +-10 +11 +-10 +11 +-9 +11 +-11 +11 +-10 +10 +-10 +10 +-11 +10 +-10 +9 +-10 +10 +-11 +12 +-10 +10 +-8 +10 +-9 +11 +-9 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +9 +-11 +10 +-10 +14 +10 +-14 +10 +-11 +11 +-10 +10 +-10 +11 +-10 +11 +-10 +9 +-10 +10 +-10 +9 +-10 +9 +-11 +10 +-10 +11 +-11 +9 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-10 +10 +-10 +10 +-9 +9 +-9 +9 +-10 +10 +-9 +9 +-9 +10 +-11 +9 +-9 +8 +-10 +9 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +10 +-9 +11 +-10 +10 +-10 +11 +-10 +9 +-8 +9 +-10 +10 +-10 +10 +-10 +9 +-9 +11 +-8 +9 +-9 +10 +-9 +9 +-9 +11 +-10 +9 +-9 +11 +-9 +10 +-13 +-8 +15 +-8 +11 +-9 +9 +-10 +9 +-9 +11 +-10 +11 +-9 +10 +-10 +12 +-9 +9 +-10 +9 +-10 +10 +-9 +10 +-11 +10 +-9 +11 +-9 +10 +-9 +11 +-9 +10 +-9 +11 +-8 +11 +-10 +13 +-9 +12 +-9 +10 +-9 +12 +-9 +10 +-10 +12 +-10 +11 +-8 +11 +-9 +9 +-10 +10 +-9 +10 +-10 +12 +-11 +10 +-10 +9 +-11 +10 +-9 +8 +-12 +11 +-11 +9 +-11 +9 +-11 +10 +-11 +9 +-11 +9 +-10 +9 +-11 +8 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +15 +10 +-15 +12 +-11 +11 +-9 +11 +-10 +9 +-9 +10 +-8 +10 +-9 +11 +-10 +9 +-9 +8 +-11 +9 +-9 +7 +-11 +10 +-10 +10 +-10 +9 +-8 +9 +-10 +10 +-9 +11 +-10 +9 +-11 +9 +-9 +8 +-10 +10 +-9 +10 +-10 +10 +-8 +11 +-10 +9 +-8 +8 +-10 +11 +-9 +11 +-10 +9 +-10 +10 +-10 +8 +-13 +-8 +13 +-8 +10 +-9 +9 +-9 +11 +-9 +10 +-9 +11 +-9 +11 +-9 +10 +-9 +11 +-9 +11 +-9 +11 +-9 +11 +-9 +10 +-9 +10 +-9 +9 +-11 +11 +-9 +11 +-9 +10 +-9 +11 +-10 +9 +-9 +10 +-8 +12 +-10 +10 +-10 +11 +-9 +9 +-11 +11 +-9 +9 +-11 +10 +-11 +10 +-10 +9 +-11 +10 +-11 +12 +-10 +10 +-11 +11 +-10 +11 +-9 +9 +-11 +10 +-10 +10 +-11 +9 +-10 +11 +-10 +10 +-11 +11 +-10 +10 +-11 +11 +-11 +9 +-11 +10 +-10 +10 +-10 +10 +-11 +10 +-11 +11 +-10 +11 +-9 +11 +-9 +10 +-9 +12 +-10 +12 +-9 +13 +-9 +10 +-10 +12 +-9 +12 +-9 +11 +-9 +11 +-9 +11 +-11 +11 +-10 +14 +9 +-16 +11 +-12 +9 +-10 +9 +-10 +8 +-10 +10 +-12 +9 +-10 +9 +-10 +9 +-10 +11 +-11 +10 +-11 +10 +-10 +10 +-10 +9 +-9 +10 +-11 +10 +-13 +-8 +13 +-10 +11 +-10 +11 +-10 +11 +-9 +12 +-8 +11 +-9 +12 +-8 +9 +-9 +12 +-8 +10 +-10 +12 +-9 +10 +-9 +9 +-9 +9 +-11 +11 +-9 +10 +-11 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-8 +11 +-9 +10 +-9 +10 +-9 +9 +-9 +11 +-10 +10 +-11 +10 +-11 +11 +-11 +10 +-12 +9 +-10 +11 +-11 +10 +-10 +8 +-9 +11 +-10 +10 +-9 +11 +-9 +12 +-9 +11 +-9 +11 +-10 +11 +-11 +12 +-9 +11 +-9 +11 +-10 +11 +-10 +14 +10 +-15 +10 +-11 +11 +-11 +9 +-10 +10 +-11 +9 +-10 +9 +-12 +9 +-10 +9 +-9 +10 +-10 +9 +-11 +10 +-10 +11 +-10 +9 +-9 +9 +-9 +10 +-9 +10 +-10 +9 +-9 +10 +-10 +10 +-10 +10 +-10 +9 +-11 +11 +-10 +10 +-11 +9 +-9 +11 +-9 +11 +-9 +10 +-9 +10 +-9 +9 +-10 +9 +-10 +11 +-13 +-9 +14 +-8 +11 +-10 +11 +-10 +10 +-10 +11 +-10 +10 +-9 +12 +-9 +10 +-9 +11 +-11 +12 +-9 +11 +-9 +11 +-8 +11 +-9 +12 +-9 +11 +-8 +12 +-9 +11 +-9 +9 +-10 +9 +-9 +9 +-9 +10 +-11 +12 +-11 +11 +-9 +11 +-10 +10 +-11 +11 +-11 +11 +-10 +9 +-11 +11 +-10 +11 +-10 +10 +-10 +8 +-11 +13 +-9 +11 +-11 +10 +-10 +10 +-10 +9 +-9 +10 +-11 +10 +-10 +10 +-9 +11 +-10 +10 +-11 +10 +-9 +12 +-9 +10 +-10 +11 +-10 +12 +-10 +10 +-10 +12 +-9 +10 +-10 +10 +-11 +11 +-11 +11 +-9 +9 +-9 +11 +-10 +11 +-10 +12 +-9 +10 +-11 +10 +-10 +8 +-11 +11 +-10 +9 +-9 +10 +-11 +11 +-9 +11 +-10 +10 +-9 +9 +-10 +11 +-10 +10 +-9 +11 +-10 +11 +-9 +13 +-8 +12 +-10 +11 +-8 +10 +-10 +10 +-10 +10 +-10 +10 +-9 +11 +-10 +9 +-10 +9 +-11 +12 +-12 +9 +-11 +12 +-10 +10 +-11 +11 +-10 +10 +-10 +10 +-9 +11 +-10 +9 +-9 +11 +-10 +11 +-9 +10 +-9 +12 +-10 +11 +-9 +14 +10 +-15 +11 +-11 +9 +-10 +10 +-13 +9 +-10 +8 +-10 +9 +-12 +10 +-11 +10 +-10 +10 +-9 +10 +-9 +10 +-9 +9 +-10 +10 +-11 +9 +-11 +10 +-9 +9 +-9 +8 +-10 +10 +-10 +9 +-10 +8 +-9 +8 +-9 +9 +-11 +10 +-9 +9 +-9 +10 +-10 +10 +-9 +9 +-9 +11 +-8 +11 +-8 +11 +-8 +12 +-11 +-7 +15 +-8 +11 +-10 +12 +-8 +10 +-9 +12 +-9 +11 +-8 +10 +-9 +12 +-9 +11 +-9 +9 +-10 +10 +-10 +10 +-11 +10 +-9 +10 +-11 +9 +-9 +11 +-11 +10 +-9 +10 +-10 +10 +-11 +11 +-10 +11 +-11 +12 +-12 +10 +-10 +10 +-12 +12 +-12 +10 +-10 +9 +-10 +9 +-10 +11 +-11 +10 +-9 +11 +-9 +11 +-9 +12 +-9 +10 +-9 +13 +-10 +11 +-9 +10 +-10 +11 +-8 +11 +-9 +11 +-10 +11 +-9 +11 +-10 +13 +-11 +11 +-10 +11 +-10 +9 +-11 +9 +-10 +11 +-11 +10 +-10 +10 +-9 +10 +-11 +11 +-10 +11 +-9 +12 +-9 +10 +-10 +11 +-10 +10 +-9 +9 +-9 +10 +-10 +12 +-10 +11 +-11 +10 +-12 +9 +-11 +11 +-10 +9 +-11 +10 +-9 +11 +-10 +12 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-9 +11 +-11 +11 +-10 +10 +-10 +11 +-10 +12 +-11 +11 +-9 +10 +-9 +14 +10 +-16 +10 +-10 +9 +-11 +9 +-11 +9 +-11 +10 +-10 +9 +-9 +8 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-9 +12 +-10 +9 +-9 +9 +-9 +10 +-10 +10 +-9 +11 +-10 +9 +-10 +11 +-9 +10 +-10 +10 +-9 +10 +-9 +9 +-9 +9 +-9 +10 +-9 +9 +-10 +10 +-9 +10 +-8 +11 +-11 +-8 +14 +-8 +12 +-10 +12 +-9 +11 +-9 +11 +-9 +10 +-10 +11 +-9 +11 +-10 +10 +-9 +9 +-11 +10 +-11 +10 +-8 +7 +-10 +11 +-9 +11 +-8 +13 +10 +-15 +10 +-11 +9 +-11 +9 +-11 +9 +-10 +8 +-10 +11 +-11 +10 +-10 +10 +-9 +9 +-10 +9 +-10 +9 +-10 +10 +-10 +9 +-9 +10 +-10 +9 +-13 +-9 +13 +-8 +11 +-10 +11 +-9 +11 +-8 +10 +-9 +12 +-8 +11 +-9 +11 +-10 +11 +-10 +12 +-10 +9 +-10 +11 +-10 +9 +-10 +10 +-8 +9 +-11 +12 +-10 +10 +-9 +11 +-8 +10 +-10 +12 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +9 +-9 +11 +-9 +10 +-9 +10 +-9 +11 +-11 +12 +-9 +10 +-10 +12 +-9 +9 +-11 +12 +-10 +11 +-9 +10 +-9 +12 +-9 +12 +-9 +11 +-9 +12 +-9 +10 +-8 +11 +-10 +12 +-11 +10 +-11 +10 +-10 +9 +-8 +9 +-10 +10 +-11 +11 +-11 +9 +-10 +12 +-10 +10 +-12 +11 +-11 +10 +-9 +9 +-9 +9 +-11 +9 +-9 +11 +-10 +9 +-10 +10 +-11 +10 +-11 +10 +-11 +11 +-11 +11 +-10 +10 +-10 +10 +-9 +11 +-10 +10 +-9 +11 +-11 +11 +-10 +9 +-11 +9 +-12 +10 +-11 +12 +-12 +11 +-9 +11 +-10 +10 +-10 +10 +-10 +10 +-11 +12 +-10 +11 +-10 +11 +-10 +11 +-10 +10 +-11 +11 +-10 +10 +-9 +11 +-9 +11 +-9 +11 +-10 +11 +-10 +10 +-9 +11 +-10 +10 +-11 +11 +-10 +11 +-9 +11 +-10 +11 +-10 +10 +-9 +10 +-11 +11 +-11 +10 +-9 +10 +-11 +11 +-9 +10 +-9 +11 +-11 +10 +-10 +10 +-10 +10 +-11 +11 +-11 +9 +-11 +9 +-12 +11 +-11 +11 +-12 +9 +-9 +9 +-10 +9 +-10 +9 +-12 +10 +-11 +11 +-11 +11 +-11 +11 +-10 +9 +-9 +12 +-10 +10 +-10 +11 +-10 +10 +-11 +12 +-11 +10 +-10 +13 +-11 +10 +-10 +10 +-10 +11 +-10 +12 +-10 +11 +-9 +9 +-11 +10 +-10 +10 +-11 +12 +-10 +12 +-10 +12 +-9 +9 +-11 +12 +-10 +11 +-10 +11 +-11 +11 +-8 +9 +-8 +11 +-10 +10 +-10 +11 +-10 +12 +-10 +11 +-10 +10 +-11 +11 +-10 +8 +-10 +10 +-11 +10 +-11 +9 +-10 +9 +-11 +10 +-10 +9 +-9 +10 +-12 +11 +-10 +10 +-10 +10 +-10 +12 +-11 +10 +-9 +8 +-11 +12 +-8 +11 +-9 +10 +-10 +12 +-9 +10 +-10 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +11 +-9 +12 +-10 +12 +-10 +12 +-8 +11 +-9 +11 +-9 +11 +-10 +11 +-10 +11 +-9 +8 +-10 +10 +-10 +11 +-11 +11 +-10 +9 +-10 +11 +-9 +10 +-11 +9 +-10 +10 +-11 +10 +-10 +11 +-10 +10 +-11 +10 +-10 +10 +-10 +10 +-9 +11 +-9 +11 +-9 +11 +-11 +11 +-9 +9 +-10 +11 +-12 +9 +-11 +10 +-9 +10 +-11 +9 +-10 +12 +-11 +11 +-10 +10 +-11 +12 +-11 +11 +-10 +10 +-10 +11 +-8 +9 +-9 +11 +-11 +11 +-10 +10 +-11 +9 +-10 +11 +-10 +12 +-9 +10 +-10 +12 +-10 +9 +-9 +10 +-8 +13 +-11 +12 +-10 +10 +-9 +11 +-10 +11 +-10 +10 +-10 +10 +-10 +9 +-11 +10 +-11 +10 +-11 +10 +-9 +9 +-10 +12 +-9 +10 +-10 +11 +-11 +11 +-9 +11 +-8 +11 +-10 +11 +-10 +11 +-9 +12 +-10 +12 +-9 +12 +-10 +11 +-10 +11 +-11 +10 +-8 +11 +-11 +9 +-10 +9 +-11 +11 +-10 +10 +-9 +11 +-11 +11 +-10 +10 +-10 +11 +-12 +11 +-10 +11 +-9 +11 +-10 +11 +-10 +11 +-10 +10 +-11 +10 +-11 +11 +-11 +10 +-10 +10 +-11 +13 +-12 +13 +-9 +9 +-8 +10 +-9 +13 +-11 +11 +-10 +13 +-11 +11 +-9 +10 +-10 +11 +-11 +8 +-10 +10 +-10 +9 +-11 +11 +-12 +10 +-11 +9 +-11 +10 +-11 +10 +-10 +9 +-11 +11 +-11 +11 +-10 +10 +-8 +11 +-10 +12 +-9 +10 +-11 +10 +-11 +10 +-11 +9 +-9 +9 +-11 +12 +-9 +10 +-9 +10 +-9 +12 +-8 +9 +-9 +10 +-10 +11 +-11 +10 +-10 +10 +-10 +10 +-12 +10 +-10 +10 +-10 +11 +-10 +10 +-10 +10 +-12 +12 +-10 +10 +-10 +11 +-9 +10 +-11 +12 +-10 +10 +-10 +12 +-9 +11 +-9 +9 +-11 +12 +-11 +11 +-10 +9 +-10 +10 +-11 +11 +-10 +9 +-9 +12 +-11 +11 +-10 +10 +-10 +11 +-11 +9 +-9 +9 +-10 +11 +-9 +12 +-9 +12 +-10 +10 +-11 +10 +-10 +10 +-10 +9 +-9 +11 +-11 +11 +-11 +11 +-11 +9 +-10 +11 +-9 +10 +-10 +10 +-10 +9 +-11 +11 +-10 +10 +-10 +12 +-11 +12 +-10 +10 +-10 +10 +-10 +9 +-9 +10 +-10 +11 +-9 +13 +-10 +12 +-11 +10 +-11 +10 +-9 +10 +-11 +10 +-10 +10 +-11 +12 +-10 +9 +-8 +12 +-9 +12 +-10 +12 +-9 +11 +-9 +10 +-10 +11 +-10 +12 +-10 +9 +-9 +11 +-9 +10 +-10 +11 +-9 +11 +-10 +12 +-9 +10 +-9 +10 +-9 +12 +-11 +12 +-10 +9 +-11 +10 +-10 +12 +-11 +11 +-11 +12 +-8 +8 +-10 +11 +-9 +10 +-12 +11 +-10 +9 +-11 +10 +-11 +9 +-9 +10 +-11 +10 +-11 +10 +-12 +10 +-11 +11 +-11 +9 +-11 +10 +-11 +9 +-9 +10 +-10 +10 +-11 +10 +-10 +10 +-10 +9 +-11 +10 +-11 +10 +-10 +10 +-10 +9 +-10 +11 +-11 +10 +-9 +12 +-9 +9 +-11 +12 +-9 +11 +-11 +12 +-11 +9 +-10 +10 +-9 +12 +-11 +11 +-10 +11 +-9 +9 +-9 +10 +-11 +10 +-10 +10 +-9 +10 +-10 +10 +-10 +11 +-9 +11 +-11 +10 +-10 +11 +-10 +12 +-11 +11 +-10 +11 +-11 +12 +-10 +9 +-10 +12 +-10 +11 +-10 +11 +-10 +11 +-11 +11 +-9 +9 +-11 +11 +-10 +12 +-9 +11 +-10 +11 +-9 +9 +-10 +12 +-10 +10 +-10 +11 +-9 +9 +-10 +11 +-9 +10 +-8 +11 +-10 +10 +-11 +13 +10 +-17 +10 +-12 +11 +-11 +9 +-10 +8 +-10 +9 +-10 +10 +-10 +10 +-10 +11 +-10 +9 +-11 +12 +-10 +9 +-10 +11 +-9 +9 +-9 +10 +-8 +9 +-10 +10 +-9 +10 +-10 +9 +-10 +9 +-10 +9 +-9 +10 +-10 +9 +-8 +8 +-10 +9 +-12 +10 +-9 +10 +-10 +10 +-9 +9 +-9 +9 +-9 +9 +-10 +10 +-9 +10 +-9 +9 +-10 +10 +-10 +9 +-9 +8 +-10 +10 +-11 +10 +-9 +10 +-9 +11 +-8 +10 +-9 +9 +-9 +12 +-8 +10 +-10 +9 +-9 +10 +-9 +10 +-12 +-9 +13 +-9 +12 +-10 +11 +-8 +9 +-10 +10 +-9 +9 +-8 +11 +-9 +13 +-11 +11 +-9 +13 +-9 +10 +-8 +10 +-9 +10 +-8 +10 +-9 +10 +-10 +11 +-11 +11 +-9 +10 +-9 +11 +-10 +11 +-10 +10 +-9 +10 +-11 +11 +-11 +10 +-10 +10 +-11 +10 +-10 +10 +-9 +10 +-10 +11 +-10 +11 +-9 +12 +-9 +11 +-10 +11 +-9 +11 +-9 +12 +-10 +9 +-8 +10 +-10 +11 +-12 +11 +-10 +10 +-12 +10 +-10 +12 +-10 +11 +-11 +10 +-10 +12 +-9 +12 +-10 +10 +-9 +14 +11 +-15 +10 +-12 +11 +-11 +9 +-12 +10 +-11 +10 +-12 +8 +-11 +9 +-10 +10 +-10 +10 +-10 +9 +-10 +9 +-10 +8 +-9 +10 +-10 +11 +-9 +8 +-11 +12 +-10 +11 +-10 +11 +-9 +12 +-9 +10 +-9 +11 +-8 +11 +-9 +10 +-9 +9 +-10 +10 +-8 +10 +-11 +10 +-10 +8 +-10 +9 +-10 +8 +-10 +8 +-14 +-7 +10 +-8 +10 +-10 +10 +-10 +11 +-10 +9 +-10 +10 +-9 +10 +-8 +11 +-9 +10 +-10 +10 +-9 +10 +-10 +12 +-8 +11 +-9 +11 +-7 +11 +-9 +10 +-9 +10 +-10 +11 +-10 +9 +-10 +12 +-11 +10 +-9 +10 +-10 +11 +-9 +10 +-9 +9 +-9 +11 +-9 +11 +-10 +10 +-8 +9 +-9 +11 +-10 +11 +-10 +12 +-10 +9 +-10 +9 +-11 +10 +-10 +10 +-9 +10 +-9 +10 +-10 +10 +-11 +12 +-10 +11 +-9 +9 +-9 +11 +-9 +11 +-9 +11 +-10 +12 +-9 +11 +-10 +10 +-11 +10 +-11 +12 +-10 +11 +-10 +10 +-8 +11 +-10 +12 +-10 +11 +-9 +9 +-11 +11 +-11 +10 +-9 +11 +-10 +11 +-9 +11 +-10 +11 +-11 +10 +-12 +13 +10 +-16 +9 +-11 +9 +-10 +10 +-12 +9 +-12 +9 +-11 +9 +-11 +9 +-10 +9 +-12 +10 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-9 +9 +-12 +-8 +12 +-8 +12 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +10 +-10 +11 +-10 +11 +-8 +11 +-10 +10 +-9 +11 +-9 +12 +-9 +10 +-9 +10 +-10 +11 +-9 +10 +-9 +11 +-10 +9 +-12 +10 +-10 +10 +-11 +10 +-11 +11 +-11 +11 +-10 +12 +-10 +11 +-12 +9 +-11 +11 +-10 +10 +-9 +11 +-10 +13 +-9 +11 +-10 +10 +-10 +12 +-11 +12 +-10 +11 +-10 +11 +-8 +11 +-9 +12 +-10 +12 +-10 +11 +-10 +10 +-9 +10 +-9 +11 +-11 +9 +-10 +10 +-11 +15 +9 +-16 +12 +-9 +9 +-10 +9 +-10 +10 +-10 +10 +-11 +9 +-10 +8 +-11 +10 +-10 +9 +-10 +10 +-9 +8 +-9 +9 +-10 +10 +-10 +11 +-9 +8 +-9 +10 +-9 +9 +-10 +10 +-10 +10 +-10 +9 +-8 +9 +-8 +10 +-9 +10 +-9 +10 +-9 +11 +-12 +9 +-10 +10 +-8 +8 +-9 +10 +-10 +11 +-9 +9 +-12 +-10 +13 +-8 +11 +-9 +11 +-9 +11 +-9 +11 +-9 +10 +-9 +11 +-11 +9 +-9 +10 +-9 +12 +-12 +12 +-9 +11 +-10 +9 +-8 +11 +-9 +11 +-10 +10 +-9 +11 +-9 +8 +-11 +10 +-10 +11 +-9 +10 +-10 +12 +-10 +10 +-9 +10 +-9 +10 +-11 +9 +-10 +9 +-11 +11 +-10 +11 +-11 +11 +-10 +8 +-9 +11 +-8 +12 +-10 +11 +-8 +10 +-10 +9 +-11 +10 +-9 +11 +-11 +12 +-10 +12 +-9 +10 +-9 +12 +-9 +11 +-10 +12 +-10 +9 +-10 +13 +-10 +10 +-12 +11 +-10 +10 +-10 +10 +-10 +11 +-11 +10 +-10 +11 +-9 +9 +-12 +11 +-11 +10 +-10 +10 +-11 +12 +-10 +10 +-7 +12 +-10 +11 +-8 +10 +-12 +11 +-9 +9 +-10 +10 +-10 +9 +-11 +10 +-10 +9 +-10 +10 +-11 +11 +-11 +11 +-11 +10 +-10 +9 +-10 +10 +-11 +11 +-10 +12 +-8 +8 +-10 +9 +-11 +10 +-10 +10 +-11 +10 +-10 +11 +-8 +11 +-10 +12 +-11 +11 +-9 +11 +-8 +8 +-11 +13 +-10 +13 +-8 +10 +-11 +11 +-9 +10 +-10 +11 +-10 +10 +-11 +11 +-9 +13 +10 +-15 +10 +-11 +10 +-11 +9 +-11 +9 +-10 +9 +-9 +8 +-12 +9 +-11 +9 +-10 +9 +-10 +8 +-9 +9 +-10 +11 +-9 +9 +-7 +9 +-10 +11 +-9 +10 +-9 +11 +-10 +10 +-7 +10 +-10 +11 +-8 +10 +-10 +11 +-9 +11 +-11 +10 +-9 +10 +-9 +10 +-9 +8 +-12 +9 +-11 +10 +-11 +10 +-11 +9 +-11 +-8 +13 +-8 +10 +-9 +11 +-10 +11 +-9 +11 +-10 +11 +-9 +10 +-9 +11 +-9 +11 +-12 +12 +-10 +11 +-9 +10 +-12 +10 +-10 +11 +-10 +9 +-12 +11 +-10 +10 +-9 +10 +-10 +10 +-9 +10 +-10 +11 +-10 +10 +-10 +12 +-10 +11 +-8 +10 +-9 +10 +-8 +11 +-11 +10 +-8 +10 +-10 +10 +-11 +10 +-10 +9 +-11 +12 +-10 +10 +-10 +13 +-7 +10 +-10 +10 +-9 +10 +-10 +11 +-11 +10 +-10 +11 +-10 +11 +-10 +10 +-9 +10 +-10 +12 +-10 +12 +-10 +12 +-9 +10 +-10 +11 +-10 +10 +-11 +10 +-10 +10 +-10 +11 +-10 +11 +-10 +11 +-10 +13 +-10 +12 +-9 +11 +-9 +11 +-11 +10 +-10 +10 +-9 +9 +-10 +11 +-9 +10 +-11 +11 +-10 +9 +-10 +10 +-10 +11 +-10 +12 +-10 +9 +-10 +12 +-10 +11 +-10 +10 +-10 +10 +-10 +10 +-9 +10 +-8 +11 +-11 +12 +-11 +10 +-9 +13 +9 +-14 +10 +-11 +10 +-10 +11 +-11 +10 +-11 +9 +-10 +9 +-9 +9 +-11 +11 +-11 +10 +-11 +9 +-11 +9 +-9 +11 +-10 +9 +-11 +10 +-9 +10 +-9 +9 +-9 +12 +-9 +9 +-8 +10 +-9 +10 +-9 +9 +-10 +9 +-9 +11 +-10 +9 +-10 +10 +-9 +11 +-11 +10 +-9 +10 +-8 +9 +-10 +10 +-10 +10 +-13 +-9 +13 +-8 +10 +-8 +9 +-9 +9 +-8 +10 +-9 +10 +-9 +12 +-9 +10 +-8 +11 +-9 +10 +-10 +11 +-10 +10 +-9 +10 +-10 +10 +-10 +10 +-11 +14 +9 +-16 +11 +-9 +9 +-9 +10 +-9 +9 +-8 +8 +-9 +12 +-11 +11 +-9 +10 +-8 +9 +-9 +9 +-10 +10 +-9 +8 +-11 +11 +-10 +10 +-11 +10 +-13 +-8 +13 +-7 +10 +-10 +10 +-10 +9 +-10 +11 +-9 +7 +-10 +11 +-10 +10 +-10 +10 +-9 +10 +-10 +12 +-9 +10 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-9 +11 +-9 +10 +-10 +11 +-10 +11 +-9 +10 +-10 +10 +-9 +10 +-9 +10 +-10 +12 +-10 +9 +-10 +10 +-10 +8 +-9 +11 +-11 +11 +-10 +10 +-9 +11 +-10 +11 +-11 +12 +-11 +11 +-11 +10 +-10 +9 +-11 +9 +-10 +10 +-9 +9 +-10 +11 +-10 +11 +-9 +11 +-9 +11 +-10 +10 +-9 +12 +-11 +10 +-11 +11 +-8 +10 +-10 +10 +-11 +12 +-10 +12 +-9 +10 +-10 +11 +-10 +11 +-11 +11 +-10 +12 +-9 +9 +-10 +11 +-10 +13 +-9 +11 +-11 +10 +-10 +11 +-9 +9 +-11 +12 +-11 +11 +-10 +11 +-11 +10 +-11 +10 +-9 +9 +-10 +8 +-10 +11 +-10 +10 +-11 +11 +-9 +11 +-11 +10 +-10 +10 +-12 +11 +-11 +10 +-9 +10 +-9 +11 +-11 +10 +-10 +10 +-10 +12 +-10 +9 +-9 +11 +-9 +10 +-9 +10 +-9 +11 +-10 +12 +-10 +12 +-10 +11 +-9 +13 +-9 +9 +-10 +11 +-10 +12 +-11 +12 +-10 +10 +-9 +10 +-9 +11 +-12 +9 +-8 +10 +-9 +10 +-10 +9 +-10 +12 +-10 +11 +-10 +11 +-9 +11 +-10 +11 +-8 +12 +-10 +12 +-11 +11 +-10 +10 +-9 +9 +-11 +12 +-11 +10 +-11 +11 +-10 +11 +-11 +12 +-9 +10 +-11 +10 +-11 +10 +-11 +10 +-11 +11 +-11 +11 +-9 +11 +-11 +12 +-10 +11 +-9 +13 +-9 +11 +-10 +11 +-10 +12 +-10 +10 +-9 +10 +-12 +12 +-11 +12 +-9 +10 +-11 +11 +-10 +10 +-11 +10 +-10 +10 +-11 +9 +-10 +11 +-10 +9 +-12 +10 +-11 +12 +-10 +12 +-10 +10 +-9 +11 +-9 +11 +-12 +11 +-10 +10 +-9 +11 +-9 +11 +-10 +10 +-10 +10 +-9 +10 +-10 +10 +-9 +11 +-10 +11 +-10 +10 +-10 +8 +-10 +11 +-9 +8 +-11 +10 +-10 +11 +-10 +10 +-11 +10 +-11 +10 +-11 +10 +-11 +11 +-9 +12 +-11 +12 +-9 +11 +-10 +10 +-11 +11 +-10 +10 +-10 +11 +-9 +10 +-9 +10 +-9 +10 +-8 +10 +-10 +10 +-11 +12 +-9 +10 +-11 +11 +-10 +10 +-10 +11 +-9 +11 +-9 +8 +-10 +11 +-10 +10 +-10 +11 +-11 +11 +-11 +10 +-10 +10 +-10 +11 +-11 +9 +-11 +11 +-10 +12 +-8 +11 +-9 +11 +-9 +11 +-11 +10 +-10 +11 +-10 +10 +-9 +11 +-9 +10 +-10 +10 +-10 +11 +-10 +12 +-9 +10 +-9 +10 +-10 +11 +-9 +9 +-10 +10 +-9 +10 +-10 +11 +-10 +12 +-10 +10 +-10 +10 +-11 +11 From 150afebf28dc4c0ca4c8469a9c4fbced6d6eb8f7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 12 Oct 2019 12:40:22 +0200 Subject: [PATCH 06/11] text --- traces/README.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/traces/README.txt b/traces/README.txt index 804f1a0ff..4cc42ba74 100644 --- a/traces/README.txt +++ b/traces/README.txt @@ -25,4 +25,6 @@ indala-504278295.pm3: PSK 26 bit indala AWID-15-259.pm3: AWID FSK RF/50 FC: 15 Card: 259 HID-weak-fob-11647.pm3: HID 32bit Prox Card#: 11647. very weak tag/read but just readable. visa2000.pm3: VISA2000 ASK/MAN RF/64, Card: 480518 -securakey-64169.pm3 Securakey Tag BitLen: 26, Card ID: 64169, FC: 0x35 \ No newline at end of file +securakey-64169.pm3 Securakey Tag BitLen: 26, Card ID: 64169, FC: 0x35 + +motorola_0437_00072.pm3 - Motorola Grey clamshell card, old. (RAW: A0000000E308C0C1) From 63711dd31237b79d24f3f7e4e33fe17765685d68 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 13 Oct 2019 00:31:21 +0200 Subject: [PATCH 07/11] =?UTF-8?q?fix=20gcc8=20failure,=20man=20sprintf:=20?= =?UTF-8?q?Some=20programs=20imprudently=20rely=20on=20code=20such=20as=20?= =?UTF-8?q?the=20following=20sprintf(buf,=20"%s=20some=20further=20text",?= =?UTF-8?q?=20buf);=20to=20append=20text=20to=20buf.=20=20However,=20the?= =?UTF-8?q?=20standards=20explicitly=20note=20that=20the=20results=20are?= =?UTF-8?q?=20undefined=20if=20source=20and=20destination=20buffers=20over?= =?UTF-8?q?lap=20=20when=20=20calling=20=20sprintf(),=20=20snprintf(),=20?= =?UTF-8?q?=20vsprintf(),=20=20and=20=20vs=E2=80=90=20nprintf().=20=20Depe?= =?UTF-8?q?nding=20on=20the=20version=20of=20gcc(1)=20used,=20and=20the=20?= =?UTF-8?q?compiler=20options=20employed,=20calls=20such=20as=20the=20abov?= =?UTF-8?q?e=20will=20not=20produce=20the=20expected=20results.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/cmdlft55xx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index 2894faa46..ccabadeb4 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -2262,11 +2262,11 @@ static int CmdT55xxDump(const char *Cmd) { strcpy (preferredName,"lf-t55xx"); for (uint8_t i = 1; i <= 7; i++) { if ((cardmem[i].blockdata != 0x00) && (cardmem[i].blockdata != 0xFFFFFFFF)) - sprintf (preferredName,"%s-%08X",preferredName,cardmem[i].blockdata); + sprintf (preferredName + strlen(preferredName),"-%08X",cardmem[i].blockdata); else break; } - sprintf (preferredName,"%s-data",preferredName); + strcat (preferredName,"-data"); } // Swap endian so the files match the txt display From 5520bdc20f92ce580e0c398d8053e378196c5752 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 13 Oct 2019 00:48:12 +0200 Subject: [PATCH 08/11] make style: skip cov-int --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 318251892..783b5fa27 100644 --- a/Makefile +++ b/Makefile @@ -197,12 +197,12 @@ style: # Make sure astyle is installed @which astyle >/dev/null || ( echo "Please install 'astyle' package first" ; exit 1 ) # Remove spaces & tabs at EOL, add LF at EOF if needed on *.c, *.h, *.cpp. *.lua, *.py, *.pl, Makefile - find . \( -name "*.[ch]" -or \( -name "*.cpp" -and -not -name "*.moc.cpp" \) -or -name "*.lua" -or -name "*.py" -or -name "*.pl" -or -name "Makefile" -or -name "*.v" \) \ + find . \( -not -path "./cov-int/*" -and \( -name "*.[ch]" -or \( -name "*.cpp" -and -not -name "*.moc.cpp" \) -or -name "*.lua" -or -name "*.py" -or -name "*.pl" -or -name "Makefile" -or -name "*.v" \) \) \ -exec perl -pi -e 's/[ \t]+$$//' {} \; \ -exec sh -c "tail -c1 {} | xxd -p | tail -1 | grep -q -v 0a$$" \; \ -exec sh -c "echo >> {}" \; # Apply astyle on *.c, *.h, *.cpp - find . \( -name "*.[ch]" -or \( -name "*.cpp" -and -not -name "*.moc.cpp" \) \) -exec astyle --formatted --mode=c --suffix=none \ + find . \( -not -path "./cov-int/*" -and \( -name "*.[ch]" -or \( -name "*.cpp" -and -not -name "*.moc.cpp" \) \) \) -exec astyle --formatted --mode=c --suffix=none \ --indent=spaces=4 --indent-switches \ --keep-one-line-blocks --max-instatement-indent=60 \ --style=google --pad-oper --unpad-paren --pad-header \ From 395d0f9ebf7c5f7275e5423f802f35b501d50f2e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 13 Oct 2019 00:48:26 +0200 Subject: [PATCH 09/11] make style --- armsrc/appmain.c | 4 +- armsrc/iso14443a.c | 2 +- armsrc/lfops.c | 6 +- armsrc/lfsampling.c | 4 +- armsrc/mifarecmd.c | 22 ++--- armsrc/mifaresim.c | 2 +- client/amiitool/amiibo.c | 2 +- client/cmdanalyse.c | 10 +- client/cmddata.c | 14 +-- client/cmdflashmem.c | 2 +- client/cmdhficlass.c | 2 +- client/cmdhfmf.c | 4 +- client/cmdhfmfhard.c | 4 +- client/cmdhw.c | 2 +- client/cmdlf.c | 25 ++--- client/cmdlfawid.c | 2 +- client/cmdlfcotag.c | 2 +- client/cmdlfem4x.c | 126 ++++++++++++------------ client/cmdlffdx.c | 6 +- client/cmdlfgallagher.c | 14 +-- client/cmdlfguard.c | 6 +- client/cmdlfhid.c | 16 +-- client/cmdlfindala.c | 4 +- client/cmdlfio.c | 2 +- client/cmdlfmotorola.c | 36 +++---- client/cmdlfnexwatch.c | 14 +-- client/cmdlfnoralsy.c | 5 +- client/cmdlfpac.c | 12 +-- client/cmdlfparadox.c | 12 +-- client/cmdlfsecurakey.c | 12 +-- client/cmdlft55xx.c | 184 +++++++++++++++++------------------ client/cmdlft55xx.h | 6 +- client/cmdlfverichip.c | 8 +- client/emv/emv_pki_priv.c | 2 +- client/mifare/mifarehost.c | 12 +-- client/proxmark3.c | 8 +- client/wiegand_formatutils.c | 2 +- common/lfdemod.c | 10 +- 38 files changed, 305 insertions(+), 301 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 4218d93a0..b524c4883 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -214,7 +214,7 @@ void MeasureAntennaTuning(void) { } FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - reply_ng(CMD_MEASURE_ANTENNA_TUNING, PM3_SUCCESS, (uint8_t*)&payload, sizeof(payload)); + reply_ng(CMD_MEASURE_ANTENNA_TUNING, PM3_SUCCESS, (uint8_t *)&payload, sizeof(payload)); LEDsoff(); } @@ -234,7 +234,7 @@ uint16_t MeasureAntennaTuningHfData(void) { // Measure LF in milliVolt uint32_t MeasureAntennaTuningLfData(void) { - return (MAX_ADC_LF_VOLTAGE * AvgAdc(ADC_CHAN_LF)) >> 10; + return (MAX_ADC_LF_VOLTAGE * AvgAdc(ADC_CHAN_LF)) >> 10; } void ReadMem(int addr) { diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 62433fa5f..db347cf13 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -3034,7 +3034,7 @@ void ReaderMifare(bool first_try, uint8_t block, uint8_t keytype) { memcpy(payload.nr, mf_nr_ar, sizeof(payload.nr)); memcpy(payload.ar, mf_nr_ar + 4, sizeof(payload.ar)); - reply_ng(CMD_HF_MIFARE_READER, return_status, (uint8_t*)&payload, sizeof(payload)); + reply_ng(CMD_HF_MIFARE_READER, return_status, (uint8_t *)&payload, sizeof(payload)); hf_field_off(); set_tracing(false); diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 377a20b45..042e5edbc 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -404,7 +404,7 @@ void ModThenAcquireRawAdcSamples125k(uint32_t delay_off, uint32_t period_0, uint DbpString("[!] Warning periods cannot be less than 7us in bit bang mode"); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LED_D_OFF(); - reply_ng(CMD_LF_MOD_THEN_ACQ_RAW_ADC, PM3_EINVARG, NULL, 0); + reply_ng(CMD_LF_MOD_THEN_ACQ_RAW_ADC, PM3_EINVARG, NULL, 0); return; } @@ -1708,12 +1708,12 @@ void T55xxDangerousRawTest(uint8_t *data) { t55xx_test_block_t *c = (t55xx_test_block_t *)data; uint8_t start_wait = 4; - uint8_t bs[128/8]; + uint8_t bs[128 / 8]; memset(bs, 0x00, sizeof(bs)); uint8_t len = 0; if (c->bitlen == 0 || c->bitlen > 128 || c->time == 0) reply_ng(CMD_LF_T55XX_DANGERRAW, PM3_EINVARG, NULL, 0); - for (uint8_t i=0; ibitlen; i++) + for (uint8_t i = 0; i < c->bitlen; i++) len = T55xx_SetBits(bs, len, c->data[i], 1, sizeof(bs)); if (DBGLEVEL > 1) { diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index 08fb1dd94..d168dcc78 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -31,7 +31,7 @@ sample_config config = { 1, 8, 1, LF_DIVISOR_125, 0, 0, 1} ; void printConfig() { uint32_t d = config.divisor; DbpString(_BLUE_("LF Sampling config")); - Dbprintf(" [q] divisor.............%d ( "_GREEN_("%d.%02d kHz")")", d, 12000 / (d+1), ((1200000 + (d+1)/2) / (d+1)) - ((12000 / (d+1)) * 100)); + Dbprintf(" [q] divisor.............%d ( "_GREEN_("%d.%02d kHz")")", d, 12000 / (d + 1), ((1200000 + (d + 1) / 2) / (d + 1)) - ((12000 / (d + 1)) * 100)); Dbprintf(" [b] bps.................%d", config.bits_per_sample); Dbprintf(" [d] decimation..........%d", config.decimation); Dbprintf(" [a] averaging...........%s", (config.averaging) ? "Yes" : "No"); @@ -54,7 +54,7 @@ void setSamplingConfig(sample_config *sc) { if (sc->divisor != 0) config.divisor = sc->divisor; if (sc->bits_per_sample != 0) config.bits_per_sample = sc->bits_per_sample; if (sc->trigger_threshold != -1) config.trigger_threshold = sc->trigger_threshold; -// if (sc->samples_to_skip == 0xffffffff) // if needed to not update if not supplied +// if (sc->samples_to_skip == 0xffffffff) // if needed to not update if not supplied config.samples_to_skip = sc->samples_to_skip; config.decimation = (sc->decimation != 0) ? sc->decimation : 1; diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 3cc36b28c..b0b7c95ab 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -952,8 +952,8 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 // cards with fixed nonce if (nt1 == nt2) { - Dbprintf("Nested: %08x vs %08x", nt1, nt2); - break; + Dbprintf("Nested: %08x vs %08x", nt1, nt2); + break; } uint32_t nttmp = prng_successor(nt1, 100); //NXP Mifare is typical around 840,but for some unlicensed/compatible mifare card this can be 160 @@ -1064,14 +1064,14 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 crypto1_destroy(pcs); struct p { - int16_t isOK; - uint8_t block; - uint8_t keytype; - uint8_t cuid[4]; - uint8_t nt_a[4]; - uint8_t ks_a[4]; - uint8_t nt_b[4]; - uint8_t ks_b[4]; + int16_t isOK; + uint8_t block; + uint8_t keytype; + uint8_t cuid[4]; + uint8_t nt_a[4]; + uint8_t ks_a[4]; + uint8_t nt_b[4]; + uint8_t ks_b[4]; } PACKED payload; payload.isOK = isOK; payload.block = targetBlockNo; @@ -1084,7 +1084,7 @@ void MifareNested(uint8_t blockNo, uint8_t keyType, uint8_t targetBlockNo, uint8 memcpy(payload.ks_b, &target_ks[1], 4); LED_B_ON(); - reply_ng(CMD_HF_MIFARE_NESTED, PM3_SUCCESS, (uint8_t*)&payload, sizeof(payload)); + reply_ng(CMD_HF_MIFARE_NESTED, PM3_SUCCESS, (uint8_t *)&payload, sizeof(payload)); LED_B_OFF(); if (DBGLEVEL >= 3) DbpString("NESTED FINISHED"); diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index 6c65a4f65..0f912c083 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -723,7 +723,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 // iceman, u8 can never be larger than 256 // if authenticating to a block that shouldn't exist - as long as we are not doing the reader attack - if ( ((flags & FLAG_NR_AR_ATTACK) != FLAG_NR_AR_ATTACK) ) { + if (((flags & FLAG_NR_AR_ATTACK) != FLAG_NR_AR_ATTACK)) { EmSend4bit(mf_crypto1_encrypt4bit(pcs, CARD_NACK_NA)); if (DBGLEVEL >= DBG_EXTENDED) Dbprintf("Reader tried to operate (0x%02x) on out of range block: %d (0x%02x), nacking", receivedCmd_dec[0], receivedCmd_dec[1], receivedCmd_dec[1]); break; diff --git a/client/amiitool/amiibo.c b/client/amiitool/amiibo.c index 36b9ae967..809f611d3 100644 --- a/client/amiitool/amiibo.c +++ b/client/amiitool/amiibo.c @@ -145,7 +145,7 @@ bool nfc3d_amiibo_load_keys(nfc3d_amiibo_keys *amiiboKeys, const char *path) { } if ((amiiboKeys->data.magicBytesSize > 16) || - (amiiboKeys->tag.magicBytesSize > 16)) { + (amiiboKeys->tag.magicBytesSize > 16)) { return false; } diff --git a/client/cmdanalyse.c b/client/cmdanalyse.c index 6f3af2247..c4fe2d795 100644 --- a/client/cmdanalyse.c +++ b/client/cmdanalyse.c @@ -899,20 +899,20 @@ static int CmdAnalyseDemodBuffer(const char *Cmd) { int bg = 0, en = 0; if (param_getptr(Cmd, &bg, &en, 0)) - return usage_analyse_demodbuffer(); + return usage_analyse_demodbuffer(); - int len = MIN( (en- bg + 1), MAX_DEMOD_BUF_LEN); + int len = MIN((en - bg + 1), MAX_DEMOD_BUF_LEN); // add 1 for null terminator. uint8_t *data = calloc(len + 1, sizeof(uint8_t)); if (!data) return PM3_EMALLOC; - for(int i = 0; bg <= en; bg++ , i++) { + for (int i = 0; bg <= en; bg++, i++) { char c = Cmd[bg]; if (c == '1') - DemodBuffer[i] = 1; + DemodBuffer[i] = 1; if (c == '0') - DemodBuffer[i] = 0; + DemodBuffer[i] = 0; printf("%c", c); } diff --git a/client/cmddata.c b/client/cmddata.c index 4c8e0c45e..9bd18eb90 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -1174,7 +1174,7 @@ int FSKrawDemod(const char *Cmd, bool verbose) { PrintAndLogEx(DEBUG, "no FSK data found"); } -out: +out: free(bits); return PM3_SUCCESS; } @@ -1218,7 +1218,7 @@ int PSKDemod(const char *Cmd, bool verbose) { free(bits); return PM3_ESOFT; } - + int startIdx = 0; int errCnt = pskRawDemod_ext(bits, &bitlen, &clk, &invert, &startIdx); if (errCnt > maxErr) { @@ -1336,7 +1336,7 @@ int NRZrawDemod(const char *Cmd, bool verbose) { if (bits == NULL) { return PM3_EMALLOC; } - + size_t BitLen = getFromGraphBuf(bits); if (BitLen == 0) { @@ -1355,7 +1355,7 @@ int NRZrawDemod(const char *Cmd, bool verbose) { free(bits); return PM3_ESOFT; } - + if (verbose || g_debugMode) PrintAndLogEx(DEBUG, "DEBUG: (NRZrawDemod) Tried NRZ Demod using Clock: %d - invert: %d - Bits Found: %zu", clk, invert, BitLen); //prime demod buffer for output setDemodBuff(bits, BitLen, 0); @@ -1368,7 +1368,7 @@ int NRZrawDemod(const char *Cmd, bool verbose) { // Now output the bitstream to the scrollback by line of 16 bits printDemodBuff(); } - + free(bits); return PM3_SUCCESS; } @@ -1673,7 +1673,7 @@ int CmdTuneSamples(const char *Cmd) { uint8_t results[256]; } PACKED; - struct p* package = (struct p*)resp.data.asBytes; + struct p *package = (struct p *)resp.data.asBytes; if (package->v_lf125 > NON_VOLTAGE) PrintAndLogEx(SUCCESS, "LF antenna: %5.2f V - %.2f kHz", (package->v_lf125 * ANTENNA_ERROR) / 1000.0, 12000.0 / (LF_DIVISOR_125 + 1)); @@ -1730,7 +1730,7 @@ int CmdTuneSamples(const char *Cmd) { if (test1 > 0) { PrintAndLogEx(SUCCESS, "\nDisplaying LF tuning graph. Divisor %d is %.2f kHz, %d is %.2f kHz.\n\n", - LF_DIVISOR_134, 12000.0 / (LF_DIVISOR_134 + 1), LF_DIVISOR_125, 12000.0 / (LF_DIVISOR_125 + 1)); + LF_DIVISOR_134, 12000.0 / (LF_DIVISOR_134 + 1), LF_DIVISOR_125, 12000.0 / (LF_DIVISOR_125 + 1)); GraphTraceLen = 256; ShowGraphWindow(); RepaintGraphWindow(); diff --git a/client/cmdflashmem.c b/client/cmdflashmem.c index a313a418d..ab104276d 100644 --- a/client/cmdflashmem.c +++ b/client/cmdflashmem.c @@ -117,7 +117,7 @@ static int CmdFlashmemSpiBaudrate(const char *Cmd) { usage_flashmem_spibaud(); return PM3_EINVARG; } - SendCommandNG(CMD_FLASHMEM_SET_SPIBAUDRATE, (uint8_t*)&baudrate, sizeof(uint32_t)); + SendCommandNG(CMD_FLASHMEM_SET_SPIBAUDRATE, (uint8_t *)&baudrate, sizeof(uint32_t)); return PM3_SUCCESS; } diff --git a/client/cmdhficlass.c b/client/cmdhficlass.c index 028e04a4c..67aa84396 100644 --- a/client/cmdhficlass.c +++ b/client/cmdhficlass.c @@ -1839,7 +1839,7 @@ static int CmdHFiClass_loclass(const char *Cmd) { int errors = testCipherUtils(); errors += testMAC(); errors += doKeyTests(0); - errors += testElite(opt2=='l'); + errors += testElite(opt2 == 'l'); if (errors) PrintAndLogEx(ERR, "There were errors!!!"); return PM3_ESOFT; } diff --git a/client/cmdhfmf.c b/client/cmdhfmf.c index 87475926e..3ae332397 100644 --- a/client/cmdhfmf.c +++ b/client/cmdhfmf.c @@ -1866,7 +1866,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { } if (verbose) PrintAndLogEx(INFO, _YELLOW_("======================= STOP KNOWN KEY ATTACK =======================")); if (num_found_keys == sectors_cnt * 2) - goto all_found; + goto all_found; } bool load_success = true; @@ -2741,7 +2741,7 @@ static int CmdHF14AMfChk(const char *Cmd) { (keyBlock + 6 * keycnt)[3], (keyBlock + 6 * keycnt)[4], (keyBlock + 6 * keycnt)[5] - ); + ); } // initialize storage for found keys diff --git a/client/cmdhfmfhard.c b/client/cmdhfmfhard.c index bc3591d06..ab3e1a3d0 100644 --- a/client/cmdhfmfhard.c +++ b/client/cmdhfmfhard.c @@ -1654,8 +1654,8 @@ static uint_fast8_t reverse(uint_fast8_t b) { b = (b & 0xCC) >> 2 | (b & 0x33) << 2; b = (b & 0xAA) >> 1 | (b & 0x55) << 1; return b; -} -*/ +} +*/ static uint_fast8_t reverse(uint_fast8_t b) { return (b * 0x0202020202ULL & 0x010884422010ULL) % 1023; } diff --git a/client/cmdhw.c b/client/cmdhw.c index fa43e6200..5dddac5fc 100644 --- a/client/cmdhw.c +++ b/client/cmdhw.c @@ -695,7 +695,7 @@ void pm3_version(bool verbose, bool oneliner) { PrintAndLogEx(NORMAL, " compiled with " PM3CLIENTCOMPILER __VERSION__ PM3HOSTOS PM3HOSTARCH); //#if PLATFORM == PM3RDV4 - if ( IfPm3Flash() == false && IfPm3Smartcard() == false && IfPm3FpcUsartHost() == false) { + if (IfPm3Flash() == false && IfPm3Smartcard() == false && IfPm3FpcUsartHost() == false) { PrintAndLogEx(NORMAL, "\n [ PROXMARK3 ]"); } else { PrintAndLogEx(NORMAL, "\n [ PROXMARK3 RDV4 ]"); diff --git a/client/cmdlf.c b/client/cmdlf.c index e2f2a2153..57c28c1b0 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -337,13 +337,13 @@ int CmdLFCommandRead(const char *Cmd) { } } - // bitbang mode - if (payload.delay == 0){ - if (payload.zeros < 7 || payload.ones < 7) { - PrintAndLogEx(WARNING, "Warning periods cannot be less than 7us in bit bang mode"); - return PM3_EINVARG; - } - } + // bitbang mode + if (payload.delay == 0) { + if (payload.zeros < 7 || payload.ones < 7) { + PrintAndLogEx(WARNING, "Warning periods cannot be less than 7us in bit bang mode"); + return PM3_EINVARG; + } + } //Validations if (errors || cmdp == 0) return usage_lf_cmdread(); @@ -528,7 +528,7 @@ int CmdLFConfig(const char *Cmd) { break; case 's': samples_to_skip = param_get32ex(Cmd, cmdp + 1, 0, 10); - cmdp+=2; + cmdp += 2; break; default: PrintAndLogEx(WARNING, "Unknown parameter '%c'", param_getchar(Cmd, cmdp)); @@ -1202,16 +1202,19 @@ int CmdLFfind(const char *Cmd) { if (IfPm3Hitag()) { if (readHitagUid()) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Hitag") "found!"); return PM3_SUCCESS; + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Hitag") "found!"); + return PM3_SUCCESS; } } if (readMotorolaUid()) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Motorola ID") "found!"); return PM3_SUCCESS; + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("Motorola ID") "found!"); + return PM3_SUCCESS; } if (readCOTAGUid()) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("COTAG ID") "found!"); return PM3_SUCCESS; + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("COTAG ID") "found!"); + return PM3_SUCCESS; } PrintAndLogEx(FAILED, _RED_("No data found!")); diff --git a/client/cmdlfawid.c b/client/cmdlfawid.c index 5084edf6a..afd2206f3 100644 --- a/client/cmdlfawid.c +++ b/client/cmdlfawid.c @@ -418,7 +418,7 @@ static int CmdAWIDClone(const char *Cmd) { blocks[3] = bytebits_to_byte(bits + 64, 32); free(bits); - + PrintAndLogEx(INFO, "Preparing to clone AWID %u to T55x7 with FC: %u, CN: %u", fmtlen, fc, cn); print_blocks(blocks, ARRAYLEN(blocks)); diff --git a/client/cmdlfcotag.c b/client/cmdlfcotag.c index dd7d5d648..b4e8e96c8 100644 --- a/client/cmdlfcotag.c +++ b/client/cmdlfcotag.c @@ -79,7 +79,7 @@ static int CmdCOTAGDemod(const char *Cmd) { // 2 = raw signal - maxlength bigbuff static int CmdCOTAGRead(const char *Cmd) { - if ( tolower(Cmd[0]) == 'h') return usage_lf_cotag_read(); + if (tolower(Cmd[0]) == 'h') return usage_lf_cotag_read(); uint32_t rawsignal = 1; sscanf(Cmd, "%u", &rawsignal); diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c index e1e9c75d8..5493b124d 100644 --- a/client/cmdlfem4x.c +++ b/client/cmdlfem4x.c @@ -720,7 +720,7 @@ static bool EM_ColParityTest(uint8_t *bs, size_t size, uint8_t rows, uint8_t col return true; } -// even parity ROW +// even parity ROW static bool EM_RowParityTest(uint8_t *bs, size_t size, uint8_t rows, uint8_t cols, uint8_t pType) { if (rows * cols > size) return false; uint8_t rowP = 0; @@ -844,14 +844,14 @@ int EM4x50Read(const char *Cmd, bool verbose) { size_t size = getFromGraphBuf(bits); if (size < 4000) { - if (verbose || g_debugMode) PrintAndLogEx(ERR, "Error: EM4x50 - Too little data in Graphbuffer"); - return PM3_ESOFT; + if (verbose || g_debugMode) PrintAndLogEx(ERR, "Error: EM4x50 - Too little data in Graphbuffer"); + return PM3_ESOFT; } computeSignalProperties(bits, size); // get fuzzed HI / LOW limits in signal - getHiLo( &high, &low, 75, 75); + getHiLo(&high, &low, 75, 75); // get to first full low to prime loop and skip incomplete first pulse size_t offset = 0; @@ -866,7 +866,7 @@ int EM4x50Read(const char *Cmd, bool verbose) { DetectASKClock(bits, size, &clk, 0); if (clk == 0) { if (verbose || g_debugMode) PrintAndLogEx(ERR, "Error: EM4x50 - didn't find a clock"); - return PM3_ESOFT; + return PM3_ESOFT; } } // tolerance @@ -1246,7 +1246,7 @@ static int EM4x05ReadWord_ext(uint8_t addr, uint32_t pwd, bool usePwd, uint32_t static int CmdEM4x05Demod(const char *Cmd) { // uint8_t ctmp = tolower(param_getchar(Cmd, 0)); - // if (ctmp == 'h') return usage_lf_em4x05_demod(); +// if (ctmp == 'h') return usage_lf_em4x05_demod(); uint32_t word = 0; return demodEM4x05resp(&word); } @@ -1263,22 +1263,23 @@ static int CmdEM4x05Dump(const char *Cmd) { while (param_getchar(Cmd, cmdp) != 0x00) { switch (tolower(param_getchar(Cmd, cmdp))) { - case 'h': return usage_lf_em4x05_dump(); - break; + case 'h': + return usage_lf_em4x05_dump(); + break; case 'f': // since f could match in password, lets confirm it is 1 character only for an option - param_getstr(Cmd, cmdp,optchk,sizeof(optchk)); - if (strlen (optchk) == 1) {// Have a single character f so filename no password - param_getstr(Cmd, cmdp + 1, preferredName, FILE_PATH_SIZE); - cmdp+=2; - break; - } // if not a single 'f' dont break and flow onto default as should be password + param_getstr(Cmd, cmdp, optchk, sizeof(optchk)); + if (strlen(optchk) == 1) { // Have a single character f so filename no password + param_getstr(Cmd, cmdp + 1, preferredName, FILE_PATH_SIZE); + cmdp += 2; + break; + } // if not a single 'f' dont break and flow onto default as should be password default : // for backwards-compatibility options should be > 'f' else assume its the hex password` - // for now use default input of 1 as invalid (unlikely 1 will be a valid password...) - pwd = param_get32ex(Cmd, cmdp, 1, 16); - if (pwd != 1) - usePwd = true; - cmdp++; + // for now use default input of 1 as invalid (unlikely 1 will be a valid password...) + pwd = param_get32ex(Cmd, cmdp, 1, 16); + if (pwd != 1) + usePwd = true; + cmdp++; }; } @@ -1313,7 +1314,7 @@ static int CmdEM4x05Dump(const char *Cmd) { if (usePwd) { data[addr] = BSWAP_32(pwd); num_to_bytes(pwd, 4, bytes); - PrintAndLogEx(NORMAL, " %02u | %08X | %s | %c | password", addr, pwd, sprint_ascii(bytes, 4),((lock_bits >> addr) & 1) ? 'x' : ' '); + PrintAndLogEx(NORMAL, " %02u | %08X | %s | %c | password", addr, pwd, sprint_ascii(bytes, 4), ((lock_bits >> addr) & 1) ? 'x' : ' '); } else { data[addr] = 0x00; // Unknown password, but not used to set to zeros PrintAndLogEx(NORMAL, " 02 | | | | " _RED_("cannot read")); @@ -1326,16 +1327,15 @@ static int CmdEM4x05Dump(const char *Cmd) { data[addr] = BSWAP_32(word); if (status == PM3_SUCCESS) { num_to_bytes(word, 4, bytes); - PrintAndLogEx(NORMAL, " %02d | %08X | %s | %c |", addr, word, sprint_ascii(bytes, 4),((lock_bits >> addr) & 1) ? 'x' : ' '); - } - else + PrintAndLogEx(NORMAL, " %02d | %08X | %s | %c |", addr, word, sprint_ascii(bytes, 4), ((lock_bits >> addr) & 1) ? 'x' : ' '); + } else PrintAndLogEx(NORMAL, " %02d | | | | " _RED_("Fail"), addr); } } - // Print blocks 14 and 15 + // Print blocks 14 and 15 // Both lock bits are protected with bit idx 14 (special case) - PrintAndLogEx(NORMAL, " %02d | %08X | %s | %c | Lock", 14, data[14], sprint_ascii(bytes, 4),((lock_bits >> 14) & 1) ? 'x' : ' '); - PrintAndLogEx(NORMAL, " %02d | %08X | %s | %c | Lock", 15, data[15], sprint_ascii(bytes, 4),((lock_bits >> 14) & 1) ? 'x' : ' '); + PrintAndLogEx(NORMAL, " %02d | %08X | %s | %c | Lock", 14, data[14], sprint_ascii(bytes, 4), ((lock_bits >> 14) & 1) ? 'x' : ' '); + PrintAndLogEx(NORMAL, " %02d | %08X | %s | %c | Lock", 15, data[15], sprint_ascii(bytes, 4), ((lock_bits >> 14) & 1) ? 'x' : ' '); // Update endian for files data[14] = BSWAP_32(data[14]); data[15] = BSWAP_32(data[15]); @@ -1343,13 +1343,13 @@ static int CmdEM4x05Dump(const char *Cmd) { if (success == PM3_SUCCESS) { // all ok save dump to file // saveFileEML will add .eml extension to filename // saveFile (binary) passes in the .bin extension. - if (strcmp (preferredName,"") == 0) // Set default filename, if not set by user - sprintf (preferredName,"lf-4x05-%08X-data",BSWAP_32(data[1])); + if (strcmp(preferredName, "") == 0) // Set default filename, if not set by user + sprintf(preferredName, "lf-4x05-%08X-data", BSWAP_32(data[1])); - saveFileEML(preferredName, (uint8_t *)data, 16*sizeof(uint32_t), sizeof(uint32_t)); - saveFile (preferredName, ".bin", data, sizeof(data)); + saveFileEML(preferredName, (uint8_t *)data, 16 * sizeof(uint32_t), sizeof(uint32_t)); + saveFile(preferredName, ".bin", data, sizeof(data)); } - + return success; } @@ -1443,7 +1443,7 @@ static int CmdEM4x05Wipe(const char *Cmd) { uint8_t addr = 0; uint32_t pwd = 0; uint8_t cmdp = 0; - uint8_t chipType = 1; // em4305 + uint8_t chipType = 1; // em4305 uint32_t chipInfo = 0x00040072; // Chip info/User Block normal 4305 Chip Type uint32_t chipUID = 0x614739AE; // UID normally readonly, but just in case uint32_t blockData = 0x00000000; // UserBlock/Password (set to 0x00000000 for a wiped card1 @@ -1454,60 +1454,60 @@ static int CmdEM4x05Wipe(const char *Cmd) { while (param_getchar(Cmd, cmdp) != 0x00) { // check if cmd is a 1 byte option - param_getstr(Cmd, cmdp,optchk,sizeof(optchk)); - if (strlen (optchk) == 1) {// Have a single character so option not part of password + param_getstr(Cmd, cmdp, optchk, sizeof(optchk)); + if (strlen(optchk) == 1) { // Have a single character so option not part of password switch (tolower(param_getchar(Cmd, cmdp))) { case 'c': // chip type - if (param_getchar(Cmd, cmdp) != 0x00) - chipType = param_get8ex (Cmd,cmdp+1,0,10); - cmdp+=2; - break; + if (param_getchar(Cmd, cmdp) != 0x00) + chipType = param_get8ex(Cmd, cmdp + 1, 0, 10); + cmdp += 2; + break; case 'h': // return usage_lf_em4x05_wipe(); default : // Unknown or 'h' send help - return usage_lf_em4x05_wipe(); - break; + return usage_lf_em4x05_wipe(); + break; }; - } else { // Not a single character so assume password + } else { // Not a single character so assume password pwd = param_get32ex(Cmd, cmdp, 1, 16); cmdp++; - } + } } switch (chipType) { case 0 : // em4205 - chipInfo = 0x00040070; - config = 0x0001805F; - break; + chipInfo = 0x00040070; + config = 0x0001805F; + break; case 1 : // em4305 - chipInfo = 0x00040072; - config = 0x0001805F; - break; + chipInfo = 0x00040072; + config = 0x0001805F; + break; default : // Type 0/Default : EM4305 - chipInfo = 0x00040072; - config = 0x0001805F; + chipInfo = 0x00040072; + config = 0x0001805F; } - + // block 0 : User Data or Chip Info - sprintf (cmdStr,"%d %08X %08X",0,chipInfo,pwd); - CmdEM4x05Write (cmdStr); + sprintf(cmdStr, "%d %08X %08X", 0, chipInfo, pwd); + CmdEM4x05Write(cmdStr); // block 1 : UID - this should be read only for EM4205 and EM4305 not sure about others - sprintf (cmdStr,"%d %08X %08X",1,chipUID,pwd); - CmdEM4x05Write (cmdStr); + sprintf(cmdStr, "%d %08X %08X", 1, chipUID, pwd); + CmdEM4x05Write(cmdStr); // block 2 : password - sprintf (cmdStr,"%d %08X %08X",2,blockData,pwd); - CmdEM4x05Write (cmdStr); + sprintf(cmdStr, "%d %08X %08X", 2, blockData, pwd); + CmdEM4x05Write(cmdStr); pwd = blockData; // Password should now have changed, so use new password // block 3 : user data - sprintf (cmdStr,"%d %08X %08X",3,blockData,pwd); - CmdEM4x05Write (cmdStr); + sprintf(cmdStr, "%d %08X %08X", 3, blockData, pwd); + CmdEM4x05Write(cmdStr); // block 4 : config - sprintf (cmdStr,"%d %08X %08X",4,config,pwd); - CmdEM4x05Write (cmdStr); + sprintf(cmdStr, "%d %08X %08X", 4, config, pwd); + CmdEM4x05Write(cmdStr); // Remainder of user/data blocks for (addr = 5; addr < 14; addr++) {// Clear user data blocks - sprintf (cmdStr,"%d %08X %08X",addr,blockData,pwd); - CmdEM4x05Write (cmdStr); + sprintf(cmdStr, "%d %08X %08X", addr, blockData, pwd); + CmdEM4x05Write(cmdStr); } return success; diff --git a/client/cmdlffdx.c b/client/cmdlffdx.c index ce78525ac..244c0caf3 100644 --- a/client/cmdlffdx.c +++ b/client/cmdlffdx.c @@ -264,7 +264,7 @@ static int CmdFdxRead(const char *Cmd) { static int CmdFdxClone(const char *Cmd) { uint32_t countryid = 0; - uint64_t animalid = 0; + uint64_t animalid = 0; char cmdp = param_getchar(Cmd, 0); if (strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_fdx_clone(); @@ -282,7 +282,7 @@ static int CmdFdxClone(const char *Cmd) { } uint32_t blocks[5] = {T55x7_MODULATION_DIPHASE | T55x7_BITRATE_RF_32 | 4 << T55x7_MAXBLOCK_SHIFT, 0, 0, 0, 0}; - + //Q5 if (param_getchar(Cmd, 2) == 'Q' || param_getchar(Cmd, 2) == 'q') blocks[0] = T5555_MODULATION_BIPHASE | T5555_INVERT_OUTPUT | T5555_SET_BITRATE(32) | 4 << T5555_MAXBLOCK_SHIFT; @@ -294,7 +294,7 @@ static int CmdFdxClone(const char *Cmd) { blocks[4] = bytebits_to_byte(bits + 96, 32); free(bits); - + PrintAndLogEx(INFO, "Preparing to clone FDX-B to T55x7 with animal ID: %04u-%"PRIu64, countryid, animalid); print_blocks(blocks, ARRAYLEN(blocks)); diff --git a/client/cmdlfgallagher.c b/client/cmdlfgallagher.c index 894e98ef8..d32c9ade9 100644 --- a/client/cmdlfgallagher.c +++ b/client/cmdlfgallagher.c @@ -97,11 +97,11 @@ static int CmdGallagherClone(const char *Cmd) { // skip first block, 3*4 = 12 bytes left uint8_t rawhex[12] = {0}; int res = param_gethex_to_eol(Cmd, cmdp + 1, rawhex, sizeof(rawhex), &datalen); - if ( res != 0 ) + if (res != 0) errors = true; - for(uint8_t i = 1; i < ARRAYLEN(blocks); i++) { - blocks[i] = bytes_to_num(rawhex + ( (i - 1) * 4 ), sizeof(uint32_t)); + for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { + blocks[i] = bytes_to_num(rawhex + ((i - 1) * 4), sizeof(uint32_t)); } cmdp += 2; break; @@ -157,10 +157,10 @@ int detectGallagher(uint8_t *dest, size_t *size) { if (*size < 96) return -1; //make sure buffer has data size_t startIdx = 0; uint8_t preamble[] = { - 0, 0, 0, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, - 0, 1, 0, 1, 0, 1, 0, 0, - 0, 1, 1, 0, 0 ,0 ,0 ,1 + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 0, + 0, 1, 1, 0, 0, 0, 0, 1 }; if (!preambleSearch(dest, preamble, sizeof(preamble), size, &startIdx)) return -2; //preamble not found diff --git a/client/cmdlfguard.c b/client/cmdlfguard.c index c65ff068a..a8cd8a65b 100644 --- a/client/cmdlfguard.c +++ b/client/cmdlfguard.c @@ -159,7 +159,7 @@ static int CmdGuardClone(const char *Cmd) { uint32_t facilitycode = 0, cardnumber = 0, fc = 0, cn = 0, fmtlen = 0; if (sscanf(Cmd, "%u %u %u", &fmtlen, &fc, &cn) != 3) return usage_lf_guard_clone(); - + fmtlen &= 0x7f; facilitycode = (fc & 0x000000FF); cardnumber = (cn & 0x0000FFFF); @@ -167,7 +167,7 @@ static int CmdGuardClone(const char *Cmd) { //GuardProxII - compat mode, ASK/Biphase, data rate 64, 3 data blocks uint32_t blocks[4] = {T55x7_MODULATION_BIPHASE | T55x7_BITRATE_RF_64 | 3 << T55x7_MAXBLOCK_SHIFT, 0, 0, 0}; uint8_t *bs = calloc(96, sizeof(uint8_t)); - + if (getGuardBits(fmtlen, facilitycode, cardnumber, bs) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Error with tag bitstream generation."); free(bs); @@ -183,7 +183,7 @@ static int CmdGuardClone(const char *Cmd) { blocks[3] = bytebits_to_byte(bs + 64, 32); free(bs); - + PrintAndLogEx(INFO, "Preparing to clone Guardall to T55x7 with Facility Code: %u, Card Number: %u", facilitycode, cardnumber); print_blocks(blocks, ARRAYLEN(blocks)); diff --git a/client/cmdlfhid.c b/client/cmdlfhid.c index de7d9ecd5..004248e43 100644 --- a/client/cmdlfhid.c +++ b/client/cmdlfhid.c @@ -35,7 +35,7 @@ #include "cmdlf.h" // lf_read #include "util_posix.h" #include "lfdemod.h" -#include "wiegand_formats.h" +#include "wiegand_formats.h" #ifndef BITS # define BITS 96 @@ -133,12 +133,12 @@ static int sendTry(uint8_t format_idx, wiegand_card_t *card, uint32_t delay, boo clearCommandBuffer(); SendCommandNG(CMD_LF_HID_SIMULATE, (uint8_t *)&payload, sizeof(payload)); -/* - PacketResponseNG resp; - WaitForResponse(CMD_LF_HID_SIMULATE, &resp); - if (resp.status == PM3_EOPABORTED) - return resp.status; -*/ + /* + PacketResponseNG resp; + WaitForResponse(CMD_LF_HID_SIMULATE, &resp); + if (resp.status == PM3_EOPABORTED) + return resp.status; + */ msleep(delay); return sendPing(); } @@ -443,7 +443,7 @@ static int CmdHIDBrute(const char *Cmd) { if (data.CardNumber > 1) { data.CardNumber--; if (sendTry(format_idx, &data, delay, verbose) != PM3_SUCCESS) return PM3_ESOFT; - } + } } return PM3_SUCCESS; } diff --git a/client/cmdlfindala.c b/client/cmdlfindala.c index f455fae66..e57368400 100644 --- a/client/cmdlfindala.c +++ b/client/cmdlfindala.c @@ -164,7 +164,7 @@ static int CmdIndalaDemod(const char *Cmd) { csn |= DemodBuffer[50] << 1; // b2 csn |= DemodBuffer[41] << 0; // b1 - uint8_t checksum = 0; + uint8_t checksum = 0; checksum |= DemodBuffer[62] << 1; // b2 checksum |= DemodBuffer[63] << 0; // b1 @@ -172,7 +172,7 @@ static int CmdIndalaDemod(const char *Cmd) { PrintAndLogEx(SUCCESS, "Possible de-scramble patterns"); PrintAndLogEx(SUCCESS, "\tPrinted | __%04d__ [0x%X]", p1, p1); PrintAndLogEx(SUCCESS, "\tInternal ID | %" PRIu64, foo); - PrintAndLogEx(SUCCESS, "Fmt 26 bit FC %u , CSN %u , checksum %1d%1d", fc, csn, checksum >> 1 & 0x01, checksum & 0x01 ); + PrintAndLogEx(SUCCESS, "Fmt 26 bit FC %u , CSN %u , checksum %1d%1d", fc, csn, checksum >> 1 & 0x01, checksum & 0x01); } else { uint32_t uid3 = bytebits_to_byte(DemodBuffer + 64, 32); diff --git a/client/cmdlfio.c b/client/cmdlfio.c index dd3a78aa7..3aefd7b55 100644 --- a/client/cmdlfio.c +++ b/client/cmdlfio.c @@ -284,7 +284,7 @@ static command_t CommandTable[] = { {"read", CmdIOProxRead, IfPm3Lf, "attempt to read and extract tag data"}, {"clone", CmdIOProxClone, IfPm3Lf, "clone IOProx to T55x7"}, {"sim", CmdIOProxSim, IfPm3Lf, "simulate IOProx tag"}, - {"watch", CmdIOProxWatch, IfPm3Lf, "continuously watch for cards. Reader mode"}, + {"watch", CmdIOProxWatch, IfPm3Lf, "continuously watch for cards. Reader mode"}, {NULL, NULL, NULL, NULL} }; diff --git a/client/cmdlfmotorola.c b/client/cmdlfmotorola.c index 035eb7dc1..e306827ed 100644 --- a/client/cmdlfmotorola.c +++ b/client/cmdlfmotorola.c @@ -56,7 +56,7 @@ static int CmdMotorolaDemod(const char *Cmd) { //got a good demod uint32_t raw1 = bytebits_to_byte(DemodBuffer, 32); uint32_t raw2 = bytebits_to_byte(DemodBuffer + 32, 32); - + // A0000000E308C0C1 // 10100000000000000000000000000000 1110 0011 0000 1000 1100 0000 1100 0001 @@ -74,13 +74,13 @@ static int CmdMotorolaDemod(const char *Cmd) { uint16_t fc = 0; -// FC seems to be guess work. Need more samples +// FC seems to be guess work. Need more samples // guessing printed FC is 4 digits. 1024? 10bit? // fc |= DemodBuffer[38] << 9; // b10 fc |= DemodBuffer[34] << 8; // b9 fc |= DemodBuffer[44] << 7; // b8 - fc |= DemodBuffer[47] << 6; // b7 + fc |= DemodBuffer[47] << 6; // b7 fc |= DemodBuffer[57] << 5; // b6 fc |= DemodBuffer[49] << 4; // b5 @@ -89,7 +89,7 @@ static int CmdMotorolaDemod(const char *Cmd) { fc |= DemodBuffer[48] << 2; // b3 fc |= DemodBuffer[58] << 1; // b2 fc |= DemodBuffer[39] << 0; // b1 - + // CSN was same as Indala CSN descramble. uint16_t csn = 0; csn |= DemodBuffer[42] << 15; // b16 @@ -109,14 +109,14 @@ static int CmdMotorolaDemod(const char *Cmd) { csn |= DemodBuffer[50] << 1; // b2 csn |= DemodBuffer[41] << 0; // b1 - uint8_t checksum = 0; + uint8_t checksum = 0; checksum |= DemodBuffer[62] << 1; // b2 checksum |= DemodBuffer[63] << 0; // b1 PrintAndLogEx(SUCCESS, "Motorola Tag Found -- Raw: %08X%08X", raw1, raw2); - PrintAndLogEx(SUCCESS, "Fmt 26 bit FC %u , CSN %u , checksum %1d%1d", fc, csn, checksum >> 1 & 0x01, checksum & 0x01 ); + PrintAndLogEx(SUCCESS, "Fmt 26 bit FC %u , CSN %u , checksum %1d%1d", fc, csn, checksum >> 1 & 0x01, checksum & 0x01); PrintAndLogEx(NORMAL, ""); - + return PM3_SUCCESS; } @@ -124,13 +124,13 @@ static int CmdMotorolaRead(const char *Cmd) { // Motorola Flexpass seem to work at 74 kHz // and take about 4400 samples to befor modulating sample_config sc = { - .decimation = 0, - .bits_per_sample = 0, - .averaging= false, - .divisor = LF_DIVISOR(74), - .trigger_threshold = -1, - .samples_to_skip = 4500, - .verbose = false + .decimation = 0, + .bits_per_sample = 0, + .averaging = false, + .divisor = LF_DIVISOR(74), + .trigger_threshold = -1, + .samples_to_skip = 4500, + .verbose = false }; lf_config(&sc); @@ -156,7 +156,7 @@ static int CmdMotorolaClone(const char *Cmd) { "\n" "Samples:\n" "\tlf motorola clone a0000000a0002021\n" - ); + ); void *argtable[] = { arg_param_begin, @@ -175,7 +175,7 @@ static int CmdMotorolaClone(const char *Cmd) { blocks[0] = T55x7_BITRATE_RF_32 | T55x7_MODULATION_PSK1 | (2 << T55x7_MAXBLOCK_SHIFT); blocks[1] = bytes_to_num(data, 4); blocks[2] = bytes_to_num(data + 4, 4); - + print_blocks(blocks, ARRAYLEN(blocks)); return clone_t55xx_tag(blocks, ARRAYLEN(blocks)); } @@ -241,7 +241,7 @@ int detectMotorola(uint8_t *dest, size_t *size) { return -3; if (inverted && start_idx > 0) { - for(size_t i= start_idx -1 ; i < *size + start_idx + 2; i++) { + for (size_t i = start_idx - 1 ; i < *size + start_idx + 2; i++) { dest[i] ^= 1; } } @@ -254,5 +254,5 @@ int demodMotorola(void) { } int readMotorolaUid(void) { - return ( CmdMotorolaRead("") == PM3_SUCCESS); + return (CmdMotorolaRead("") == PM3_SUCCESS); } diff --git a/client/cmdlfnexwatch.c b/client/cmdlfnexwatch.c index d4069547b..8d40d47d6 100644 --- a/client/cmdlfnexwatch.c +++ b/client/cmdlfnexwatch.c @@ -54,7 +54,7 @@ static int CmdNexWatchDemod(const char *Cmd) { // else if (idx == -3) // PrintAndLogEx(DEBUG, "DEBUG: Error - NexWatch problem during PSK demod"); else if (idx == -4) - PrintAndLogEx(DEBUG, "DEBUG: Error - NexWatch preamble not found"); + PrintAndLogEx(DEBUG, "DEBUG: Error - NexWatch preamble not found"); // else if (idx == -5) // PrintAndLogEx(DEBUG, "DEBUG: Error - NexWatch size not correct: %d", size); else @@ -99,7 +99,7 @@ static int CmdNexWatchRead(const char *Cmd) { } static int CmdNexWatchClone(const char *Cmd) { - + // 56000000 00213C9F 8F150C00 00000000 uint32_t blocks[5]; bool errors = false; @@ -112,13 +112,13 @@ static int CmdNexWatchClone(const char *Cmd) { return usage_lf_nexwatch_clone(); case 'b': { // skip first block, 4*4 = 16 bytes left - uint8_t rawhex[16] = {0}; + uint8_t rawhex[16] = {0}; int res = param_gethex_to_eol(Cmd, cmdp + 1, rawhex, sizeof(rawhex), &datalen); - if ( res != 0 ) + if (res != 0) errors = true; - - for(uint8_t i = 1; i < ARRAYLEN(blocks); i++) { - blocks[i] = bytes_to_num(rawhex + ( (i - 1) * 4 ), sizeof(uint32_t)); + + for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { + blocks[i] = bytes_to_num(rawhex + ((i - 1) * 4), sizeof(uint32_t)); } cmdp += 2; break; diff --git a/client/cmdlfnoralsy.c b/client/cmdlfnoralsy.c index ed6ff0e09..79fbb3913 100644 --- a/client/cmdlfnoralsy.c +++ b/client/cmdlfnoralsy.c @@ -165,11 +165,12 @@ static int CmdNoralsyClone(const char *Cmd) { blocks[3] = bytebits_to_byte(bits + 64, 32); free(bits); - + PrintAndLogEx(INFO, "Preparing to clone Noralsy to T55x7 with CardId: %u", id); print_blocks(blocks, ARRAYLEN(blocks)); - return clone_t55xx_tag(blocks, ARRAYLEN(blocks));} + return clone_t55xx_tag(blocks, ARRAYLEN(blocks)); +} static int CmdNoralsySim(const char *Cmd) { diff --git a/client/cmdlfpac.c b/client/cmdlfpac.c index 9e6f9337c..9b735f02e 100644 --- a/client/cmdlfpac.c +++ b/client/cmdlfpac.c @@ -83,7 +83,7 @@ static int CmdPacRead(const char *Cmd) { } static int CmdPacClone(const char *Cmd) { - + uint32_t blocks[5]; bool errors = false; uint8_t cmdp = 0; @@ -95,13 +95,13 @@ static int CmdPacClone(const char *Cmd) { return usage_lf_pac_clone(); case 'b': { // skip first block, 4*4 = 16 bytes left - uint8_t rawhex[16] = {0}; + uint8_t rawhex[16] = {0}; int res = param_gethex_to_eol(Cmd, cmdp + 1, rawhex, sizeof(rawhex), &datalen); - if ( res != 0 ) + if (res != 0) errors = true; - - for(uint8_t i = 1; i < ARRAYLEN(blocks); i++) { - blocks[i] = bytes_to_num(rawhex + ( (i - 1) * 4 ), sizeof(uint32_t)); + + for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { + blocks[i] = bytes_to_num(rawhex + ((i - 1) * 4), sizeof(uint32_t)); } cmdp += 2; break; diff --git a/client/cmdlfparadox.c b/client/cmdlfparadox.c index b1a20dec2..d2c8d64b5 100644 --- a/client/cmdlfparadox.c +++ b/client/cmdlfparadox.c @@ -131,7 +131,7 @@ static int CmdParadoxRead(const char *Cmd) { } static int CmdParadoxClone(const char *Cmd) { - + uint32_t blocks[4]; bool errors = false; uint8_t cmdp = 0; @@ -143,13 +143,13 @@ static int CmdParadoxClone(const char *Cmd) { return usage_lf_paradox_clone(); case 'b': { // skip first block, 3*4 =12 bytes left - uint8_t rawhex[12] = {0}; + uint8_t rawhex[12] = {0}; int res = param_gethex_to_eol(Cmd, cmdp + 1, rawhex, sizeof(rawhex), &datalen); - if ( res != 0 ) + if (res != 0) errors = true; - - for(uint8_t i = 1; i < ARRAYLEN(blocks); i++) { - blocks[i] = bytes_to_num(rawhex + ( (i - 1) * 4 ), sizeof(uint32_t)); + + for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { + blocks[i] = bytes_to_num(rawhex + ((i - 1) * 4), sizeof(uint32_t)); } cmdp += 2; break; diff --git a/client/cmdlfsecurakey.c b/client/cmdlfsecurakey.c index 183762338..64e8a2121 100644 --- a/client/cmdlfsecurakey.c +++ b/client/cmdlfsecurakey.c @@ -130,7 +130,7 @@ static int CmdSecurakeyRead(const char *Cmd) { } static int CmdSecurakeyClone(const char *Cmd) { - + uint32_t blocks[4]; bool errors = false; uint8_t cmdp = 0; @@ -142,13 +142,13 @@ static int CmdSecurakeyClone(const char *Cmd) { return usage_lf_securakey_clone(); case 'b': { // skip first block, 3*4 = 12 bytes left - uint8_t rawhex[12] = {0}; + uint8_t rawhex[12] = {0}; int res = param_gethex_to_eol(Cmd, cmdp + 1, rawhex, sizeof(rawhex), &datalen); - if ( res != 0 ) + if (res != 0) errors = true; - - for(uint8_t i = 1; i < ARRAYLEN(blocks); i++) { - blocks[i] = bytes_to_num(rawhex + ( (i - 1) * 4 ), sizeof(uint32_t)); + + for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { + blocks[i] = bytes_to_num(rawhex + ((i - 1) * 4), sizeof(uint32_t)); } cmdp += 2; break; diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index ccabadeb4..ceecbddc1 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -69,12 +69,12 @@ static void print_usage_t55xx_downloadlink(uint8_t ShowAll, uint8_t dl_mode_defa PrintAndLogEx(NORMAL, " r - downlink encoding 0|1|2|3|4"); else PrintAndLogEx(NORMAL, " r - downlink encoding 0|1|2|3"); - PrintAndLogEx(NORMAL, " 0 - fixed bit length%s",(dl_mode_default == 0)? " (detected default)":""); // default will be whats in config struct - PrintAndLogEx(NORMAL, " 1 - long leading reference%s",(dl_mode_default == 1)? " (detected default)":""); - PrintAndLogEx(NORMAL, " 2 - leading zero%s",(dl_mode_default == 2)? " (detected default)":""); - PrintAndLogEx(NORMAL, " 3 - 1 of 4 coding reference%s",(dl_mode_default == 3)? " (detected default)":""); + PrintAndLogEx(NORMAL, " 0 - fixed bit length%s", (dl_mode_default == 0) ? " (detected default)" : ""); // default will be whats in config struct + PrintAndLogEx(NORMAL, " 1 - long leading reference%s", (dl_mode_default == 1) ? " (detected default)" : ""); + PrintAndLogEx(NORMAL, " 2 - leading zero%s", (dl_mode_default == 2) ? " (detected default)" : ""); + PrintAndLogEx(NORMAL, " 3 - 1 of 4 coding reference%s", (dl_mode_default == 3) ? " (detected default)" : ""); if (ShowAll == T55XX_DLMODE_ALL) - PrintAndLogEx(NORMAL, " 4 - Try all downlink modes%s",(dl_mode_default == 4)? " (default)":""); + PrintAndLogEx(NORMAL, " 4 - Try all downlink modes%s", (dl_mode_default == 4) ? " (default)" : ""); } static int usage_t55xx_config() { @@ -89,7 +89,7 @@ static int usage_t55xx_config() { PrintAndLogEx(NORMAL, " Q5 [0/1] - Set/reset as T5555 ( Q5 ) chip instead of T55x7"); PrintAndLogEx(NORMAL, " ST [0/1] - Set/reset Sequence Terminator on"); PrintAndLogEx(NORMAL, ""); // layout is a little differnet, so seperate until a better fix - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf t55xx config d FSK - FSK demodulation"); @@ -105,7 +105,7 @@ static int usage_t55xx_read() { PrintAndLogEx(NORMAL, " p - OPTIONAL password (8 hex characters)"); PrintAndLogEx(NORMAL, " o - OPTIONAL override safety check"); PrintAndLogEx(NORMAL, " 1 - OPTIONAL 0|1 read Page 1 instead of Page 0"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, " " _RED_("**** WARNING ****")); PrintAndLogEx(NORMAL, " Use of read with password on a tag not configured"); PrintAndLogEx(NORMAL, " for a password can damage the tag"); @@ -122,7 +122,7 @@ static int usage_t55xx_resetread() { PrintAndLogEx(NORMAL, "Send Reset Cmd then lf read the stream to attempt to identify the start of it (needs a demod and/or plot after)"); PrintAndLogEx(NORMAL, "Usage: lf t55xx resetread [r ]"); PrintAndLogEx(NORMAL, "Options:"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf t55xx resetread"); @@ -138,7 +138,7 @@ static int usage_t55xx_write() { PrintAndLogEx(NORMAL, " 1 - OPTIONAL write Page 1 instead of Page 0"); PrintAndLogEx(NORMAL, " t - OPTIONAL test mode write - ****DANGER****"); PrintAndLogEx(NORMAL, " v - OPTIONAL validate data afterwards"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf t55xx write b 3 d 11223344 - write 11223344 to block 3"); @@ -150,7 +150,7 @@ static int usage_t55xx_write() { static int usage_t55xx_trace() { PrintAndLogEx(NORMAL, "Usage: lf t55xx trace [1] [r mode]"); PrintAndLogEx(NORMAL, "Options:"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, " 1 - if set, use Graphbuffer otherwise read data from tag."); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); @@ -168,7 +168,7 @@ static int usage_t55xx_info() { PrintAndLogEx(NORMAL, " c - set configuration from a block0"); PrintAndLogEx(NORMAL, " if set, use these data instead of reading tag."); PrintAndLogEx(NORMAL, " q - if set, provided data are interpreted as Q5 config."); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf t55xx info"); @@ -185,7 +185,7 @@ static int usage_t55xx_dump() { PrintAndLogEx(NORMAL, " p - OPTIONAL password 4bytes (8 hex symbols)"); PrintAndLogEx(NORMAL, " o - OPTIONAL override, force pwd read despite danger to card"); PrintAndLogEx(NORMAL, " f - overide filename prefix (optional). Default is based on blk 0"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf t55xx dump"); @@ -212,7 +212,7 @@ static int usage_t55xx_detect() { PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " 1 - if set, use Graphbuffer otherwise read data from tag."); PrintAndLogEx(NORMAL, " p - OPTIONAL password (8 hex characters)"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); // Need to setup to try all modes + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); // Need to setup to try all modes PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf t55xx p1detect"); @@ -242,7 +242,7 @@ static int usage_t55xx_wakup() { PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h - this help"); PrintAndLogEx(NORMAL, " p - password 4bytes (8 hex symbols)"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf t55xx wakeup p 11223344 - send wakeup password"); @@ -257,7 +257,7 @@ static int usage_t55xx_chk() { PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h - this help"); PrintAndLogEx(NORMAL, " m - use dictionary from flashmemory\n"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_ALL,T55XX_DLMODE_ALL); + print_usage_t55xx_downloadlink(T55XX_DLMODE_ALL, T55XX_DLMODE_ALL); PrintAndLogEx(NORMAL, " i <*.dic> - loads a default keys dictionary file <*.dic>"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); @@ -275,7 +275,7 @@ static int usage_t55xx_bruteforce() { PrintAndLogEx(NORMAL, " password must be 4 bytes (8 hex symbols)"); PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h - this help"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_ALL,T55XX_DLMODE_ALL); + print_usage_t55xx_downloadlink(T55XX_DLMODE_ALL, T55XX_DLMODE_ALL); PrintAndLogEx(NORMAL, " s - 4 byte hex value to start pwd search at"); PrintAndLogEx(NORMAL, " e - 4 byte hex value to end pwd search at"); PrintAndLogEx(NORMAL, ""); @@ -294,7 +294,7 @@ static int usage_t55xx_recoverpw() { PrintAndLogEx(NORMAL, " default password is 51243648, used by many cloners"); PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h - this help"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_ALL,T55XX_DLMODE_ALL); + print_usage_t55xx_downloadlink(T55XX_DLMODE_ALL, T55XX_DLMODE_ALL); PrintAndLogEx(NORMAL, " p - 4 byte hex value of password written by cloner"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); @@ -347,7 +347,7 @@ static int usage_t55xx_protect() { PrintAndLogEx(NORMAL, " p - OPTIONAL password (8 hex characters)"); PrintAndLogEx(NORMAL, " o - OPTIONAL override safety check"); PrintAndLogEx(NORMAL, " n - new password"); - print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE,config.downlink_mode); + print_usage_t55xx_downloadlink(T55XX_DLMODE_SINGLE, config.downlink_mode); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf t55xx protect n 01020304 - sets new password to 01020304"); @@ -358,15 +358,15 @@ static int usage_t55xx_protect() { static int CmdHelp(const char *Cmd); -void T55x7_SaveBlockData (uint8_t idx,uint32_t data) { +void T55x7_SaveBlockData(uint8_t idx, uint32_t data) { if (idx < T55x7_BLOCK_COUNT) { - cardmem[idx].valid = true; + cardmem[idx].valid = true; cardmem[idx].blockdata = data; } } -void T55x7_ClearAllBlockData (void) { +void T55x7_ClearAllBlockData(void) { for (uint8_t idx = 0; idx < T55x7_BLOCK_COUNT; idx++) { - cardmem[idx].valid = false; + cardmem[idx].valid = false; cardmem[idx].blockdata = 0x00; } } @@ -405,7 +405,7 @@ int clone_t55xx_tag(uint32_t *blockdata, uint8_t numblocks) { } } - uint8_t res = 0; + uint8_t res = 0; for (int8_t i = 0; i < numblocks; i++) { if (i == 0) { @@ -524,9 +524,9 @@ bool t55xxAquireAndDetect(bool usepwd, uint32_t password, uint32_t known_block0, // Update flags for usepwd pwd assume its correct config.usepwd = usepwd; - if (usepwd) + if (usepwd) config.pwd = password; - else + else config.pwd = 0x00; for (uint8_t m = 0; m < 4; m++) { @@ -541,7 +541,7 @@ bool t55xxAquireAndDetect(bool usepwd, uint32_t password, uint32_t known_block0, } config.usepwd = false; // unknown so assume no password config.pwd = 0x00; - + return false; } @@ -817,7 +817,7 @@ int T55xxReadBlockEx(uint8_t block, bool page1, bool usepwd, uint8_t override, u return PM3_EWRONGANSVER; if (verbose) - printT55xxBlock(block,page1); + printT55xxBlock(block, page1); return PM3_SUCCESS; } @@ -1021,7 +1021,7 @@ static int CmdT55xxDetect(const char *Cmd) { if (errors) return usage_t55xx_detect(); // detect called so clear data blocks - T55x7_ClearAllBlockData (); + T55x7_ClearAllBlockData(); // sanity check. if (SanityOfflineCheck(useGB) != PM3_SUCCESS) @@ -1030,18 +1030,18 @@ static int CmdT55xxDetect(const char *Cmd) { if (useGB == false) { // do ... while to check without password then loop back if password supplied do { - + if (try_all_dl_modes) { for (uint8_t m = downlink_mode; m < 4; m++) { - + if (AcquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, try_with_pwd & usepwd, password, m) == false) continue; // pre fill to save passing in. config.usepwd = try_with_pwd; - if (try_with_pwd) + if (try_with_pwd) config.pwd = password; - else + else config.pwd = 0x00; if (tryDetectModulation(m, T55XX_PrintConfig) == false) @@ -1052,9 +1052,9 @@ static int CmdT55xxDetect(const char *Cmd) { } } else { config.usepwd = try_with_pwd; - if (try_with_pwd) + if (try_with_pwd) config.pwd = password; - else + else config.pwd = 0x00; if (AcquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, usepwd, password, downlink_mode)) { @@ -1062,12 +1062,12 @@ static int CmdT55xxDetect(const char *Cmd) { } } - if (!found & usepwd) + if (!found & usepwd) try_with_pwd = !try_with_pwd; // toggle so we loop back if not found and try with pwd - - if (found) + + if (found) try_with_pwd = false; // force exit as decect block has been found. - + } while (try_with_pwd); } else { @@ -1345,7 +1345,7 @@ void printT55xxBlock(uint8_t blockNum, bool page1) { num_to_bytes(blockData, 4, bytes); - T55x7_SaveBlockData ((page1)?blockNum+8 : blockNum,blockData); + T55x7_SaveBlockData((page1) ? blockNum + 8 : blockNum, blockData); PrintAndLogEx(SUCCESS, " %02d | %08X | %s | %s", blockNum, blockData, sprint_bin(DemodBuffer + config.offset, 32), sprint_ascii(bytes, 4)); } @@ -1556,7 +1556,7 @@ int printConfiguration(t55xx_conf_block_t b) { PrintAndLogEx(NORMAL, " Downlink Mode : %s", GetDownlinkModeStr(b.downlink_mode)); PrintAndLogEx(NORMAL, " Password Set : %s", (b.usepwd) ? _RED_("Yes") : _GREEN_("No")); if (b.usepwd) - PrintAndLogEx(NORMAL, " Password : %08X",b.pwd); + PrintAndLogEx(NORMAL, " Password : %08X", b.pwd); PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } @@ -1930,9 +1930,9 @@ void printT55x7Trace(t55x7_tracedata_t data, uint8_t repeat) { PrintAndLogEx(NORMAL, "-------------------------------------------------------------"); /* - Trace info. - M1, M2 has the about ATMEL defintion of trace data. - M3 has unique format following industry defacto standard with row/col parity + Trace info. + M1, M2 has the about ATMEL defintion of trace data. + M3 has unique format following industry defacto standard with row/col parity TRACE - BLOCK O Bits Definition HEX @@ -1950,11 +1950,11 @@ void printT55x7Trace(t55x7_tracedata_t data, uint8_t repeat) { 1-12 LOT ID 13-17 Wafer number 18-32 DW, die number sequential - + Startup times (FC) - M1, M2 = 192 - M3 = 128 + M1, M2 = 192 + M3 = 128 */ } @@ -2226,11 +2226,11 @@ static int CmdT55xxDump(const char *Cmd) { cmdp++; break; case 'f': - param_getstr(Cmd, cmdp + 1, preferredName, FILE_PATH_SIZE); - cmdp+=2; - if (strlen (preferredName) == 0) - errors = true; - break; + param_getstr(Cmd, cmdp + 1, preferredName, FILE_PATH_SIZE); + cmdp += 2; + if (strlen(preferredName) == 0) + errors = true; + break; default: PrintAndLogEx(WARNING, "Unknown parameter '%c'", param_getchar(Cmd, cmdp)); errors = true; @@ -2250,35 +2250,35 @@ static int CmdT55xxDump(const char *Cmd) { if (override == 1) override++; // flag not to show safty for 2nd and on. } printT5xxHeader(1); - for (uint8_t i = 0; i < 4; i++) + for (uint8_t i = 0; i < 4; i++) if (T55xxReadBlock(i, 1, usepwd, override, password, downlink_mode) != PM3_SUCCESS) - T55x7_SaveBlockData (8+i,0x00); + T55x7_SaveBlockData(8 + i, 0x00); if (success) { // all ok save dump to file // saveFileEML will add .eml extension to filename // saveFile (binary) passes in the .bin extension. - if (strcmp (preferredName,"") == 0) { // Set default filename, if not set by user - strcpy (preferredName,"lf-t55xx"); + if (strcmp(preferredName, "") == 0) { // Set default filename, if not set by user + strcpy(preferredName, "lf-t55xx"); for (uint8_t i = 1; i <= 7; i++) { if ((cardmem[i].blockdata != 0x00) && (cardmem[i].blockdata != 0xFFFFFFFF)) - sprintf (preferredName + strlen(preferredName),"-%08X",cardmem[i].blockdata); + sprintf(preferredName + strlen(preferredName), "-%08X", cardmem[i].blockdata); else break; } - strcat (preferredName,"-data"); + strcat(preferredName, "-data"); } // Swap endian so the files match the txt display uint32_t data[T55x7_BLOCK_COUNT]; - + for (int i = 0; i < T55x7_BLOCK_COUNT; i++) data[i] = BSWAP_32(cardmem[i].blockdata); - saveFileEML(preferredName, (uint8_t *)data, T55x7_BLOCK_COUNT*sizeof(uint32_t), sizeof(uint32_t)); - saveFile (preferredName, ".bin", data, sizeof(data)); + saveFileEML(preferredName, (uint8_t *)data, T55x7_BLOCK_COUNT * sizeof(uint32_t), sizeof(uint32_t)); + saveFile(preferredName, ".bin", data, sizeof(data)); } - + return PM3_SUCCESS; } @@ -2301,17 +2301,17 @@ static int CmdT55xxRestore(const char *Cmd) { switch (tolower(param_getchar(Cmd, cmdp))) { case 'h': return usage_t55xx_restore(); - case 'f': - param_getstr(Cmd, cmdp + 1, preferredName, FILE_PATH_SIZE); - if (strlen (preferredName) == 0) - errors = true; - cmdp+=2; - break; + case 'f': + param_getstr(Cmd, cmdp + 1, preferredName, FILE_PATH_SIZE); + if (strlen(preferredName) == 0) + errors = true; + cmdp += 2; + break; case 'p': password = param_get32ex(Cmd, cmdp + 1, 0, 16); usepwd = true; cmdp += 2; - break; + break; default: PrintAndLogEx(WARNING, "Unknown parameter '%c'", param_getchar(Cmd, cmdp)); errors = true; @@ -2320,40 +2320,40 @@ static int CmdT55xxRestore(const char *Cmd) { } // File name expected to be .eml .bin or .json so sould be at least 4 - if (errors || (strlen (preferredName) == 0)) return usage_t55xx_restore(); - + if (errors || (strlen(preferredName) == 0)) return usage_t55xx_restore(); + // split file name into prefix and ext. int fnLength; - fnLength = strlen (preferredName); - + fnLength = strlen(preferredName); + success = PM3_ESOFT; if (fnLength > 4) { // Holds extension [.bin|.eml] - memcpy (ext,&preferredName[fnLength - 4],4); + memcpy(ext, &preferredName[fnLength - 4], 4); ext[5] = 0x00; // check if valid file extension and attempt to load data - if (memcmp (ext,".bin",4) == 0) { - preferredName[fnLength-4] = 0x00; - success = loadFile (preferredName, ".bin", data, sizeof(data),&datalen); - - } else if (memcmp (ext,".eml",4) == 0) { - preferredName[fnLength-4] = 0x00; + if (memcmp(ext, ".bin", 4) == 0) { + preferredName[fnLength - 4] = 0x00; + success = loadFile(preferredName, ".bin", data, sizeof(data), &datalen); + + } else if (memcmp(ext, ".eml", 4) == 0) { + preferredName[fnLength - 4] = 0x00; datalen = 12; success = loadFileEML(preferredName, (uint8_t *)data, &datalen); - } else - PrintAndLogEx(WARNING,"\nWarning: invalid dump filename "_YELLOW_("%s")"to restore!\n",preferredName); + } else + PrintAndLogEx(WARNING, "\nWarning: invalid dump filename "_YELLOW_("%s")"to restore!\n", preferredName); } if (success == PM3_SUCCESS) { // Got data, so write to cards if (datalen == T55x7_BLOCK_COUNT * 4) { // 12 blocks * 4 bytes per block if (usepwd) - sprintf (pwdOpt,"p %08X",password); + sprintf(pwdOpt, "p %08X", password); // Restore endien for writing to card - for (blockidx = 0; blockidx < 12; blockidx++) + for (blockidx = 0; blockidx < 12; blockidx++) data[blockidx] = BSWAP_32(data[blockidx]); // Have data ready, lets write @@ -2364,30 +2364,30 @@ static int CmdT55xxRestore(const char *Cmd) { downlink_mode = 0; if ((((data[11] >> 28) & 0xf) == 6) || (((data[11] >> 28) & 0xf) == 9)) downlink_mode = (data[11] >> 10) & 3; - + // write out blocks 1-7 page 0 for (blockidx = 1; blockidx <= 7; blockidx++) { - sprintf (writeCmdOpt,"b %d d %08X %s",blockidx,data[blockidx],pwdOpt); + sprintf(writeCmdOpt, "b %d d %08X %s", blockidx, data[blockidx], pwdOpt); if (CmdT55xxWriteBlock(writeCmdOpt) != PM3_SUCCESS) - PrintAndLogEx(WARNING, "Warning: error writing blk %d",blockidx); + PrintAndLogEx(WARNING, "Warning: error writing blk %d", blockidx); } // if password was set on the "blank" update as we may have just changed it if (usepwd) - sprintf (pwdOpt,"p %08X",data[7]); + sprintf(pwdOpt, "p %08X", data[7]); // write out blocks 1-3 page 1 for (blockidx = 9; blockidx <= 11; blockidx++) { - sprintf (writeCmdOpt,"b %d 1 d %08X %s",blockidx-8,data[blockidx],pwdOpt); + sprintf(writeCmdOpt, "b %d 1 d %08X %s", blockidx - 8, data[blockidx], pwdOpt); if (CmdT55xxWriteBlock(writeCmdOpt) != PM3_SUCCESS) - PrintAndLogEx(WARNING, "Warning: error writing blk %d",blockidx); + PrintAndLogEx(WARNING, "Warning: error writing blk %d", blockidx); } // Update downlink mode for the page 0 config write. config.downlink_mode = downlink_mode; - + // Write the page 0 config - sprintf (writeCmdOpt,"b 0 d %08X %s",data[0],pwdOpt); + sprintf(writeCmdOpt, "b 0 d %08X %s", data[0], pwdOpt); if (CmdT55xxWriteBlock(writeCmdOpt) != PM3_SUCCESS) PrintAndLogEx(WARNING, "Warning: error writing blk 0"); } diff --git a/client/cmdlft55xx.h b/client/cmdlft55xx.h index 7b980c042..4f96006b5 100644 --- a/client/cmdlft55xx.h +++ b/client/cmdlft55xx.h @@ -129,8 +129,8 @@ typedef struct { } t55xx_conf_block_t; typedef struct { - uint32_t blockdata; - bool valid; + uint32_t blockdata; + bool valid; } t55xx_memory_item_t ; t55xx_conf_block_t Get_t55xx_Config(void); @@ -150,7 +150,7 @@ char *GetModelStrFromCID(uint32_t cid); char *GetSelectedModulationStr(uint8_t id); char *GetDownlinkModeStr(uint8_t dlmode); void printT5xxHeader(uint8_t page); -void printT55xxBlock(uint8_t blockNum,bool page1); +void printT55xxBlock(uint8_t blockNum, bool page1); int printConfiguration(t55xx_conf_block_t b); bool t55xxAquireAndCompareBlock0(bool usepwd, uint32_t password, uint32_t known_block0, bool verbose); diff --git a/client/cmdlfverichip.c b/client/cmdlfverichip.c index 21ac52836..9bccefde4 100644 --- a/client/cmdlfverichip.c +++ b/client/cmdlfverichip.c @@ -95,13 +95,13 @@ static int CmdVerichipClone(const char *Cmd) { return usage_lf_verichip_clone(); case 'b': { // skip first block, 4*4 = 16 bytes left - uint8_t rawhex[16] = {0}; + uint8_t rawhex[16] = {0}; int res = param_gethex_to_eol(Cmd, cmdp + 1, rawhex, sizeof(rawhex), &datalen); - if ( res != 0 ) + if (res != 0) errors = true; - for(uint8_t i = 1; i < ARRAYLEN(blocks); i++) { - blocks[i] = bytes_to_num(rawhex + ( (i - 1) * 4 ), sizeof(uint32_t)); + for (uint8_t i = 1; i < ARRAYLEN(blocks); i++) { + blocks[i] = bytes_to_num(rawhex + ((i - 1) * 4), sizeof(uint32_t)); } cmdp += 2; break; diff --git a/client/emv/emv_pki_priv.c b/client/emv/emv_pki_priv.c index db8b6381d..d14e0b6ef 100644 --- a/client/emv/emv_pki_priv.c +++ b/client/emv/emv_pki_priv.c @@ -209,7 +209,7 @@ static struct tlvdb *emv_pki_sign_key(const struct crypto_pk *cp, if (!db) { free(exp_db); return NULL; - } + } tlvdb_add(db, exp_db); diff --git a/client/mifare/mifarehost.c b/client/mifare/mifarehost.c index 1f7f2e35a..39d2d6001 100644 --- a/client/mifare/mifarehost.c +++ b/client/mifare/mifarehost.c @@ -48,7 +48,7 @@ int mfDarkside(uint8_t blockno, uint8_t key_type, uint64_t *key) { payload.first_run = first_run; payload.blockno = blockno; payload.key_type = key_type; - SendCommandNG(CMD_HF_MIFARE_READER, (uint8_t*)&payload, sizeof(payload)); + SendCommandNG(CMD_HF_MIFARE_READER, (uint8_t *)&payload, sizeof(payload)); //flush queue while (kbd_enter_pressed()) { @@ -79,11 +79,11 @@ int mfDarkside(uint8_t blockno, uint8_t key_type, uint64_t *key) { uint8_t ar[4]; } PACKED; - struct p* package = (struct p*) resp.data.asBytes; + struct p *package = (struct p *) resp.data.asBytes; if (package->isOK == -6) { - *key = 0101; - return 1; + *key = 0101; + return 1; } if (package->isOK < 0) @@ -359,7 +359,7 @@ int mfnested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo, PacketResponseNG resp; clearCommandBuffer(); - SendCommandNG(CMD_HF_MIFARE_NESTED, (uint8_t*)&payload, sizeof(payload)); + SendCommandNG(CMD_HF_MIFARE_NESTED, (uint8_t *)&payload, sizeof(payload)); if (!WaitForResponseTimeout(CMD_HF_MIFARE_NESTED, &resp, 1500)) return PM3_ETIMEOUT; @@ -376,7 +376,7 @@ int mfnested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo, uint8_t nt_b[4]; uint8_t ks_b[4]; } PACKED; - struct p* package = (struct p*)resp.data.asBytes; + struct p *package = (struct p *)resp.data.asBytes; // error during nested if (package->isOK) return package->isOK; diff --git a/client/proxmark3.c b/client/proxmark3.c index c6045d900..db8434e07 100644 --- a/client/proxmark3.c +++ b/client/proxmark3.c @@ -689,22 +689,22 @@ int main(int argc, char *argv[]) { // Check if windows AnsiColor Support is enabled in the registery // [HKEY_CURRENT_USER\Console] // "VirtualTerminalLevel"=dword:00000001 - + HKEY hKey = NULL; - if(RegOpenKeyA (HKEY_CURRENT_USER,"Console",&hKey) == ERROR_SUCCESS) { + if (RegOpenKeyA(HKEY_CURRENT_USER, "Console", &hKey) == ERROR_SUCCESS) { DWORD dwType = REG_SZ; BYTE KeyValue[sizeof(dwType)]; DWORD len = sizeof(KeyValue); - if (RegQueryValueEx(hKey,"VirtualTerminalLevel", NULL, &dwType,KeyValue, &len) != ERROR_FILE_NOT_FOUND) { + if (RegQueryValueEx(hKey, "VirtualTerminalLevel", NULL, &dwType, KeyValue, &len) != ERROR_FILE_NOT_FOUND) { uint8_t i; uint32_t Data = 0; for (i = 0; i < 4; i++) Data += KeyValue[i] << (8 * i); if (Data == 1) { // Reg key is set to 1, Ansi Color Enabled - session.supports_colors = true; + session.supports_colors = true; } } RegCloseKey(hKey); diff --git a/client/wiegand_formatutils.c b/client/wiegand_formatutils.c index 3e1ee0028..80a9c9268 100644 --- a/client/wiegand_formatutils.c +++ b/client/wiegand_formatutils.c @@ -149,7 +149,7 @@ uint8_t get_length_from_header(wiegand_message_t *data) { hfmt >>= 1; len++; } - if (len < 26 ) + if (len < 26) len = 26; return len; } diff --git a/common/lfdemod.c b/common/lfdemod.c index 9ed1a83c3..30990ec73 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -84,10 +84,10 @@ static void printSignal(void) { #ifndef ON_DEVICE static int cmp_uint8(const void *a, const void *b) { - if (*(const uint8_t *)a < * (const uint8_t *)b) - return -1; - else - return *(const uint8_t *)a > *(const uint8_t *)b; + if (*(const uint8_t *)a < * (const uint8_t *)b) + return -1; + else + return *(const uint8_t *)a > *(const uint8_t *)b; } #endif @@ -123,7 +123,7 @@ void computeSignalProperties(uint8_t *samples, uint32_t size) { else signalprop.mean = 0; #else - for (uint32_t i = SIGNAL_IGNORE_FIRST_SAMPLES; i < size; i++) { + for (uint32_t i = SIGNAL_IGNORE_FIRST_SAMPLES; i < size; i++) { if (samples[i] < signalprop.low) signalprop.low = samples[i]; if (samples[i] > signalprop.high) signalprop.high = samples[i]; sum += samples[i]; From 23efb59d5f8bb4d750e5063407568febb79ae13b Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 13 Oct 2019 00:49:19 +0200 Subject: [PATCH 10/11] coverity: long test --- covbuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/covbuild.sh b/covbuild.sh index 4784a1de6..1899cb8b3 100755 --- a/covbuild.sh +++ b/covbuild.sh @@ -32,7 +32,7 @@ cov-build --dir "$COVDIR" --c-coverage=gcov --no-network-coverage --no-generate- ######################################### # Run tests # ######################################### -cov-build --dir "$COVDIR" --c-coverage=gcov --no-network-coverage --test-capture ./pm3test.sh +cov-build --dir "$COVDIR" --c-coverage=gcov --no-network-coverage --test-capture ./pm3test.sh long #cov-manage-emit --dir "$COVDIR" list-coverage-known ######################################### From 47d6eef7c947767551c50540d1d79f39943556e4 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 13 Oct 2019 01:21:59 +0200 Subject: [PATCH 11/11] usage --- client/cmdlft55xx.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index ceecbddc1..1607dc746 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -355,6 +355,21 @@ static int usage_t55xx_protect() { PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } +static int usage_t55xx_dangerraw() { + PrintAndLogEx(NORMAL, "This command allows to emit arbitrary raw commands on T5577 and cut the field after arbitrary duration."); + PrintAndLogEx(NORMAL, _RED_("WARNING:") " this may lock definitively the tag in an unusable state!"); + PrintAndLogEx(NORMAL, "Uncontrolled usage can easily write an invalid configuration, activate lock bits,"); + PrintAndLogEx(NORMAL, "OTP bit, password protection bit, deactivate test-mode, lock your card forever."); + PrintAndLogEx(NORMAL, "Uncontrolled usage is known to the State of California to cause cancer."); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, "Usage: lf t55xx dangerraw [h] [b t ]"); + PrintAndLogEx(NORMAL, "Options:"); + PrintAndLogEx(NORMAL, " h - This help"); + PrintAndLogEx(NORMAL, " b - raw bitstream"); + PrintAndLogEx(NORMAL, " t - time in microseconds before dropping the field"); + PrintAndLogEx(NORMAL, ""); + return PM3_SUCCESS; +} static int CmdHelp(const char *Cmd); @@ -1706,6 +1721,8 @@ static int CmdT55xxDangerousRaw(const char *Cmd) { while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { switch (tolower(param_getchar(Cmd, cmdp))) { + case 'h': + return usage_t55xx_dangerraw(); case 't': ng.time = param_get32ex(Cmd, cmdp + 1, 0, 10); if (ng.time == 0 || ng.time > 200000) { @@ -1745,8 +1762,7 @@ static int CmdT55xxDangerousRaw(const char *Cmd) { } } if (errors || ng.bitlen == 0 || ng.time == 0) { - PrintAndLogEx(ERR, "Error occurred, abort. " _RED_("DANGEROUS COMMAND, DO NOT USE!")); - return PM3_EINVARG; + return usage_t55xx_dangerraw(); } PacketResponseNG resp; clearCommandBuffer();