I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKI2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwojaW5jbHVkZSAmbHQ7bWF0aC5oJmd0OwoKLy8g6IKh56Wo5pWw5o2u57uT5p6E5L2T77yI5oiQ5ZGY5ZG95ZCN5a6M5YWo6KeE6IyD77yJCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgZGF0ZVsxMl07ICAgICAgIC8vIOaXpeacn++8iFlZWVktTU0tRETvvIkKICAgIGRvdWJsZSBjbG9zZTsgICAgICAgIC8vIOaUtuebmOS7twogICAgZG91YmxlIHZvbDsgICAgICAgICAgLy8g5oiQ5Lqk6YeP77yI5omL77yJCiAgICBkb3VibGUgbWE3OyAgICAgICAgICAvLyA35pel5Z2H57q/CiAgICBkb3VibGUgbWExMzsgICAgICAgICAvLyAxM+aXpeWdh+e6vwogICAgZG91YmxlIG1hMjE7ICAgICAgICAgLy8gMjHml6XlnYfnur8KICAgIGRvdWJsZSBtYTM0OyAgICAgICAgIC8vIDM05pel5Z2H57q/CiAgICBkb3VibGUgbWE1MDsgICAgICAgICAvLyA1MOaXpeWdh+e6vwogICAgZG91YmxlIG1hODk7ICAgICAgICAgLy8gODnml6XlnYfnur8KICAgIGRvdWJsZSBtYTEzMzsgICAgICAgIC8vIDEzM+aXpeWdh+e6vwogICAgZG91YmxlIG1hMjMzOyAgICAgICAgLy8gMjMz5pel5Z2H57q/CiAgICBkb3VibGUgbWFfdm9sNTsgICAgICAvLyA15pel6YeP5Z2H57q/CiAgICBkb3VibGUgZGlmOyAgICAgICAgICAvLyBNQUNELURJRgogICAgZG91YmxlIGRlYTsgICAgICAgICAgLy8gTUFDRC1ERUEKICAgIGRvdWJsZSByc2kxOyAgICAgICAgIC8vIDE05pelUlNJCn0gU3RvY2tEYXRhOwoKLy8g6K6h566X5Z2H57q/CnZvaWQgY2FsY19tYShTdG9ja0RhdGEgKmRhdGEsIGludCBsZW4pIHsKICAgIGRvdWJsZSBzdW1fY2xvc2UsIHN1bV92b2w7CiAgICBmb3IgKGludCBpID0gMDsgaSAmbHQ7IGxlbjsgaSsrKSB7CiAgICAgICAgZGF0YVtpXS5tYTcgPSAoaSAmbHQ7IDYpID8gMCA6IChkYXRhW2ktNl0uY2xvc2UgKyBkYXRhW2ktNV0uY2xvc2UgKyBkYXRhW2ktNF0uY2xvc2UgKyBkYXRhW2ktM10uY2xvc2UgKyBkYXRhW2ktMl0uY2xvc2UgKyBkYXRhW2ktMV0uY2xvc2UgKyBkYXRhW2ldLmNsb3NlKSAvIDc7CiAgICAgICAgZGF0YVtpXS5tYTEzID0gKGkgJmx0OyAxMikgPyAwIDogKGRhdGFbaS0xMl0uY2xvc2UgKyBkYXRhW2ktMTFdLmNsb3NlICsgZGF0YVtpLTEwXS5jbG9zZSArIGRhdGFbaS05XS5jbG9zZSArIGRhdGFbaS04XS5jbG9zZSArIGRhdGFbaS03XS5jbG9zZSArIGRhdGFbaS02XS5jbG9zZSArIGRhdGFbaS01XS5jbG9zZSArIGRhdGFbaS00XS5jbG9zZSArIGRhdGFbaS0zXS5jbG9zZSArIGRhdGFbaS0yXS5jbG9zZSArIGRhdGFbaS0xXS5jbG9zZSArIGRhdGFbaV0uY2xvc2UpIC8gMTM7CiAgICAgICAgZGF0YVtpXS5tYTIxID0gKGkgJmx0OyAyMCkgPyAwIDogKGRhdGFbaS0yMF0uY2xvc2UgKyBkYXRhW2ktMTldLmNsb3NlICsgZGF0YVtpLTE4XS5jbG9zZSArIGRhdGFbaS0xN10uY2xvc2UgKyBkYXRhW2ktMTZdLmNsb3NlICsgZGF0YVtpLTE1XS5jbG9zZSArIGRhdGFbaS0xNF0uY2xvc2UgKyBkYXRhW2ktMTNdLmNsb3NlICsgZGF0YVtpLTEyXS5jbG9zZSArIGRhdGFbaS0xMV0uY2xvc2UgKyBkYXRhW2ktMTBdLmNsb3NlICsgZGF0YVtpLTldLmNsb3NlICsgZGF0YVtpLThdLmNsb3NlICsgZGF0YVtpLTddLmNsb3NlICsgZGF0YVtpLTZdLmNsb3NlICsgZGF0YVtpLTVdLmNsb3NlICsgZGF0YVtpLTRdLmNsb3NlICsgZGF0YVtpLTNdLmNsb3NlICsgZGF0YVtpLTJdLmNsb3NlICsgZGF0YVtpLTFdLmNsb3NlICsgZGF0YVtpXS5jbG9zZSkgLyAyMTsKICAgICAgICBkYXRhW2ldLm1hMzQgPSAoaSAmbHQ7IDMzKSA/IDAgOiAoZGF0YVtpLTMzXS5jbG9zZSArIGRhdGFbaS0zMl0uY2xvc2UgKyBkYXRhW2ktMzFdLmNsb3NlICsgZGF0YVtpLTMwXS5jbG9zZSArIGRhdGFbaS0yOV0uY2xvc2UgKyBkYXRhW2ktMjhdLmNsb3NlICsgZGF0YVtpLTI3XS5jbG9zZSArIGRhdGFbaS0yNl0uY2xvc2UgKyBkYXRhW2ktMjVdLmNsb3NlICsgZGF0YVtpLTI0XS5jbG9zZSArIGRhdGFbaS0yM10uY2xvc2UgKyBkYXRhW2ktMjJdLmNsb3NlICsgZGF0YVtpLTIxXS5jbG9zZSArIGRhdGFbaS0yMF0uY2xvc2UgKyBkYXRhW2ktMTldLmNsb3NlICsgZGF0YVtpLTE4XS5jbG9zZSArIGRhdGFbaS0xN10uY2xvc2UgKyBkYXRhW2ktMTZdLmNsb3NlICsgZGF0YVtpLTE1XS5jbG9zZSArIGRhdGFbaS0xNF0uY2xvc2UgKyBkYXRhW2ktMTNdLmNsb3NlICsgZGF0YVtpLTEyXS5jbG9zZSArIGRhdGFbaS0xMV0uY2xvc2UgKyBkYXRhW2ktMTBdLmNsb3NlICsgZGF0YVtpLTldLmNsb3NlICsgZGF0YVtpLThdLmNsb3NlICsgZGF0YVtpLTddLmNsb3NlICsgZGF0YVtpLTZdLmNsb3NlICsgZGF0YVtpLTVdLmNsb3NlICsgZGF0YVtpLTRdLmNsb3NlICsgZGF0YVtpLTNdLmNsb3NlICsgZGF0YVtpLTJdLmNsb3NlICsgZGF0YVtpLTFdLmNsb3NlICsgZGF0YVtpXS5jbG9zZSkgLyAzNDsKICAgICAgICBkYXRhW2ldLm1hNTAgPSAoaSAmbHQ7IDQ5KSA/IDAgOiAoZGF0YVtpLTQ5XS5jbG9zZSArIGRhdGFbaS00OF0uY2xvc2UgKyBkYXRhW2ktNDddLmNsb3NlICsgZGF0YVtpLTQ2XS5jbG9zZSArIGRhdGFbaS00NV0uY2xvc2UgKyBkYXRhW2ktNDRdLmNsb3NlICsgZGF0YVtpLTQzXS5jbG9zZSArIGRhdGFbaS00Ml0uY2xvc2UgKyBkYXRhW2ktNDFdLmNsb3NlICsgZGF0YVtpLTQwXS5jbG9zZSArIGRhdGFbaS0zOV0uY2xvc2UgKyBkYXRhW2ktMzhdLmNsb3NlICsgZGF0YVtpLTM3XS5jbG9zZSArIGRhdGFbaS0zNl0uY2xvc2UgKyBkYXRhW2ktMzVdLmNsb3NlICsgZGF0YVtpLTM0XS5jbG9zZSArIGRhdGFbaS0zM10uY2xvc2UgKyBkYXRhW2ktMzJdLmNsb3NlICsgZGF0YVtpLTMxXS5jbG9zZSArIGRhdGFbaS0zMF0uY2xvc2UgKyBkYXRhW2ktMjldLmNsb3NlICsgZGF0YVtpLTI4XS5jbG9zZSArIGRhdGFbaS0yN10uY2xvc2UgKyBkYXRhW2ktMjZdLmNsb3NlICsgZGF0YVtpLTI1XS5jbG9zZSArIGRhdGFbaS0yNF0uY2xvc2UgKyBkYXRhW2ktMjNdLmNsb3NlICsgZGF0YVtpLTIyXS5jbG9zZSArIGRhdGFbaS0yMV0uY2xvc2UgKyBkYXRhW2ktMjBdLmNsb3NlICsgZGF0YVtpLTE5XS5jbG9zZSArIGRhdGFbaS0xOF0uY2xvc2UgKyBkYXRhW2ktMTddLmNsb3NlICsgZGF0YVtpLTE2XS5jbG9zZSArIGRhdGFbaS0xNV0uY2xvc2UgKyBkYXRhW2ktMTRdLmNsb3NlICsgZGF0YVtpLTEzXS5jbG9zZSArIGRhdGFbaS0xMl0uY2xvc2UgKyBkYXRhW2ktMTFdLmNsb3NlICsgZGF0YVtpLTEwXS5jbG9zZSArIGRhdGFbaS05XS5jbG9zZSArIGRhdGFbaS04XS5jbG9zZSArIGRhdGFbaS03XS5jbG9zZSArIGRhdGFbaS02XS5jbG9zZSArIGRhdGFbaS01XS5jbG9zZSArIGRhdGFbaS00XS5jbG9zZSArIGRhdGFbaS0zXS5jbG9zZSArIGRhdGFbaS0yXS5jbG9zZSArIGRhdGFbaS0xXS5jbG9zZSArIGRhdGFbaV0uY2xvc2UpIC8gNTA7CiAgICAgICAgZGF0YVtpXS5tYTg5ID0gKGkgJmx0OyA4OCkgPyAwIDogKGRhdGFbaS04OF0uY2xvc2UgKyBkYXRhW2ktODddLmNsb3NlICsgZGF0YVtpLTg2XS5jbG9zZSArIGRhdGFbaS04NV0uY2xvc2UgKyBkYXRhW2ktODRdLmNsb3NlICsgZGF0YVtpLTgzXS5jbG9zZSArIGRhdGFbaS04Ml0uY2xvc2UgKyBkYXRhW2ktODFdLmNsb3NlICsgZGF0YVtpLTgwXS5jbG9zZSArIGRhdGFbaS03OV0uY2xvc2UgKyBkYXRhW2ktNzhdLmNsb3NlICsgZGF0YVtpLTc3XS5jbG9zZSArIGRhdGFbaS03Nl0uY2xvc2UgKyBkYXRhW2ktNzVdLmNsb3NlICsgZGF0YVtpLTc0XS5jbG9zZSArIGRhdGFbaS03M10uY2xvc2UgKyBkYXRhW2ktNzJdLmNsb3NlICsgZGF0YVtpLTcxXS5jbG9zZSArIGRhdGFbaS03MF0uY2xvc2UgKyBkYXRhW2ktNjldLmNsb3NlICsgZGF0YVtpLTY4XS5jbG9zZSArIGRhdGFbaS02N10uY2xvc2UgKyBkYXRhW2ktNjZdLmNsb3NlICsgZGF0YVtpLTY1XS5jbG9zZSArIGRhdGFbaS02NF0uY2xvc2UgKyBkYXRhW2ktNjNdLmNsb3NlICsgZGF0YVtpLTYyXS5jbG9zZSArIGRhdGFbaS02MV0uY2xvc2UgKyBkYXRhW2ktNjBdLmNsb3NlICsgZGF0YVtpLTU5XS5jbG9zZSArIGRhdGFbaS01OF0uY2xvc2UgKyBkYXRhW2ktNTddLmNsb3NlICsgZGF0YVtpLTU2XS5jbG9zZSArIGRhdGFbaS01NV0uY2xvc2UgKyBkYXRhW2ktNTRdLmNsb3NlICsgZGF0YVtpLTUzXS5jbG9zZSArIGRhdGFbaS01Ml0uY2xvc2UgKyBkYXRhW2ktNTFdLmNsb3NlICsgZGF0YVtpLTUwXS5jbG9zZSArIGRhdGFbaS00OV0uY2xvc2UgKyBkYXRhW2ktNDhdLmNsb3NlICsgZGF0YVtpLTQ3XS5jbG9zZSArIGRhdGFbaS00Nl0uY2xvc2UgKyBkYXRhW2ktNDVdLmNsb3NlICsgZGF0YVtpLTQ0XS5jbG9zZSArIGRhdGFbaS00M10uY2xvc2UgKyBkYXRhW2ktNDJdLmNsb3NlICsgZGF0YVtpLTQxXS5jbG9zZSArIGRhdGFbaS00MF0uY2xvc2UgKyBkYXRhW2ktMzldLmNsb3NlICsgZGF0YVtpLTM4XS5jbG9zZSArIGRhdGFbaS0zN10uY2xvc2UgKyBkYXRhW2ktMzZdLmNsb3NlICsgZGF0YVtpLTM1XS5jbG9zZSArIGRhdGFbaS0zNF0uY2xvc2UgKyBkYXRhW2ktMzNdLmNsb3NlICsgZGF0YVtpLTMyXS5jbG9zZSArIGRhdGFbaS0zMV0uY2xvc2UgKyBkYXRhW2ktMzBdLmNsb3NlICsgZGF0YVtpLTI5XS5jbG9zZSArIGRhdGFbaS0yOF0uY2xvc2UgKyBkYXRhW2ktMjddLmNsb3NlICsgZGF0YVtpLTI2XS5jbG9zZSArIGRhdGFbaS0yNV0uY2xvc2UgKyBkYXRhW2ktMjRdLmNsb3NlICsgZGF0YVtpLTIzXS5jbG9zZSArIGRhdGFbaS0yMl0uY2xvc2UgKyBkYXRhW2ktMjFdLmNsb3NlICsgZGF0YVtpLTIwXS5jbG9zZSArIGRhdGFbaS0xOV0uY2xvc2UgKyBkYXRhW2ktMThdLmNsb3NlICsgZGF0YVtpLTE3XS5jbG9zZSArIGRhdGFbaS0xNl0uY2xvc2UgKyBkYXRhW2ktMTVdLmNsb3NlICsgZGF0YVtpLTE0XS5jbG9zZSArIGRhdGFbaS0xM10uY2xvc2UgKyBkYXRhW2ktMTJdLmNsb3NlICsgZGF0YVtpLTExXS5jbG9zZSArIGRhdGFbaS0xMF0uY2xvc2UgKyBkYXRhW2ktOV0uY2xvc2UgKyBkYXRhW2ktOF0uY2xvc2UgKyBkYXRhW2ktN10uY2xvc2UgKyBkYXRhW2ktNl0uY2xvc2UgKyBkYXRhW2ktNV0uY2xvc2UgKyBkYXRhW2ktNF0uY2xvc2UgKyBkYXRhW2ktM10uY2xvc2UgKyBkYXRhW2ktMl0uY2xvc2UgKyBkYXRhW2ktMV0uY2xvc2UgKyBkYXRhW2ldLmNsb3NlKSAvIDg5OwogICAgICAgIGRhdGFbaV0ubWExMzMgPSAoaSAmbHQ7IDEzMikgPyAwIDogKGRhdGFbaS0xMzJdLmNsb3NlICsgZGF0YVtpLTEzMV0uY2xvc2UgKyBkYXRhW2ktMTMwXS5jbG9zZSArIGRhdGFbaS0xMjldLmNsb3NlICsgZGF0YVtpLTEyOF0uY2xvc2UgKyBkYXRhW2ktMTI3XS5jbG9zZSArIGRhdGFbaS0xMjZdLmNsb3NlICsgZGF0YVtpLTEyNV0uY2xvc2UgKyBkYXRhW2ktMTI0XS5jbG9zZSArIGRhdGFbaS0xMjNdLmNsb3NlICsgZGF0YVtpLTEyMl0uY2xvc2UgKyBkYXRhW2ktMTIxXS5jbG9zZSArIGRhdGFbaS0xMjBdLmNsb3NlICsgZGF0YVtpLTExOV0uY2xvc2UgKyBkYXRhW2ktMTE4XS5jbG9zZSArIGRhdGFbaS0xMTddLmNsb3NlICsgZGF0YVtpLTExNl0uY2xvc2UgKyBkYXRhW2ktMTE1XS5jbG9zZSArIGRhdGFbaS0xMTRdLmNsb3NlICsgZGF0YVtpLTExM10uY2xvc2UgKyBkYXRhW2ktMTEyXS5jbG9zZSArIGRhdGFbaS0xMTFdLmNsb3NlICsgZGF0YVtpLTExMF0uY2xvc2UgKyBkYXRhW2ktMTA5XS5jbG9zZSArIGRhdGFbaS0xMDhdLmNsb3NlICsgZGF0YVtpLTEwN10uY2xvc2UgKyBkYXRhW2ktMTA2XS5jbG9zZSArIGRhdGFbaS0xMDVdLmNsb3NlICsgZGF0YVtpLTEwNF0uY2xvc2UgKyBkYXRhW2ktMTAzXS5jbG9zZSArIGRhdGFbaS0xMDJdLmNsb3NlICsgZGF0YVtpLTEwMV0uY2xvc2UgKyBkYXRhW2ktMTAwXS5jbG9zZSArIGRhdGFbaS05OV0uY2xvc2UgKyBkYXRhW2ktOThdLmNsb3NlICsgZGF0YVtpLTk3XS5jbG9zZSArIGRhdGFbaS05Nl0uY2xvc2UgKyBkYXRhW2ktOTVdLmNsb3NlICsgZGF0YVtpLTk0XS5jbG9zZSArIGRhdGFbaS05M10uY2xvc2UgKyBkYXRhW2ktOTJdLmNsb3NlICsgZGF0YVtpLTkxXS5jbG9zZSArIGRhdGFbaS05MF0uY2xvc2UgKyBkYXRhW2ktODldLmNsb3NlICsgZGF0YVtpLTg4XS5jbG9zZSArIGRhdGFbaS04N10uY2xvc2UgKyBkYXRhW2ktODZdLmNsb3NlICsgZGF0YVtpLTg1XS5jbG9zZSArIGRhdGFbaS04NF0uY2xvc2UgKyBkYXRhW2ktODNdLmNsb3NlICsgZGF0YVtpLTgyXS5jbG9zZSArIGRhdGFbaS04MV0uY2xvc2UgKyBkYXRhW2ktODBdLmNsb3NlICsgZGF0YVtpLTc5XS5jbG9zZSArIGRhdGFbaS03OF0uY2xvc2UgKyBkYXRhW2ktNzddLmNsb3NlICsgZGF0YVtpLTc2XS5jbG9zZSArIGRhdGFbaS03NV0uY2xvc2UgKyBkYXRhW2ktNzRdLmNsb3NlICsgZGF0YVtpLTczXS5jbG9zZSArIGRhdGFbaS03Ml0uY2xvc2UgKyBkYXRhW2ktNzFdLmNsb3NlICsgZGF0YVtpLTcwXS5jbG9zZSArIGRhdGFbaS02OV0uY2xvc2UgKyBkYXRhW2ktNjhdLmNsb3NlICsgZGF0YVtpLTY3XS5jbG9zZSArIGRhdGFbaS02Nl0uY2xvc2UgKyBkYXRhW2ktNjVdLmNsb3NlICsgZGF0YVtpLTY0XS5jbG9zZSArIGRhdGFbaS02M10uY2xvc2UgKyBkYXRhW2ktNjJdLmNsb3NlICsgZGF0YVtpLTYxXS5jbG9zZSArIGRhdGFbaS02MF0uY2xvc2UgKyBkYXRhW2ktNTldLmNsb3NlICsgZGF0YVtpLTU4XS5jbG9zZSArIGRhdGFbaS01N10uY2xvc2UgKyBkYXRhW2ktNTZdLmNsb3NlICsgZGF0YVtpLTU1XS5jbG9zZSArIGRhdGFbaS01NF0uY2xvc2UgKyBkYXRhW2ktNTNdLmNsb3NlICsgZGF0YVtpLTUyXS5jbG9zZSArIGRhdGFbaS01MV0uY2xvc2UgKyBkYXRhW2ktNTBdLmNsb3NlICsgZGF0YVtpLTQ5XS5jbG9zZSArIGRhdGFbaS00OF0uY2xvc2UgKyBkYXRhW2ktNDddLmNsb3NlICsgZGF0YVtpLTQ2XS5jbG9zZSArIGRhdGFbaS00NV0uY2xvc2UgKyBkYXRhW2ktNDRdLmNsb3NlICsgZGF0YVtpLTQzXS5jbG9zZSArIGRhdGFbaS00Ml0uY2xvc2UgKyBkYXRhW2ktNDFdLmNsb3NlICsgZGF0YVtpLTQwXS5jbG9zZSArIGRhdGFbaS0zOV0uY2xvc2UgKyBkYXRhW2ktMzhdLmNsb3NlICsgZGF0YVtpLTM3XS5jbG9zZSArIGRhdGFbaS0zNl0uY2xvc2UgKyBkYXRhW2ktMzVdLmNsb3NlICsgZGF0YVtpLTM0XS5jbG9zZSArIGRhdGFbaS0zM10uY2xvc2UgKyBkYXRhW2ktMzJdLmNsb3NlICsgZGF0YVtpLTMxXS5jbG9zZSArIGRhdGFbaS0zMF0uY2xvc2UgKyBkYXRhW2ktMjldLmNsb3NlICsgZGF0YVtpLTI4XS5jbG9zZSArIGRhdGFbaS0yN10uY2xvc2UgKyBkYXRhW2ktMjZdLmNsb3NlICsgZGF0YVtpLTI1XS5jbG9zZSArIGRhdGFbaS0yNF0uY2xvc2UgKyBkYXRhW2ktMjNdLmNsb3NlICsgZGF0YVtpLTIyXS5jbG9zZSArIGRhdGFbaS0yMV0uY2xvc2UgKyBkYXRhW2ktMjBdLmNsb3NlICsgZGF0YVtpLTE5XS5jbG9zZSArIGRhdGFbaS0xOF0uY2xvc2UgKyBkYXRhW2ktMTddLmNsb3NlICsgZGF0YVtpLTE2XS5jbG9zZSArIGRhdGFbaS0xNV0uY2xvc2UgKyBkYXRhW2ktMTRdLmNsb3NlICsgZGF0YVtpLTEzXS5jbG9zZSArIGRhdGFbaS0xMl0uY2xvc2UgKyBkYXRhW2ktMTFdLmNsb3NlICsgZGF0YVtpLTEwXS5jbG9zZSArIGRhdGFbaS05XS5jbG9zZSArIGRhdGFbaS04XS5jbG9zZSArIGRhdGFbaS03XS5jbG9zZSArIGRhdGFbaS02XS5jbG9zZSArIGRhdGFbaS01XS5jbG9zZSArIGRhdGFbaS00XS5jbG9zZSArIGRhdGFbaS0zXS5jbG9zZSArIGRhdGFbaS0yXS5jbG9zZSArIGRhdGFbaS0xXS5jbG9zZSArIGRhdGFbaV0uY2xvc2UpIC8gMTMzOwogICAgICAgIGRhdGFbaV0ubWEyMzMgPSAoaSAmbHQ7IDIzMikgPyAwIDogKGRhdGFbaS0yMzJdLmNsb3NlICsgZGF0YVtpLTIzMV0uY2xvc2UgKyBkYXRhW2ktMjMwXS5jbG9zZSArIGRhdGFbaS0yMjldLmNsb3NlICsgZGF0YVtpLTIyOF0uY2xvc2UgKyBkYXRhW2ktMjI3XS5jbG9zZSArIGRhdGFbaS0yMjZdLmNsb3NlICsgZGF0YVtpLTIyNV0uY2xvc2UgKyBkYXRhW2ktMjI0XS5jbG9zZSArIGRhdGFbaS0yMjNdLmNsb3NlICsgZGF0YVtpLTIyMl0uY2xvc2UgKyBkYXRhW2ktMjIxXS5jbG9zZSArIGRhdGFbaS0yMjBdLmNsb3NlICsgZGF0YVtpLTIxOV0uY2xvc2UgKyBkYXRhW2ktMjE4XS5jbG9zZSArIGRhdGFbaS0yMTddLmNsb3NlICsgZGF0YVtpLTIxNl0uY2xvc2UgKyBkYXRhW2ktMjE1XS5jbG9zZSArIGRhdGFbaS0yMTRdLmNsb3NlICsgZGF0YVtpLTIxM10uY2xvc2UgKyBkYXRhW2ktMjEyXS5jbG9zZSArIGRhdGFbaS0yMTFdLmNsb3NlICsgZGF0YVtpLTIxMF0uY2xvc2UgKyBkYXRhW2ktMjA5XS5jbG9zZSArIGRhdGFbaS0yMDhdLmNsb3NlICsgZGF0YVtpLTIwN10uY2xvc2UgKyBkYXRhW2ktMjA2XS5jbG9zZSArIGRhdGFbaS0yMDVdLmNsb3NlICsgZGF0YVtpLTIwNF0uY2xvc2UgKyBkYXRhW2ktMjAzXS5jbG9zZSArIGRhdGFbaS0yMDJdLmNsb3NlICsgZGF0YVtpLTIwMV0uY2xvc2UgKyBkYXRhW2ktMjAwXS5jbG9zZSArIGRhdGFbaS0xOTldLmNsb3NlICsgZGF0YVtpLTE5OF0uY2xvc2UgKyBkYXRhW2ktMTk3XS5jbG9zZSArIGRhdGFbaS0xOTZdLmNsb3NlICsgZGF0YVtpLTE5NV0uY2xvc2UgKyBkYXRhW2ktMTk0XS5jbG9zZSArIGRhdGFbaS0xOTNdLmNsb3NlICsgZGF0YVtpLTE5Ml0uY2xvc2UgKyBkYXRhW2ktMTkxXS5jbG9zZSArIGRhdGFbaS0xOTBdLmNsb3NlICsgZGF0YVtpLTE4OV0uY2xvc2UgKyBkYXRhW2ktMTg4XS5jbG9zZSArIGRhdGFbaS0xODddLmNsb3NlICsgZGF0YVtpLTE4Nl0uY2xvc2UgKyBkYXRhW2ktMTg1XS5jbG9zZSArIGRhdGFbaS0xODRdLmNsb3NlICsgZGF0YVtpLTE4M10uY2xvc2UgKyBkYXRhW2ktMTgyXS5jbG9zZSArIGRhdGFbaS0xODFdLmNsb3NlICsgZGF0YVtpLTE4MF0uY2xvc2UgKyBkYXRhW2ktMTc5XS5jbG9zZSArIGRhdGFbaS0xNzhdLmNsb3NlICsgZGF0YVtpLTE3N10uY2xvc2UgKyBkYXRhW2ktMTc2XS5jbG9zZSArIGRhdGFbaS0xNzVdLmNsb3NlICsgZGF0YVtpLTE3NF0uY2xvc2UgKyBkYXRhW2ktMTczXS5jbG9zZSArIGRhdGFbaS0xNzJdLmNsb3NlICsgZGF0YVtpLTE3MV0uY2xvc2UgKyBkYXRhW2ktMTcwXS5jbG9zZSArIGRhdGFbaS0xNjldLmNsb3NlICsgZGF0YVtpLTE2OF0uY2xvc2UgKyBkYXRhW2ktMTY3XS5jbG9zZSArIGRhdGFbaS0xNjZdLmNsb3NlICsgZGF0YVtpLTE2NV0uY2xvc2UgKyBkYXRhW2ktMTY0XS5jbG9zZSArIGRhdGFbaS0xNjNdLmNsb3NlICsgZGF0YVtpLTE2Ml0uY2xvc2UgKyBkYXRhW2ktMTYxXS5jbG9zZSArIGRhdGFbaS0xNjBdLmNsb3NlICsgZGF0YVtpLTE1OV0uY2xvc2UgKyBkYXRhW2ktMTU4XS5jbG9zZSArIGRhdGFbaS0xNTddLmNsb3NlICsgZGF0YVtpLTE1Nl0uY2xvc2UgKyBkYXRhW2ktMTU1XS5jbG9zZSArIGRhdGFbaS0xNTRdLmNsb3NlICsgZGF0YVtpLTE1M10uY2xvc2UgKyBkYXRhW2ktMTUyXS5jbG9zZSArIGRhdGFbaS0xNTFdLmNsb3NlICsgZGF0YVtpLTE1MF0uY2xvc2UgKyBkYXRhW2ktMTQ5XS5jbG9zZSArIGRhdGFbaS0xNDhdLmNsb3NlICsgZGF0YVtpLTE0N10uY2xvc2UgKyBkYXRhW2ktMTQ2XS5jbG9zZSArIGRhdGFbaS0xNDVdLmNsb3NlICsgZGF0YVtpLTE0NF0uY2xvc2UgKyBkYXRhW2ktMTQzXS5jbG9zZSArIGRhdGFbaS0xNDJdLmNsb3NlICsgZGF0YVtpLTE0MV0uY2xvc2UgKyBkYXRhW2ktMTQwXS5jbG9zZSArIGRhdGFbaS0xMzldLmNsb3NlICsgZGF0YVtpLTEzOF0uY2xvc2UgKyBkYXRhW2ktMTM3XS5jbG9zZSArIGRhdGFbaS0xMzZdLmNsb3NlICsgZGF0YVtpLTEzNV0uY2xvc2UgKyBkYXRhW2ktMTM0XS5jbG9zZSArIGRhdGFbaS0xMzNdLmNsb3NlICsgZGF0YVtpLTEzMl0uY2xvc2UgKyBkYXRhW2ktMTMxXS5jbG9zZSArIGRhdGFbaS0xMzBdLmNsb3NlICsgZGF0YVtpLTEyOV0uY2xvc2UgKyBkYXRhW2ktMTI4XS5jbG9zZSArIGRhdGFbaS0xMjddLmNsb3NlICsgZGF0YVtpLTEyNl0uY2xvc2UgKyBkYXRhW2ktMTI1XS5jbG9zZSArIGRhdGFbaS0xMjRdLmNsb3NlICsgZGF0YVtpLTEyM10uY2xvc2UgKyBkYXRhW2ktMTIyXS5jbG9zZSArIGRhdGFbaS0xMjFdLmNsb3NlICsgZGF0YVtpLTEyMF0uY2xvc2UgKyBkYXRhW2ktMTE5XS5jbG9zZSArIGRhdGFbaS0xMThdLmNsb3NlICsgZGF0YVtpLTExN10uY2xvc2UgKyBkYXRhW2ktMTE2XS5jbG9zZSArIGRhdGFbaS0xMTVdLmNsb3NlICsgZGF0YVtpLTExNF0uY2xvc2UgKyBkYXRhW2ktMTEzXS5jbG9zZSArIGRhdGFbaS0xMTJdLmNsb3NlICsgZGF0YVtpLTExMV0uY2xvc2UgKyBkYXRhW2ktMTEwXS5jbG9zZSArIGRhdGFbaS0xMDldLmNsb3NlICsgZGF0YVtpLTEwOF0uY2xvc2UgKyBkYXRhW2ktMTA3XS5jbG9zZSArIGRhdGFbaS0xMDZdLmNsb3NlICsgZGF0YVtpLTEwNV0uY2xvc2UgKyBkYXRhW2ktMTA0XS5jbG9zZSArIGRhdGFbaS0xMDNdLmNsb3NlICsgZGF0YVtpLTEwMl0uY2xvc2UgKyBkYXRhW2ktMTAxXS5jbG9zZSArIGRhdGFbaS0xMDBdLmNsb3NlICsgZGF0YVtpLTk5XS5jbG9zZSArIGRhdGFbaS05OF0uY2xvc2UgKyBkYXRhW2ktOTddLmNsb3NlICsgZGF0YVtpLTk2XS5jbG9zZSArIGRhdGFbaS05NV0uY2xvc2UgKyBkYXRhW2ktOTRdLmNsb3NlICsgZGF0YVtpLTkzXS5jbG9zZSArIGRhdGFbaS05Ml0uY2xvc2UgKyBkYXRhW2ktOTFdLmNsb3NlICsgZGF0YVtpLTkwXS5jbG9zZSArIGRhdGFbaS04OV0uY2xvc2UgKyBkYXRhW2ktODhdLmNsb3NlICsgZGF0YVtpLTg3XS5jbG9zZSArIGRhdGFbaS04Nl0uY2xvc2UgKyBkYXRhW2ktODVdLmNsb3NlICsgZGF0YVtpLTg0XS5jbG9zZSArIGRhdGFbaS04M10uY2xvc2UgKyBkYXRhW2ktODJdLmNsb3NlICsgZGF0YVtpLTgxXS5jbG9zZSArIGRhdGFbaS04MF0uY2xvc2UgKyBkYXRhW2ktNzldLmNsb3NlICsgZGF0YVtpLTc4XS5jbG9zZSArIGRhdGFbaS03N10uY2xvc2UgKyBkYXRhW2ktNzZdLmNsb3NlICsgZGF0YVtpLTc1XS5jbG9zZSArIGRhdGFbaS03NF0uY2xvc2UgKyBkYXRhW2ktNzNdLmNsb3NlICsgZGF0YVtpLTcyXS5jbG9zZSArIGRhdGFbaS03MV0uY2xvc2UgKyBkYXRhW2ktNzBdLmNsb3NlICsgZGF0YVtpLTY5XS5jbG9zZSArIGRhdGFbaS02OF0uY2xvc2UgKyBkYXRhW2ktNjddLmNsb3NlICsgZGF0YVtpLTY2XS5jbG9zZSArIGRhdGFbaS02NV0uY2xvc2UgKyBkYXRhW2ktNjRdLmNsb3NlICsgZGF0YVtpLTYzXS5jbG9zZSArIGRhdGFbaS02Ml0uY2xvc2UgKyBkYXRhW2ktNjFdLmNsb3NlICsgZGF0YVtpLTYwXS5jbG9zZSArIGRhdGFbaS01OV0uY2xvc2UgKyBkYXRhW2ktNThdLmNsb3NlICsgZGF0YVtpLTU3XS5jbG9zZSArIGRhdGFbaS01Nl0uY2xvc2UgKyBkYXRhW2ktNTVdLmNsb3NlICsgZGF0YVtpLTU0XS5jbG9zZSArIGRhdGFbaS01M10uY2xvc2UgKyBkYXRhW2ktNTJdLmNsb3NlICsgZGF0YVtpLTUxXS5jbG9zZSArIGRhdGFbaS01MF0uY2xvc2UgKyBkYXRhW2ktNDldLmNsb3NlICsgZGF0YVtpLTQ4XS5jbG9zZSArIGRhdGFbaS00N10uY2xvc2UgKyBkYXRhW2ktNDZdLmNsb3NlICsgZGF0YVtpLTQ1XS5jbG9zZSArIGRhdGFbaS00NF0uY2xvc2UgKyBkYXRhW2ktNDNdLmNsb3NlICsgZGF0YVtpLTQyXS5jbG9zZSArIGRhdGFbaS00MV0uY2xvc2UgKyBkYXRhW2ktNDBdLmNsb3NlICsgZGF0YVtpLTM5XS5jbG9zZSArIGRhdGFbaS0zOF0uY2xvc2UgKyBkYXRhW2ktMzddLmNsb3NlICsgZGF0YVtpLTM2XS5jbG9zZSArIGRhdGFbaS0zNV0uY2xvc2UgKyBkYXRhW2ktMzRdLmNsb3NlICsgZGF0YVtpLTMzXS5jbG9zZSArIGRhdGFbaS0zMl0uY2xvc2UgKyBkYXRhW2ktMzFdLmNsb3NlICsgZGF0YVtpLTMwXS5jbG9zZSArIGRhdGFbaS0yOV0uY2xvc2UgKyBkYXRhW2ktMjhdLmNsb3NlICsgZGF0YVtpLTI3XS5jbG9zZSArIGRhdGFbaS0yNl0uY2xvc2UgKyBkYXRhW2ktMjVdLmNsb3NlICsgZGF0YVtpLTI0XS5jbG9zZSArIGRhdGFbaS0yM10uY2xvc2UgKyBkYXRhW2ktMjJdLmNsb3NlICsgZGF0YVtpLTIxXS5jbG9zZSArIGRhdGFbaS0yMF0uY2xvc2UgKyBkYXRhW2ktMTldLmNsb3NlICsgZGF0YVtpLTE4XS5jbG9zZSArIGRhdGFbaS0xN10uY2xvc2UgKyBkYXRhW2ktMTZdLmNsb3NlICsgZGF0YVtpLTE1XS5jbG9zZSArIGRhdGFbaS0xNF0uY2xvc2UgKyBkYXRhW2ktMTNdLmNsb3NlICsgZGF0YVtpLTEyXS5jbG9zZSArIGRhdGFbaS0xMV0uY2xvc2UgKyBkYXRhW2ktMTBdLmNsb3NlICsgZGF0YVtpLTldLmNsb3NlICsgZGF0YVtpLThdLmNsb3NlICsgZGF0YVtpLTddLmNsb3NlICsgZGF0YVtpLTZdLmNsb3NlICsgZGF0YVtpLTVdLmNsb3NlICsgZGF0YVtpLTRdLmNsb3NlICsgZGF0YVtpLTNdLmNsb3NlICsgZGF0YVtpLTJdLmNsb3NlICsgZGF0YVtpLTFdLmNsb3NlICsgZGF0YVtpXS5jbG9zZSkgLyAyMzM7CiAgICAgICAgZGF0YVtpXS5tYV92b2w1ID0gKGkgJmx0OyA0KSA/IDAgOiAoZGF0YVtpLTRdLnZvbCArIGRhdGFbaS0zXS52b2wgKyBkYXRhW2ktMl0udm9sICsgZGF0YVtpLTFdLnZvbCArIGRhdGFbaV0udm9sKSAvIDU7CiAgICB9Cn0KCi8vIOiuoeeul01BQ0QKdm9pZCBjYWxjX21hY2QoU3RvY2tEYXRhICpkYXRhLCBpbnQgbGVuKSB7CiAgICBpZiAobGVuICZsdDsgMzUpIHJldHVybjsKICAgIGRvdWJsZSBlbWExMiA9IDAsIGVtYTI2ID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpICZsdDsgMTI7IGkrKykgZW1hMTIgKz0gZGF0YVtpXS5jbG9zZTsKICAgIGVtYTEyIC89IDEyOwogICAgZm9yIChpbnQgaSA9IDA7IGkgJmx0OyAyNjsgaSsrKSBlbWEyNiArPSBkYXRhW2ldLmNsb3NlOwogICAgZW1hMjYgLz0gMjY7CiAgICBmb3IgKGludCBpID0gMTI7IGkgJmx0OyAyNjsgaSsrKSBlbWExMiA9IChkYXRhW2ldLmNsb3NlICogMiArIGVtYTEyICogMTApIC8gMTI7CiAgICBmb3IgKGludCBpID0gMjY7IGkgJmx0OyBsZW47IGkrKykgewogICAgICAgIGVtYTEyID0gKGRhdGFbaV0uY2xvc2UgKiAyICsgZW1hMTIgKiAxMCkgLyAxMjsKICAgICAgICBlbWEyNiA9IChkYXRhW2ldLmNsb3NlICogMiArIGVtYTI2ICogMjQpIC8gMjY7CiAgICAgICAgZGF0YVtpXS5kaWYgPSBlbWExMiAtIGVtYTI2OwogICAgfQogICAgZG91YmxlIGRlYSA9IDA7CiAgICBmb3IgKGludCBpID0gMjY7IGkgJmx0OyAzNTsgaSsrKSBkZWEgKz0gZGF0YVtpXS5kaWY7CiAgICBkZWEgLz0gOTsKICAgIGRhdGFbMzRdLmRlYSA9IGRlYTsKICAgIGZvciAoaW50IGkgPSAzNTsgaSAmbHQ7IGxlbjsgaSsrKSB7CiAgICAgICAgZGVhID0gKGRhdGFbaV0uZGlmICogMiArIGRlYSAqIDcpIC8gOTsKICAgICAgICBkYXRhW2ldLmRlYSA9IGRlYTsKICAgIH0KfQoKLy8g6K6h566XUlNJCnZvaWQgY2FsY19yc2koU3RvY2tEYXRhICpkYXRhLCBpbnQgbGVuKSB7CiAgICBpZiAobGVuICZsdDsgMTQpIHJldHVybjsKICAgIGRvdWJsZSB1cFtsZW5dID0gezB9LCBkb3duW2xlbl0gPSB7MH07CiAgICBmb3IgKGludCBpID0gMTsgaSAmbHQ7IGxlbjsgaSsrKSB7CiAgICAgICAgZG91YmxlIGRpZmYgPSBkYXRhW2ldLmNsb3NlIC0gZGF0YVtpLTFdLmNsb3NlOwogICAgICAgIHVwW2ldID0gKGRpZmYgJmd0OyAwKSA/IGRpZmYgOiAwOwogICAgICAgIGRvd25baV0gPSAoZGlmZiAmbHQ7IDApID8gLWRpZmYgOiAwOwogICAgfQogICAgZG91YmxlIGF2Z191cCA9IDAsIGF2Z19kb3duID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpICZsdDsgMTQ7IGkrKykgewogICAgICAgIGF2Z191cCArPSB1cFtpXTsKICAgICAgICBhdmdfZG93biArPSBkb3duW2ldOwogICAgfQogICAgYXZnX3VwIC89IDE0OwogICAgYXZnX2Rvd24gLz0gMTQ7CiAgICBkYXRhWzEzXS5yc2kxID0gKGF2Z19kb3duID09IDApID8gMTAwIDogKDEwMCAtIDEwMCAvICgxICsgYXZnX3VwIC8gYXZnX2Rvd24pKTsKICAgIGZvciAoaW50IGkgPSAxNDsgaSAmbHQ7IGxlbjsgaSsrKSB7CiAgICAgICAgYXZnX3VwID0gKGF2Z191cCAqIDEzICsgdXBbaV0pIC8gMTQ7CiAgICAgICAgYXZnX2Rvd24gPSAoYXZnX2Rvd24gKiAxMyArIGRvd25baV0pIC8gMTQ7CiAgICAgICAgZGF0YVtpXS5yc2kxID0gKGF2Z19kb3duID09IDApID8gMTAwIDogKDEwMCAtIDEwMCAvICgxICsgYXZnX3VwIC8gYXZnX2Rvd24pKTsKICAgIH0KfQoKLy8g6YCJ6IKh6YC76L6RCnZvaWQgc2VsZWN0X3N0b2NrKFN0b2NrRGF0YSAqZGF0YSwgaW50IGxlbiwgY29uc3QgY2hhciAqc3RvY2tfbmFtZSkgewogICAgcHJpbnRmKCZxdW90O1xuPT09ICVzIOmAieiCoee7k+aenCA9PT1cbiZxdW90Oywgc3RvY2tfbmFtZSk7CiAgICBpbnQgY291bnQgPSAwOwogICAgZm9yIChpbnQgaSA9IDIzMzsgaSAmbHQ7IGxlbjsgaSsrKSB7CiAgICAgICAgaW50IHNob3J0X2J1bGwgPSAoZGF0YVtpXS5tYTcgJmd0OyBkYXRhW2ldLm1hMTMpICZhbXA7JmFtcDsgKGRhdGFbaV0ubWExMyAmZ3Q7IGRhdGFbaV0ubWEyMSkgJmFtcDsmYW1wOyAoZGF0YVtpXS5tYTcgJmd0OyBkYXRhW2ktMV0ubWE3KSAmYW1wOyZhbXA7IChkYXRhW2ldLm1hMTMgJmd0OyBkYXRhW2ktMV0ubWExMyk7CiAgICAgICAgaW50IG1pZF9idWxsID0gKGRhdGFbaV0ubWEzNCAmZ3Q7IGRhdGFbaV0ubWE1MCkgJmFtcDsmYW1wOyAoZGF0YVtpXS5tYTUwICZndDsgZGF0YVtpXS5tYTg5KTsKICAgICAgICBpbnQgbG9uZ190cmVuZCA9IChkYXRhW2ldLm1hMTMzICZndDsgZGF0YVtpXS5tYTIzMykgfHwgKGZhYnMoZGF0YVtpXS5tYTEzMyAtIGRhdGFbaV0ubWEyMzMpICZsdDsgMWUtNik7CiAgICAgICAgaW50IHN0YW5kX21hMjEgPSAoZGF0YVtpXS5jbG9zZSAmZ3Q7IGRhdGFbaV0ubWEyMSkgJmFtcDsmYW1wOyAoZGF0YVtpLTFdLmNsb3NlICZndDsgZGF0YVtpLTFdLm1hMjEpICZhbXA7JmFtcDsgKGRhdGFbaV0uY2xvc2UgJmd0OyBkYXRhW2ktMV0uY2xvc2UpOwogICAgICAgIGludCB2b2xfb2sgPSAoZGF0YVtpXS52b2wgJmd0Oz0gZGF0YVtpXS5tYV92b2w1ICogMS4yKTsKICAgICAgICBpbnQgbWFjZF9vayA9IChkYXRhW2ldLmRpZiAmZ3Q7IGRhdGFbaV0uZGVhKSAmYW1wOyZhbXA7IChkYXRhW2ldLmRpZiAmZ3Q7IDApOwogICAgICAgIGludCByc2lfb2sgPSAoZGF0YVtpXS5yc2kxICZsdDsgNzApOwogICAgICAgIGludCByaXNrX2ZyZWUgPSAoZGF0YVtpXS5jbG9zZSAmZ3Q7PSAyKSAmYW1wOyZhbXA7IChkYXRhW2ldLm1hX3ZvbDUgJmd0Oz0gNTAwMDApOwogICAgICAgIAogICAgICAgIGlmIChzaG9ydF9idWxsICZhbXA7JmFtcDsgbWlkX2J1bGwgJmFtcDsmYW1wOyBsb25nX3RyZW5kICZhbXA7JmFtcDsgc3RhbmRfbWEyMSAmYW1wOyZhbXA7IHZvbF9vayAmYW1wOyZhbXA7IG1hY2Rfb2sgJmFtcDsmYW1wOyByc2lfb2sgJmFtcDsmYW1wOyByaXNrX2ZyZWUpIHsKICAgICAgICAgICAgcHJpbnRmKCZxdW90O+mAieS4reaXpeacn++8miVzIHwg5pS255uY5Lu377yaJS4yZiB8IDcvMTMvMjHml6Xnur/vvJolLjJmLyUuMmYvJS4yZiB8IFJTSTHvvJolLjFmXG4mcXVvdDssCiAgICAgICAgICAgICAgICAgICBkYXRhW2ldLmRhdGUsIGRhdGFbaV0uY2xvc2UsIGRhdGFbaV0ubWE3LCBkYXRhW2ldLm1hMTMsIGRhdGFbaV0ubWEyMSwgZGF0YVtpXS5yc2kxKTsKICAgICAgICAgICAgY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICBwcmludGYoJnF1b3Q75YWx6YCJ5LitICVkIOS4quS6pOaYk+aXpVxuJnF1b3Q7LCBjb3VudCk7Cn0KCi8vIOivu+WPlkNTVuaVsOaNru+8iOWcqOe6v+e8luivkeWZqOWGhee9rua1i+ivleaVsOaNru+8jOaXoOmcgOaWh+S7tuaTjeS9nO+8iQppbnQgZ2V0X3Rlc3RfZGF0YShTdG9ja0RhdGEgKmRhdGEpIHsKICAgIC8vIOaooeaLnzIzM+adoea1i+ivleaVsOaNru+8iOaXpeacn+OAgeaUtuebmOS7t+OAgeaIkOS6pOmHj++8iQogICAgU3RvY2tEYXRhIHRlc3RfZGF0YVtdID0gewogICAgICAgIHsmcXVvdDsyMDIzLTAxLTAxJnF1b3Q7LDEwLjAwLDYwMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0wMiZxdW90OywxMC4wNSw2MjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMDMmcXVvdDssMTAuMTAsNTgwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTA0JnF1b3Q7LDEwLjE1LDY1MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0wNSZxdW90OywxMC4yMCw2MTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMDYmcXVvdDssMTAuMjUsNTkwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTA3JnF1b3Q7LDEwLjMwLDYzMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0wOCZxdW90OywxMC4zNSw2NjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMDkmcXVvdDssMTAuNDAsNjAwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTEwJnF1b3Q7LDEwLjQ1LDU3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0xMSZxdW90OywxMC41MCw2NDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMTImcXVvdDssMTAuNTUsNjIwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTEzJnF1b3Q7LDEwLjYwLDU5MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0xNCZxdW90OywxMC42NSw2NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMTUmcXVvdDssMTAuNzAsNjEwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTE2JnF1b3Q7LDEwLjc1LDY1MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0xNyZxdW90OywxMC44MCw1ODAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMTgmcXVvdDssMTAuODUsNjMwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTE5JnF1b3Q7LDEwLjkwLDY2MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0yMCZxdW90OywxMC45NSw2MDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMjEmcXVvdDssMTEuMDAsNTcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTIyJnF1b3Q7LDExLjA1LDY0MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0yMyZxdW90OywxMS4xMCw2MjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMjQmcXVvdDssMTEuMTUsNTkwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTI1JnF1b3Q7LDExLjIwLDY3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0yNiZxdW90OywxMS4yNSw2MTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMjcmcXVvdDssMTEuMzAsNjUwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTI4JnF1b3Q7LDExLjM1LDU4MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMS0yOSZxdW90OywxMS40MCw2MzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDEtMzAmcXVvdDssMTEuNDUsNjYwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAxLTMxJnF1b3Q7LDExLjUwLDYwMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0wMSZxdW90OywxMS41NSw1NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMDImcXVvdDssMTEuNjAsNjQwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTAzJnF1b3Q7LDExLjY1LDYyMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0wNCZxdW90OywxMS43MCw1OTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMDUmcXVvdDssMTEuNzUsNjcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTA2JnF1b3Q7LDExLjgwLDYxMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0wNyZxdW90OywxMS44NSw2NTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMDgmcXVvdDssMTEuOTAsNTgwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTA5JnF1b3Q7LDExLjk1LDYzMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0xMCZxdW90OywxMi4wMCw2NjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMTEmcXVvdDssMTIuMDUsNjAwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTEyJnF1b3Q7LDEyLjEwLDU3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0xMyZxdW90OywxMi4xNSw2NDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMTQmcXVvdDssMTIuMjAsNjIwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTE1JnF1b3Q7LDEyLjI1LDU5MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0xNiZxdW90OywxMi4zMCw2NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMTcmcXVvdDssMTIuMzUsNjEwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTE4JnF1b3Q7LDEyLjQwLDY1MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0xOSZxdW90OywxMi40NSw1ODAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMjAmcXVvdDssMTIuNTAsNjMwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTIxJnF1b3Q7LDEyLjU1LDY2MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0yMiZxdW90OywxMi42MCw2MDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMjMmcXVvdDssMTIuNjUsNTcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTI0JnF1b3Q7LDEyLjcwLDY0MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0yNSZxdW90OywxMi43NSw2MjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDItMjYmcXVvdDssMTIuODAsNTkwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAyLTI3JnF1b3Q7LDEyLjg1LDY3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMi0yOCZxdW90OywxMi45MCw2MTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMDEmcXVvdDssMTIuOTUsNjUwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTAyJnF1b3Q7LDEzLjAwLDU4MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0wMyZxdW90OywxMy4wNSw2MzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMDQmcXVvdDssMTMuMTAsNjYwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTA1JnF1b3Q7LDEzLjE1LDYwMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0wNiZxdW90OywxMy4yMCw1NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMDcmcXVvdDssMTMuMjUsNjQwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTA4JnF1b3Q7LDEzLjMwLDYyMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0wOSZxdW90OywxMy4zNSw1OTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMTAmcXVvdDssMTMuNDAsNjcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTExJnF1b3Q7LDEzLjQ1LDYxMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0xMiZxdW90OywxMy41MCw2NTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMTMmcXVvdDssMTMuNTUsNTgwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTE0JnF1b3Q7LDEzLjYwLDYzMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0xNSZxdW90OywxMy42NSw2NjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMTYmcXVvdDssMTMuNzAsNjAwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTE3JnF1b3Q7LDEzLjc1LDU3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0xOCZxdW90OywxMy44MCw2NDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMTkmcXVvdDssMTMuODUsNjIwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTIwJnF1b3Q7LDEzLjkwLDU5MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0yMSZxdW90OywxMy45NSw2NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMjImcXVvdDssMTQuMDAsNjEwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTIzJnF1b3Q7LDE0LjA1LDY1MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0yNCZxdW90OywxNC4xMCw1ODAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMjUmcXVvdDssMTQuMTUsNjMwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTI2JnF1b3Q7LDE0LjIwLDY2MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0yNyZxdW90OywxNC4yNSw2MTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMjgmcXVvdDssMTQuMzAsNjUwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTAzLTI5JnF1b3Q7LDE0LjM1LDU4MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wMy0zMCZxdW90OywxNC40MCw2MzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDMtMzEmcXVvdDssMTQuNDUsNjYwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTAxJnF1b3Q7LDE0LjUwLDYwMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0wMiZxdW90OywxNC41NSw1NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMDMmcXVvdDssMTQuNjAsNjQwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTA0JnF1b3Q7LDE0LjY1LDYyMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0wNSZxdW90OywxNC43MCw1OTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMDYmcXVvdDssMTQuNzUsNjcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTA3JnF1b3Q7LDE0LjgwLDYxMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0wOCZxdW90OywxNC44NSw2NTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMDkmcXVvdDssMTQuOTAsNTgwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTEwJnF1b3Q7LDE0Ljk1LDYzMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0xMSZxdW90OywxNS4wMCw2NjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMTImcXVvdDssMTUuMDUsNjAwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTEzJnF1b3Q7LDE1LjEwLDU3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0xNCZxdW90OywxNS4xNSw2NDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMTUmcXVvdDssMTUuMjAsNjIwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTE2JnF1b3Q7LDE1LjI1LDU5MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0xNyZxdW90OywxNS4zMCw2NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMTgmcXVvdDssMTUuMzUsNjEwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTE5JnF1b3Q7LDE1LjQwLDY1MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0yMCZxdW90OywxNS40NSw1ODAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMjEmcXVvdDssMTUuNTAsNjMwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTIyJnF1b3Q7LDE1LjU1LDY2MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0yMyZxdW90OywxNS42MCw2MDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMjQmcXVvdDssMTUuNjUsNTcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTI1JnF1b3Q7LDE1LjcwLDY0MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0yNiZxdW90OywxNS43NSw2MjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMjcmcXVvdDssMTUuODAsNTkwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA0LTI4JnF1b3Q7LDE1Ljg1LDY3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNC0yOSZxdW90OywxNS45MCw2MTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDQtMzAmcXVvdDssMTUuOTUsNjUwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTAxJnF1b3Q7LDE2LjAwLDU4MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0wMiZxdW90OywxNi4wNSw2MzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMDMmcXVvdDssMTYuMTAsNjYwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTA0JnF1b3Q7LDE2LjE1LDYwMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0wNSZxdW90OywxNi4yMCw1NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMDYmcXVvdDssMTYuMjUsNjQwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTA3JnF1b3Q7LDE2LjMwLDYyMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0wOCZxdW90OywxNi4zNSw1OTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMDkmcXVvdDssMTYuNDAsNjcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTEwJnF1b3Q7LDE2LjQ1LDYxMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0xMSZxdW90OywxNi41MCw2NTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMTImcXVvdDssMTYuNTUsNTgwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTEzJnF1b3Q7LDE2LjYwLDYzMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0xNCZxdW90OywxNi42NSw2NjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMTUmcXVvdDssMTYuNzAsNjAwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTE2JnF1b3Q7LDE2Ljc1LDU3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0xNyZxdW90OywxNi44MCw2NDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMTgmcXVvdDssMTYuODUsNjIwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTE5JnF1b3Q7LDE2LjkwLDU5MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0yMCZxdW90OywxNi45NSw2NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMjEmcXVvdDssMTcuMDAsNjEwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTIyJnF1b3Q7LDE3LjA1LDY1MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0yMyZxdW90OywxNy4xMCw1ODAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMjQmcXVvdDssMTcuMTUsNjMwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTI1JnF1b3Q7LDE3LjIwLDY2MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0yNiZxdW90OywxNy4yNSw2MTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMjcmcXVvdDssMTcuMzAsNjEwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTI4JnF1b3Q7LDE3LjM1LDY1MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNS0yOSZxdW90OywxNy40MCw1ODAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDUtMzAmcXVvdDssMTcuNDUsNjMwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA1LTMxJnF1b3Q7LDE3LjUwLDY2MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0wMSZxdW90OywxNy41NSw2MDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMDImcXVvdDssMTcuNjAsNTcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTAzJnF1b3Q7LDE3LjY1LDY0MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0wNCZxdW90OywxNy43MCw2MjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMDUmcXVvdDssMTcuNzUsNTkwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTA2JnF1b3Q7LDE3LjgwLDY3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0wNyZxdW90OywxNy44NSw2MTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMDgmcXVvdDssMTcuOTAsNjUwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTA5JnF1b3Q7LDE3Ljk1LDU4MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0xMCZxdW90OywxOC4wMCw2MzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMTEmcXVvdDssMTguMDUsNjYwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTEyJnF1b3Q7LDE4LjEwLDYwMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0xMyZxdW90OywxOC4xNSw1NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMTQmcXVvdDssMTguMjAsNjQwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTE1JnF1b3Q7LDE4LjI1LDYyMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0xNiZxdW90OywxOC4zMCw1OTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMTcmcXVvdDssMTguMzUsNjcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTE4JnF1b3Q7LDE4LjQwLDYxMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0xOSZxdW90OywxOC40NSw2NTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMjAmcXVvdDssMTguNTAsNTgwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTIxJnF1b3Q7LDE4LjU1LDYzMDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0yMiZxdW90OywxOC42MCw2NjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMjMmcXVvdDssMTguNjUsNjAwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTI0JnF1b3Q7LDE4LjcwLDU3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0yNSZxdW90OywxOC43NSw2NDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMjYmcXVvdDssMTguODAsNjIwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTI3JnF1b3Q7LDE4Ljg1LDU5MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNi0yOCZxdW90OywxOC45MCw2NzAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDYtMjkmcXVvdDssMTguOTUsNjEwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA2LTMwJnF1b3Q7LDE5LjAwLDY1MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNy0wMSZxdW90OywxOS4wNSw1ODAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDctMDImcXVvdDssMTkuMTAsNjMwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA3LTAzJnF1b3Q7LDE5LjE1LDY2MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNy0wNCZxdW90OywxOS4yMCw2MDAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDctMDUmcXVvdDssMTkuMjUsNTcwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA3LTA2JnF1b3Q7LDE5LjMwLDY0MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNy0wNyZxdW90OywxOS4zNSw2MjAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDctMDgmcXVvdDssMTkuNDAsNTkwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA3LTA5JnF1b3Q7LDE5LjQ1LDY3MDAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwfSwKICAgICAgICB7JnF1b3Q7MjAyMy0wNy0xMCZxdW90OywxOS41MCw2MTAwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMH0sCiAgICAgICAgeyZxdW90OzIwMjMtMDctMTEmcXVvdDssMTkuNTUsNjUwMDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9LAogICAgICAgIHsmcXVvdDsyMDIzLTA3Cg==
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
// 股票数据结构体(成员命名完全规范)
typedef struct {
    char date[12];       // 日期(YYYY-MM-DD)
    double close;        // 收盘价
    double vol;          // 成交量(手)
    double ma7;          // 7日均线
    double ma13;         // 13日均线
    double ma21;         // 21日均线
    double ma34;         // 34日均线
    double ma50;         // 50日均线
    double ma89;         // 89日均线
    double ma133;        // 133日均线
    double ma233;        // 233日均线
    double ma_vol5;      // 5日量均线
    double dif;          // MACD-DIF
    double dea;          // MACD-DEA
    double rsi1;         // 14日RSI
} StockData;
// 计算均线
void calc_ma(StockData *data, int len) {
    double sum_close, sum_vol;
    for (int i = 0; i < len; i++) {
        data[i].ma7 = (i < 6) ? 0 : (data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 7;
        data[i].ma13 = (i < 12) ? 0 : (data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 13;
        data[i].ma21 = (i < 20) ? 0 : (data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 21;
        data[i].ma34 = (i < 33) ? 0 : (data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 34;
        data[i].ma50 = (i < 49) ? 0 : (data[i-49].close + data[i-48].close + data[i-47].close + data[i-46].close + data[i-45].close + data[i-44].close + data[i-43].close + data[i-42].close + data[i-41].close + data[i-40].close + data[i-39].close + data[i-38].close + data[i-37].close + data[i-36].close + data[i-35].close + data[i-34].close + data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 50;
        data[i].ma89 = (i < 88) ? 0 : (data[i-88].close + data[i-87].close + data[i-86].close + data[i-85].close + data[i-84].close + data[i-83].close + data[i-82].close + data[i-81].close + data[i-80].close + data[i-79].close + data[i-78].close + data[i-77].close + data[i-76].close + data[i-75].close + data[i-74].close + data[i-73].close + data[i-72].close + data[i-71].close + data[i-70].close + data[i-69].close + data[i-68].close + data[i-67].close + data[i-66].close + data[i-65].close + data[i-64].close + data[i-63].close + data[i-62].close + data[i-61].close + data[i-60].close + data[i-59].close + data[i-58].close + data[i-57].close + data[i-56].close + data[i-55].close + data[i-54].close + data[i-53].close + data[i-52].close + data[i-51].close + data[i-50].close + data[i-49].close + data[i-48].close + data[i-47].close + data[i-46].close + data[i-45].close + data[i-44].close + data[i-43].close + data[i-42].close + data[i-41].close + data[i-40].close + data[i-39].close + data[i-38].close + data[i-37].close + data[i-36].close + data[i-35].close + data[i-34].close + data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 89;
        data[i].ma133 = (i < 132) ? 0 : (data[i-132].close + data[i-131].close + data[i-130].close + data[i-129].close + data[i-128].close + data[i-127].close + data[i-126].close + data[i-125].close + data[i-124].close + data[i-123].close + data[i-122].close + data[i-121].close + data[i-120].close + data[i-119].close + data[i-118].close + data[i-117].close + data[i-116].close + data[i-115].close + data[i-114].close + data[i-113].close + data[i-112].close + data[i-111].close + data[i-110].close + data[i-109].close + data[i-108].close + data[i-107].close + data[i-106].close + data[i-105].close + data[i-104].close + data[i-103].close + data[i-102].close + data[i-101].close + data[i-100].close + data[i-99].close + data[i-98].close + data[i-97].close + data[i-96].close + data[i-95].close + data[i-94].close + data[i-93].close + data[i-92].close + data[i-91].close + data[i-90].close + data[i-89].close + data[i-88].close + data[i-87].close + data[i-86].close + data[i-85].close + data[i-84].close + data[i-83].close + data[i-82].close + data[i-81].close + data[i-80].close + data[i-79].close + data[i-78].close + data[i-77].close + data[i-76].close + data[i-75].close + data[i-74].close + data[i-73].close + data[i-72].close + data[i-71].close + data[i-70].close + data[i-69].close + data[i-68].close + data[i-67].close + data[i-66].close + data[i-65].close + data[i-64].close + data[i-63].close + data[i-62].close + data[i-61].close + data[i-60].close + data[i-59].close + data[i-58].close + data[i-57].close + data[i-56].close + data[i-55].close + data[i-54].close + data[i-53].close + data[i-52].close + data[i-51].close + data[i-50].close + data[i-49].close + data[i-48].close + data[i-47].close + data[i-46].close + data[i-45].close + data[i-44].close + data[i-43].close + data[i-42].close + data[i-41].close + data[i-40].close + data[i-39].close + data[i-38].close + data[i-37].close + data[i-36].close + data[i-35].close + data[i-34].close + data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 133;
        data[i].ma233 = (i < 232) ? 0 : (data[i-232].close + data[i-231].close + data[i-230].close + data[i-229].close + data[i-228].close + data[i-227].close + data[i-226].close + data[i-225].close + data[i-224].close + data[i-223].close + data[i-222].close + data[i-221].close + data[i-220].close + data[i-219].close + data[i-218].close + data[i-217].close + data[i-216].close + data[i-215].close + data[i-214].close + data[i-213].close + data[i-212].close + data[i-211].close + data[i-210].close + data[i-209].close + data[i-208].close + data[i-207].close + data[i-206].close + data[i-205].close + data[i-204].close + data[i-203].close + data[i-202].close + data[i-201].close + data[i-200].close + data[i-199].close + data[i-198].close + data[i-197].close + data[i-196].close + data[i-195].close + data[i-194].close + data[i-193].close + data[i-192].close + data[i-191].close + data[i-190].close + data[i-189].close + data[i-188].close + data[i-187].close + data[i-186].close + data[i-185].close + data[i-184].close + data[i-183].close + data[i-182].close + data[i-181].close + data[i-180].close + data[i-179].close + data[i-178].close + data[i-177].close + data[i-176].close + data[i-175].close + data[i-174].close + data[i-173].close + data[i-172].close + data[i-171].close + data[i-170].close + data[i-169].close + data[i-168].close + data[i-167].close + data[i-166].close + data[i-165].close + data[i-164].close + data[i-163].close + data[i-162].close + data[i-161].close + data[i-160].close + data[i-159].close + data[i-158].close + data[i-157].close + data[i-156].close + data[i-155].close + data[i-154].close + data[i-153].close + data[i-152].close + data[i-151].close + data[i-150].close + data[i-149].close + data[i-148].close + data[i-147].close + data[i-146].close + data[i-145].close + data[i-144].close + data[i-143].close + data[i-142].close + data[i-141].close + data[i-140].close + data[i-139].close + data[i-138].close + data[i-137].close + data[i-136].close + data[i-135].close + data[i-134].close + data[i-133].close + data[i-132].close + data[i-131].close + data[i-130].close + data[i-129].close + data[i-128].close + data[i-127].close + data[i-126].close + data[i-125].close + data[i-124].close + data[i-123].close + data[i-122].close + data[i-121].close + data[i-120].close + data[i-119].close + data[i-118].close + data[i-117].close + data[i-116].close + data[i-115].close + data[i-114].close + data[i-113].close + data[i-112].close + data[i-111].close + data[i-110].close + data[i-109].close + data[i-108].close + data[i-107].close + data[i-106].close + data[i-105].close + data[i-104].close + data[i-103].close + data[i-102].close + data[i-101].close + data[i-100].close + data[i-99].close + data[i-98].close + data[i-97].close + data[i-96].close + data[i-95].close + data[i-94].close + data[i-93].close + data[i-92].close + data[i-91].close + data[i-90].close + data[i-89].close + data[i-88].close + data[i-87].close + data[i-86].close + data[i-85].close + data[i-84].close + data[i-83].close + data[i-82].close + data[i-81].close + data[i-80].close + data[i-79].close + data[i-78].close + data[i-77].close + data[i-76].close + data[i-75].close + data[i-74].close + data[i-73].close + data[i-72].close + data[i-71].close + data[i-70].close + data[i-69].close + data[i-68].close + data[i-67].close + data[i-66].close + data[i-65].close + data[i-64].close + data[i-63].close + data[i-62].close + data[i-61].close + data[i-60].close + data[i-59].close + data[i-58].close + data[i-57].close + data[i-56].close + data[i-55].close + data[i-54].close + data[i-53].close + data[i-52].close + data[i-51].close + data[i-50].close + data[i-49].close + data[i-48].close + data[i-47].close + data[i-46].close + data[i-45].close + data[i-44].close + data[i-43].close + data[i-42].close + data[i-41].close + data[i-40].close + data[i-39].close + data[i-38].close + data[i-37].close + data[i-36].close + data[i-35].close + data[i-34].close + data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 233;
        data[i].ma_vol5 = (i < 4) ? 0 : (data[i-4].vol + data[i-3].vol + data[i-2].vol + data[i-1].vol + data[i].vol) / 5;
    }
}
// 计算MACD
void calc_macd(StockData *data, int len) {
    if (len < 35) return;
    double ema12 = 0, ema26 = 0;
    for (int i = 0; i < 12; i++) ema12 += data[i].close;
    ema12 /= 12;
    for (int i = 0; i < 26; i++) ema26 += data[i].close;
    ema26 /= 26;
    for (int i = 12; i < 26; i++) ema12 = (data[i].close * 2 + ema12 * 10) / 12;
    for (int i = 26; i < len; i++) {
        ema12 = (data[i].close * 2 + ema12 * 10) / 12;
        ema26 = (data[i].close * 2 + ema26 * 24) / 26;
        data[i].dif = ema12 - ema26;
    }
    double dea = 0;
    for (int i = 26; i < 35; i++) dea += data[i].dif;
    dea /= 9;
    data[34].dea = dea;
    for (int i = 35; i < len; i++) {
        dea = (data[i].dif * 2 + dea * 7) / 9;
        data[i].dea = dea;
    }
}
// 计算RSI
void calc_rsi(StockData *data, int len) {
    if (len < 14) return;
    double up[len] = {0}, down[len] = {0};
    for (int i = 1; i < len; i++) {
        double diff = data[i].close - data[i-1].close;
        up[i] = (diff > 0) ? diff : 0;
        down[i] = (diff < 0) ? -diff : 0;
    }
    double avg_up = 0, avg_down = 0;
    for (int i = 0; i < 14; i++) {
        avg_up += up[i];
        avg_down += down[i];
    }
    avg_up /= 14;
    avg_down /= 14;
    data[13].rsi1 = (avg_down == 0) ? 100 : (100 - 100 / (1 + avg_up / avg_down));
    for (int i = 14; i < len; i++) {
        avg_up = (avg_up * 13 + up[i]) / 14;
        avg_down = (avg_down * 13 + down[i]) / 14;
        data[i].rsi1 = (avg_down == 0) ? 100 : (100 - 100 / (1 + avg_up / avg_down));
    }
}
// 选股逻辑
void select_stock(StockData *data, int len, const char *stock_name) {
    printf("\n=== %s 选股结果 ===\n", stock_name);
    int count = 0;
    for (int i = 233; i < len; i++) {
        int short_bull = (data[i].ma7 > data[i].ma13) && (data[i].ma13 > data[i].ma21) && (data[i].ma7 > data[i-1].ma7) && (data[i].ma13 > data[i-1].ma13);
        int mid_bull = (data[i].ma34 > data[i].ma50) && (data[i].ma50 > data[i].ma89);
        int long_trend = (data[i].ma133 > data[i].ma233) || (fabs(data[i].ma133 - data[i].ma233) < 1e-6);
        int stand_ma21 = (data[i].close > data[i].ma21) && (data[i-1].close > data[i-1].ma21) && (data[i].close > data[i-1].close);
        int vol_ok = (data[i].vol >= data[i].ma_vol5 * 1.2);
        int macd_ok = (data[i].dif > data[i].dea) && (data[i].dif > 0);
        int rsi_ok = (data[i].rsi1 < 70);
        int risk_free = (data[i].close >= 2) && (data[i].ma_vol5 >= 50000);
        
        if (short_bull && mid_bull && long_trend && stand_ma21 && vol_ok && macd_ok && rsi_ok && risk_free) {
            printf("选中日期:%s | 收盘价:%.2f | 7/13/21日线:%.2f/%.2f/%.2f | RSI1:%.1f\n",
                   data[i].date, data[i].close, data[i].ma7, data[i].ma13, data[i].ma21, data[i].rsi1);
            count++;
        }
    }
    printf("共选中 %d 个交易日\n", count);
}
// 读取CSV数据(在线编译器内置测试数据,无需文件操作)
int get_test_data(StockData *data) {
    // 模拟233条测试数据(日期、收盘价、成交量)
    StockData test_data[] = {
        {"2023-01-01",10.00,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-02",10.05,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-03",10.10,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-04",10.15,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-05",10.20,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-06",10.25,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-07",10.30,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-08",10.35,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-09",10.40,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-10",10.45,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-11",10.50,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-12",10.55,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-13",10.60,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-14",10.65,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-15",10.70,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-16",10.75,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-17",10.80,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-18",10.85,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-19",10.90,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-20",10.95,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-21",11.00,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-22",11.05,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-23",11.10,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-24",11.15,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-25",11.20,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-26",11.25,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-27",11.30,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-28",11.35,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-29",11.40,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-30",11.45,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-31",11.50,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-01",11.55,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-02",11.60,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-03",11.65,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-04",11.70,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-05",11.75,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-06",11.80,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-07",11.85,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-08",11.90,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-09",11.95,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-10",12.00,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-11",12.05,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-12",12.10,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-13",12.15,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-14",12.20,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-15",12.25,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-16",12.30,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-17",12.35,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-18",12.40,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-19",12.45,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-20",12.50,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-21",12.55,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-22",12.60,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-23",12.65,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-24",12.70,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-25",12.75,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-26",12.80,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-27",12.85,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-28",12.90,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-01",12.95,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-02",13.00,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-03",13.05,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-04",13.10,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-05",13.15,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-06",13.20,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-07",13.25,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-08",13.30,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-09",13.35,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-10",13.40,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-11",13.45,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-12",13.50,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-13",13.55,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-14",13.60,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-15",13.65,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-16",13.70,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-17",13.75,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-18",13.80,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-19",13.85,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-20",13.90,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-21",13.95,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-22",14.00,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-23",14.05,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-24",14.10,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-25",14.15,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-26",14.20,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-27",14.25,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-28",14.30,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-29",14.35,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-30",14.40,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-31",14.45,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-01",14.50,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-02",14.55,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-03",14.60,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-04",14.65,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-05",14.70,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-06",14.75,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-07",14.80,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-08",14.85,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-09",14.90,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-10",14.95,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-11",15.00,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-12",15.05,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-13",15.10,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-14",15.15,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-15",15.20,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-16",15.25,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-17",15.30,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-18",15.35,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-19",15.40,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-20",15.45,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-21",15.50,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-22",15.55,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-23",15.60,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-24",15.65,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-25",15.70,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-26",15.75,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-27",15.80,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-28",15.85,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-29",15.90,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-30",15.95,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-01",16.00,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-02",16.05,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-03",16.10,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-04",16.15,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-05",16.20,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-06",16.25,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-07",16.30,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-08",16.35,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-09",16.40,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-10",16.45,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-11",16.50,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-12",16.55,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-13",16.60,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-14",16.65,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-15",16.70,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-16",16.75,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-17",16.80,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-18",16.85,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-19",16.90,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-20",16.95,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-21",17.00,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-22",17.05,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-23",17.10,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-24",17.15,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-25",17.20,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-26",17.25,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-27",17.30,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-28",17.35,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-29",17.40,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-30",17.45,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-31",17.50,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-01",17.55,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-02",17.60,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-03",17.65,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-04",17.70,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-05",17.75,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-06",17.80,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-07",17.85,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-08",17.90,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-09",17.95,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-10",18.00,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-11",18.05,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-12",18.10,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-13",18.15,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-14",18.20,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-15",18.25,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-16",18.30,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-17",18.35,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-18",18.40,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-19",18.45,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-20",18.50,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-21",18.55,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-22",18.60,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-23",18.65,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-24",18.70,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-25",18.75,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-26",18.80,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-27",18.85,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-28",18.90,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-29",18.95,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-30",19.00,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-01",19.05,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-02",19.10,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-03",19.15,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-04",19.20,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-05",19.25,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-06",19.30,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-07",19.35,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-08",19.40,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-09",19.45,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-10",19.50,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-11",19.55,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07