시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 17 5 5 29.412%

문제

상근이는 팩스 이미지를 압축하는 계획을 만드려고 한다. 스캐너를 통해서 이미지를 입력받으면, 1과 256사이의 숫자로 이루어진 수열로 변환된다. 예를 들어, 아래와 같은 수열로 이미지를 변환할 수 있다.

1, 1, 1, 1, 1, 46, 1, 1, 1,1, 1, 1, 2, 1, 2, 1, 1, 25, 26, 25, 25, 255, 256, 256, 256, 255,...

이미지를 반드시 정확하게 변환할 필요는 없다. 따라서, 상근이는 수열의 각 숫자를 레벨 4개(1, 86, 172, 256)으로 나타내려고 한다. 그리고, 이 레벨은 다음과 같이 2-bit 코드로 나타낼 수 있다.

Level 1 86 172 256
Code 00 01 10 11

그림 안에는 같은 색으로 이루어진 영역(예를 들면 공백)이 있다. 이 영역을 변환하면 유사한 숫자들이 연속해서 나타난다. 이를 처리하기 위해서 다음과 같은 압축 방법을 사용하려고 한다.

  1. 수열의 첫 번째 숫자는 위의 표에 나온 2bit 코드로 변환한다.
  2. 그 다음에 나오는 다른 모든 숫자에 대해서는
    • 만약 수열의 바로 앞에 있는 숫자가 같은 숫자라면 0으로 변환한다.
    • 앞에 있는 숫자와 다른 숫자라면 1을 앞에 붙인 뒤 위 표의 2bit 코드로 변환한다.

상근이는 작은 양의 에러를 크게 신경쓰지 않기 때문에, 작은 양의 에러는 무시한다. 예를 들어, 입력된 수열이 2, 2, 2, 2, 2, 46, 2, 2 라고 했을 때, 이를 1, 1, 1, 1, 1, 86, 1, 1로 나타낸 다음 변환하면 0000001011000가 되고 전체 에러는 1+1+1+1+1+40+1+1=47 이 된다. 하지만 1, 1, 1, 1, 1, 1, 1, 1 로 나타낸 후 변환하면 전체 에러는 1+1+1+1+1+45+1+1=52가 되어 커지지만 코드가 000000000가 되어 더 짧아진다.

상근이는 변환 비용을 최소로 하는 방법을 찾으려고 한다. 변환 비용은 전체 에러 + W*(변환 코드의 길이)로 계산할 수 있다.

  1. W는 에러와 코드의 길이 중 어느 것을 중요시 하느냐에 따라 입력으로 주어진다.
  2. 이때 전체 에러는 입력 수열 x1, x2, , xN , 변환 수열 y1, y2, , yN에 대해서 다음과 같다. Σ|xi-yi|

수열이 2, 2, 2, 2, 2, 46, 2, 2 이고, W가 100인 경우에 y1,..., y8 = 1, 1, 1, 1, 1, 86, 1, 1 로 변환하면 코드는 0000001011000이 되고, 변환 비용은 47 + 100 * 13 = 1347이다. 하지만 y1,..., y8 = 1, 1, 1, 1, 1, 1, 1, 1로 변환하면 코드는 000000000이고 변환 비용은 52 + 100 * 9 = 952이다.

입력

첫째 줄에 수열의 길이 N(1 ≤ N ≤ 50), 가중치 W(1 ≤ W ≤ 100)가 주어진다. 다음 N개의 줄에는 수열을 이루는 숫자(≤256)들이 차례로 주어진다.

출력

첫줄에는 최소 변환 비용을 출력한다. 그리고 두 번째 줄에는 변환코드를 출력한다.

예제 입력 1

8 100
2
2
2
2
2
46
2
2

예제 출력 1

952
000000000
W3sicHJvYmxlbV9pZCI6IjIzNDEiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWQzMjlcdWMyYTQgXHViYjM4XHVjODFjIiwiZGVzY3JpcHRpb24iOiI8cD5cdWMwYzFcdWFkZmNcdWM3NzRcdWIyOTQgXHVkMzI5XHVjMmE0IFx1Yzc3NFx1YmJmOFx1YzljMFx1Yjk3YyBcdWM1NTVcdWNkOTVcdWQ1NThcdWIyOTQgXHVhY2M0XHVkNjhkXHVjNzQ0IFx1YjljY1x1YjRkY1x1YjgyNFx1YWNlMCBcdWQ1NWNcdWIyZTQuIFx1YzJhNFx1Y2U5MFx1YjEwOFx1Yjk3YyBcdWQxYjVcdWQ1NzRcdWMxMWMgXHVjNzc0XHViYmY4XHVjOWMwXHViOTdjIFx1Yzc4NVx1YjgyNVx1YmMxYlx1YzczY1x1YmE3NCwgMVx1YWNmYyAyNTZcdWMwYWNcdWM3NzRcdWM3NTggXHVjMjJiXHVjNzkwXHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzljNCBcdWMyMThcdWM1ZjRcdWI4NWMgXHViY2MwXHVkNjU4XHViNDFjXHViMmU0LiBcdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBcdWM1NDRcdWI3OThcdWM2NDAgXHVhYzE5XHVjNzQwIFx1YzIxOFx1YzVmNFx1Yjg1YyBcdWM3NzRcdWJiZjhcdWM5YzBcdWI5N2MgXHViY2MwXHVkNjU4XHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjEsIDEsIDEsIDEsIDEsIDQ2LCAxLCAxLCAxLDEsIDEsIDEsIDIsIDEsIDIsIDEsIDEsIDI1LCAyNiwgMjUsIDI1LCAyNTUsIDI1NiwgMjU2LCAyNTYsIDI1NSwuLi48XC9wPlxyXG5cclxuPHA+XHVjNzc0XHViYmY4XHVjOWMwXHViOTdjIFx1YmMxOFx1YjRkY1x1YzJkYyBcdWM4MTVcdWQ2NTVcdWQ1NThcdWFjOGMgXHViY2MwXHVkNjU4XHVkNTYwIFx1ZDU0NFx1YzY5NFx1YjI5NCBcdWM1YzZcdWIyZTQuIFx1YjUzMFx1Yjc3Y1x1YzExYywgXHVjMGMxXHVhZGZjXHVjNzc0XHViMjk0IFx1YzIxOFx1YzVmNFx1Yzc1OCBcdWFjMDEgXHVjMjJiXHVjNzkwXHViOTdjIFx1YjgwOFx1YmNhOCA0XHVhYzFjKDEsIDg2LCAxNzIsIDI1NilcdWM3M2NcdWI4NWMgXHViMDk4XHVkMGMwXHViMGI0XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVhZGY4XHViOWFjXHVhY2UwLCBcdWM3NzQgXHViODA4XHViY2E4XHVjNzQwIFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NzQgMi1iaXQgXHVjZjU0XHViNGRjXHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiYyBcdWMyMTggXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6NDAlXCI+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDo4JVwiPkxldmVsPFwvdGg+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjg2PFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTcyPFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MjU2PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6OCVcIj5Db2RlPFwvdGg+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MDA8XC90ZD5cclxuXHRcdFx0PHRkIHN0eWxlPVwid2lkdGg6OCVcIj4wMTxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjEwPFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlx1YWRmOFx1YjliYyBcdWM1NDhcdWM1ZDBcdWIyOTQgXHVhYzE5XHVjNzQwIFx1YzBjOVx1YzczY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM5YzQgXHVjNjAxXHVjNWVkKFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWJhNzQgXHVhY2Y1XHViYzMxKVx1Yzc3NCBcdWM3ODhcdWIyZTQuJm5ic3A7XHVjNzc0IFx1YzYwMVx1YzVlZFx1Yzc0NCBcdWJjYzBcdWQ2NThcdWQ1NThcdWJhNzQgXHVjNzIwXHVjMGFjXHVkNTVjIFx1YzIyYlx1Yzc5MFx1YjRlNFx1Yzc3NCBcdWM1ZjBcdWMxOGRcdWQ1NzRcdWMxMWMgXHViMDk4XHVkMGMwXHViMDljXHViMmU0LiBcdWM3NzRcdWI5N2MgXHVjYzk4XHViOWFjXHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NFx1YzExYyBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHVjNzQwIFx1YzU1NVx1Y2Q5NSBcdWJjMjlcdWJjOTVcdWM3NDQgXHVjMGFjXHVjNmE5XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT5cdWMyMThcdWM1ZjRcdWM3NTggXHVjY2FiIFx1YmM4OFx1YzlmOCBcdWMyMmJcdWM3OTBcdWIyOTQgXHVjNzA0XHVjNzU4IFx1ZDQ1Y1x1YzVkMCBcdWIwOThcdWM2MjggMmJpdCBcdWNmNTRcdWI0ZGNcdWI4NWMgXHViY2MwXHVkNjU4XHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWFkZjggXHViMmU0XHVjNzRjXHVjNWQwIFx1YjA5OFx1YzYyNFx1YjI5NCBcdWIyZTRcdWI5NzggXHViYWE4XHViNGUwIFx1YzIyYlx1Yzc5MFx1YzVkMCBcdWIzMDBcdWQ1NzRcdWMxMWNcdWIyOTRcclxuXHQ8dWw+XHJcblx0XHQ8bGk+XHViOWNjXHVjNTdkIFx1YzIxOFx1YzVmNFx1Yzc1OCBcdWJjMTRcdWI4NWMgXHVjNTVlXHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWMyMmJcdWM3OTBcdWFjMDAgXHVhYzE5XHVjNzQwIFx1YzIyYlx1Yzc5MFx1Yjc3Y1x1YmE3NCAwXHVjNzNjXHViODVjIFx1YmNjMFx1ZDY1OFx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHRcdDxsaT5cdWM1NWVcdWM1ZDAgXHVjNzg4XHViMjk0IFx1YzIyYlx1Yzc5MFx1YzY0MCBcdWIyZTRcdWI5NzggXHVjMjJiXHVjNzkwXHViNzdjXHViYTc0IDFcdWM3NDQgXHVjNTVlXHVjNWQwIFx1YmQ5OVx1Yzc3OCBcdWI0YTQgXHVjNzA0IFx1ZDQ1Y1x1Yzc1OCAyYml0IFx1Y2Y1NFx1YjRkY1x1Yjg1YyBcdWJjYzBcdWQ2NThcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcbjxcL29sPlxyXG5cclxuPHA+XHVjMGMxXHVhZGZjXHVjNzc0XHViMjk0IFx1Yzc5MVx1Yzc0MCZuYnNwO1x1YzU5MVx1Yzc1OCBcdWM1ZDBcdWI3ZWNcdWI5N2MgXHVkMDZjXHVhYzhjIFx1YzJlMFx1YWNiZFx1YzRmMFx1YzljMCBcdWM1NGFcdWFlMzAgXHViNTRjXHViYjM4XHVjNWQwLCBcdWM3OTFcdWM3NDAgXHVjNTkxXHVjNzU4IFx1YzVkMFx1YjdlY1x1YjI5NCBcdWJiMzRcdWMyZGNcdWQ1NWNcdWIyZTQuIFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQsIFx1Yzc4NVx1YjgyNVx1YjQxYyBcdWMyMThcdWM1ZjRcdWM3NzQmbmJzcDsyLCAyLCAyLCAyLCAyLCA0NiwgMiwgMiBcdWI3N2NcdWFjZTAgXHVkNTg4XHVjNzQ0IFx1YjU0YywgXHVjNzc0XHViOTdjIDEsIDEsIDEsIDEsIDEsIDg2LCAxLCAxXHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiOCBcdWIyZTRcdWM3NGMmbmJzcDtcdWJjYzBcdWQ2NThcdWQ1NThcdWJhNzQgMDAwMDAwMTAxMTAwMFx1YWMwMCBcdWI0MThcdWFjZTAgXHVjODA0XHVjY2I0IFx1YzVkMFx1YjdlY1x1YjI5NCAxKzErMSsxKzErNDArMSsxPTQ3IFx1Yzc3NCBcdWI0MWNcdWIyZTQuIFx1ZDU1OFx1YzljMFx1YjljYyAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxIFx1Yjg1YyBcdWIwOThcdWQwYzBcdWIwYjggXHVkNmM0IFx1YmNjMFx1ZDY1OFx1ZDU1OFx1YmE3NCBcdWM4MDRcdWNjYjQgXHVjNWQwXHViN2VjXHViMjk0IDErMSsxKzErMSs0NSsxKzE9NTJcdWFjMDAgXHViNDE4XHVjNWI0IFx1Y2VlNFx1YzljMFx1YzljMFx1YjljYyBcdWNmNTRcdWI0ZGNcdWFjMDAgMDAwMDAwMDAwXHVhYzAwIFx1YjQxOFx1YzViNCBcdWIzNTQgXHVjOWU3XHVjNTQ0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWMwYzFcdWFkZmNcdWM3NzRcdWIyOTQgXHViY2MwXHVkNjU4IFx1YmU0NFx1YzZhOVx1Yzc0NCBcdWNkNWNcdWMxOGNcdWI4NWMgXHVkNTU4XHViMjk0IFx1YmMyOVx1YmM5NVx1Yzc0NCBcdWNjM2VcdWM3M2NcdWI4MjRcdWFjZTAgXHVkNTVjXHViMmU0LiBcdWJjYzBcdWQ2NTggXHViZTQ0XHVjNmE5XHVjNzQwIFx1YzgwNFx1Y2NiNCBcdWM1ZDBcdWI3ZWMgKyBXKihcdWJjYzBcdWQ2NTggXHVjZjU0XHViNGRjXHVjNzU4IFx1YWUzOFx1Yzc3NClcdWI4NWMgXHVhY2M0XHVjMGIwXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxvbD5cclxuXHQ8bGk+V1x1YjI5NCBcdWM1ZDBcdWI3ZWNcdWM2NDAgXHVjZjU0XHViNGRjXHVjNzU4IFx1YWUzOFx1Yzc3NCBcdWM5MTEgXHVjNWI0XHViMjkwIFx1YWM4M1x1Yzc0NCBcdWM5MTFcdWM2OTRcdWMyZGMgXHVkNTU4XHViMjkwXHViMGQwXHVjNWQwIFx1YjUzMFx1Yjc3YyBcdWM3ODVcdWI4MjVcdWM3M2NcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWM3NzRcdWI1NGMgXHVjODA0XHVjY2I0IFx1YzVkMFx1YjdlY1x1YjI5NCBcdWM3ODVcdWI4MjUgXHVjMjE4XHVjNWY0IHg8c3ViPjE8XC9zdWI+LCB4PHN1Yj4yPFwvc3ViPiwgLCB4PHN1Yj5OPFwvc3ViPiAsIFx1YmNjMFx1ZDY1OCBcdWMyMThcdWM1ZjQgeTxzdWI+MTxcL3N1Yj4sIHk8c3ViPjI8XC9zdWI+LCAsIHk8c3ViPk48XC9zdWI+XHVjNWQwIFx1YjMwMFx1ZDU3NFx1YzExYyBcdWIyZTRcdWM3NGNcdWFjZmMmbmJzcDtcdWFjMTlcdWIyZTQuJm5ic3A7JlNpZ21hO3x4PHN1Yj5pPFwvc3ViPi15PHN1Yj5pPFwvc3ViPnw8XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5cdWMyMThcdWM1ZjRcdWM3NzQgMiwgMiwgMiwgMiwgMiwgNDYsIDIsIDIgXHVjNzc0XHVhY2UwLCZuYnNwO1dcdWFjMDAgMTAwXHVjNzc4IFx1YWNiZFx1YzZiMFx1YzVkMCZuYnNwO3k8c3ViPjE8XC9zdWI+LC4uLiwgeTxzdWI+ODxcL3N1Yj4gPSAxLCAxLCAxLCAxLCAxLCA4NiwgMSwgMSBcdWI4NWMgXHViY2MwXHVkNjU4XHVkNTU4XHViYTc0IFx1Y2Y1NFx1YjRkY1x1YjI5NCAwMDAwMDAxMDExMDAwXHVjNzc0IFx1YjQxOFx1YWNlMCwmbmJzcDtcdWJjYzBcdWQ2NTggXHViZTQ0XHVjNmE5XHVjNzQwIDQ3ICsgMTAwICogMTMgPSAxMzQ3XHVjNzc0XHViMmU0LiBcdWQ1NThcdWM5YzBcdWI5Y2MgeTxzdWI+MTxcL3N1Yj4sLi4uLCB5PHN1Yj44PFwvc3ViPiA9IDEsIDEsIDEsIDEsIDEsIDEsIDEsIDFcdWI4NWMgXHViY2MwXHVkNjU4XHVkNTU4XHViYTc0IFx1Y2Y1NFx1YjRkY1x1YjI5NCAwMDAwMDAwMDBcdWM3NzRcdWFjZTAgXHViY2MwXHVkNjU4IFx1YmU0NFx1YzZhOVx1Yzc0MCA1MiArIDEwMCAqIDkgPSA5NTJcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWJcdWM5ZjggXHVjOTA0XHVjNWQwJm5ic3A7XHVjMjE4XHVjNWY0XHVjNzU4IFx1YWUzOFx1Yzc3NCBOKDEgJmxlOyZuYnNwO04gJmxlOyA1MCksIFx1YWMwMFx1YzkxMVx1Y2U1OCBXKDEgJmxlOyBXICZsZTsgMTAwKVx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YjJlNFx1Yzc0YyBOXHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWMyMThcdWM1ZjRcdWM3NDQgXHVjNzc0XHViOGU4XHViMjk0IFx1YzIyYlx1Yzc5MCgmbGU7MjU2KVx1YjRlNFx1Yzc3NCBcdWNjMjhcdWI4NDBcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1Y2NhYlx1YzkwNFx1YzVkMFx1YjI5NCBcdWNkNWNcdWMxOGMgXHViY2MwXHVkNjU4IFx1YmU0NFx1YzZhOVx1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YWRmOFx1YjlhY1x1YWNlMCBcdWI0NTAgXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWJjYzBcdWQ2NThcdWNmNTRcdWI0ZGNcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1ZDU1Y1x1YWQ2ZFx1YzViNCJ9LHsicHJvYmxlbV9pZCI6IjIzNDEiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJGYXgiLCJkZXNjcmlwdGlvbiI6IjxwPllvdSBhcmUgYXNrZWQgdG8gZGVzaWduIGEgY29tcHJlc3Npb24gc2NoZW1lIGZvciB0cmFuc21pdHRpbmcgZmF4IGltYWdlcyBvZiBkb2N1bWVudHMuIEFmdGVyIGFuIGltYWdlIGlzIHNjYW5uZWQgaW4gdXNpbmcgYSBzY2FubmVyLCB5b3Ugb2J0YWluIGEgc2VxdWVuY2Ugb2YgbnVtYmVycyB3aGVyZSBlYWNoIG51bWJlciB4IHRha2VzIGEgdmFsdWUgZnJvbSAxIHRvIDI1Ni4gRm9yIGV4YW1wbGUsIGFuIGltYWdlIG1heSBiZSBjb252ZXJ0ZWQgaW50byBhIHNlcXVlbmNlIG9mIHRoZSBmb3JtJm5ic3A7PFwvcD5cclxuXHJcbjxwPjEsIDEsIDEsIDEsIDEsIDQ2LCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAxLCAyLCAxLCAxLCAxLCAyNSwgMjYsIDI1LCAyNSwgMjU1LCAyNTYsIDI1NiwgMjU2LCAyNTUsICZoZWxsaXA7PFwvcD5cclxuXHJcbjxwPlNpbmNlIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gdHJhbnNtaXQgdGhlIGV4YWN0IGltYWdlLCB5b3UgZGVjaWRlIHRvIGRpc2NyZXRpemUgZWFjaCBudW1iZXIgdG8gNCBsZXZlbHMsIG5hbWVseSAxLCA4NiwgMTcyIGFuZCAyNTYsIHNvIHRoYXQgeW91IGNhbiBjb2RlIGVhY2ggbGV2ZWwgdXNpbmcgb25seSAyIGJpdHMgYXMgZm9sbG93czxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6NDAlXCI+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDo4JVwiPkxldmVsPFwvdGg+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjg2PFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTcyPFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MjU2PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6OCVcIj5Db2RlPFwvdGg+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MDA8XC90ZD5cclxuXHRcdFx0PHRkIHN0eWxlPVwid2lkdGg6OCVcIj4wMTxcL3RkPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4JVwiPjEwPFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjglXCI+MTE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlRoZW4geW91IHJlYWxpemUgdGhhdCBsYXJnZSBhcmVhcyBvZiB0aGUgc2FtZSB2YWx1ZSAoZS5nLiB3aGl0ZSkgb2Z0ZW4gb2NjdXIgaW4gZG9jdW1lbnRzIHJlc3VsdGluZyBpbiBsb25nIHNlcXVlbmNlcyBvZiB2ZXJ5IHNpbWlsYXIgbnVtYmVycy4gWW91IGRlY2lkZSB0byBhZG9wdCBhIGNvbXByZXNzaW9uIHNjaGVtZSBhcyBmb2xsb3dzOjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPkZvciB0aGUgZmlyc3QgbnVtYmVyIGluIHRoZSBzZXF1ZW5jZSwgeW91IHdpbGwgdXNlIHRoZSAyIGJpdHMgYXMgZGVzY3JpYmVkIHByZXZpb3VzbHkuPFwvbGk+XHJcblx0PGxpPkZvciBhbGwgb3RoZXIgbnVtYmVyczpcclxuXHQ8dWw+XHJcblx0XHQ8bGk+aWYgdGhlIHByZXZpb3VzIG51bWJlciBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBudW1iZXIsIHlvdSB3aWxsIHRyYW5zbWl0IHRoZSBiaXQgMC48XC9saT5cclxuXHRcdDxsaT5vdGhlcndpc2UsIHlvdSB3aWxsIHRyYW5zbWl0IHRoZSBiaXQgMSBmb2xsb3dlZCBieSB0aGUgMi1iaXQgY29kZSBvZiB0aGUgbnVtYmVyLiBUaGF0IGlzLFxyXG5cdFx0PHVsPlxyXG5cdFx0XHQ8bGk+MSBmb2xsb3dlZCBieSAwMCBmb3IgbnVtYmVyIDEsPFwvbGk+XHJcblx0XHRcdDxsaT4xIGZvbGxvd2VkIGJ5IDAxIGZvciBudW1iZXIgODYsPFwvbGk+XHJcblx0XHRcdDxsaT4xIGZvbGxvd2VkIGJ5IDEwIGZvciBudW1iZXIgMTcyLDxcL2xpPlxyXG5cdFx0XHQ8bGk+MSBmb2xsb3dlZCBieSAxMSBmb3IgbnVtYmVyIDI1Ni48XC9saT5cclxuXHRcdDxcL3VsPlxyXG5cdFx0PFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcbjxcL29sPlxyXG5cclxuPHA+RmluYWxseSwgc2luY2UgeW91IGFyZSBub3Qgd29ycmllZCBhYm91dCBhIHNtYWxsIGFtb3VudCBvZiBlcnJvciwgeW91IHJlYWxpemUgdGhhdCB5b3UgY2FuIGltcHJvdmUgeW91ciBzY2hlbWUgYnkgaWdub3JpbmcgaXNvbGF0ZWQgY2hhbmdlcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBpbnB1dCBzZXF1ZW5jZSBpcyAyLCAyLCAyLCAyLCAyLCA0NiwgMiwgMiBhbmQgeW91IHRyYW5zbWl0IHRoZSBzZXF1ZW5jZSAxLCAxLCAxLCAxLCAxLCA4NiwgMSwgMSwgdGhlIHRvdGFsIGVycm9yIHdpbGwgYmUgMSArIDEgKyAxICsgMSArIDEgKyA0MCArIDEgKyAxID0gNDcgYW5kIHRoZSBzdHJpbmcgdGhhdCBuZWVkcyB0byBiZSB0cmFuc21pdHRlZCBpcyAwMDAwMDAxMDExMDAwLiBJZiwgaW5zdGVhZCB5b3UgY2hvb3NlIHRvIHRyYW5zbWl0IHRoZSBzZXF1ZW5jZSAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCB0aGUgdG90YWwgZXJyb3Igd2lsbCBiZSAxICsgMSArIDEgKyAxICsgMSArIDQ1ICsgMSArIDEgPSA1MiwgYnV0IHRoZSBzdHJpbmcgdGhhdCBuZWVkcyB0byBiZSB0cmFuc21pdHRlZCB3b3VsZCBiZSAwMDAwMDAwMDAgd2hpY2ggaXMgc2hvcnRlci4mbmJzcDs8XC9wPlxyXG5cclxuPHA+WW91IGRlY2lkZSB0byBtZWFzdXJlIHRoZSBvdmVyYWxsIGNvc3Qgb2YgYSB0cmFuc21pc3Npb24gYnkgdGhlIGZvbGxvd2luZyB3ZWlnaHRlZCBzdW0mbmJzcDs8XC9wPlxyXG5cclxuPHA+Y29zdCA9IHRvdGFsIGVycm9yICsgVyAmdGltZXM7ICh0b3RhbCBudW1iZXIgb2YgYml0cyB0cmFuc21pdHRlZCk8XC9wPlxyXG5cclxuPHA+d2hlcmU8XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT50aGUgd2VpZ2h0IFcgY2FuIGJlIGFkanVzdGVkIHRvIGdpdmUgbW9yZSBlbXBoYXNpcyB0byBlaXRoZXIgdGhlIHRvdGFsIGVycm9yIG9yIHRoZSB0b3RhbCBudW1iZXIgb2YgYml0cyB0cmFuc21pdHRlZDxcL2xpPlxyXG5cdDxsaT5mb3IgYW4gaW5wdXQgc2VxdWVuY2UgeDxzdWI+MTxcL3N1Yj4sIHg8c3ViPjI8XC9zdWI+LCAmaGVsbGlwOywgeDxzdWI+TjxcL3N1Yj4gYW5kIGEgdHJhbnNtaXR0ZWQgc2VxdWVuY2UgeTxzdWI+MTxcL3N1Yj4sIHk8c3ViPjI8XC9zdWI+LCAmaGVsbGlwOywgeTxzdWI+TjxcL3N1Yj4sIGJvdGggb2YgbGVuZ3RoIE4sIHRoZSB0b3RhbCBlcnJvciBpcyBTdW1tYXRpb24gKGkgZnJvbSAxIHRvIE4pIHx4PHN1Yj5pPFwvc3ViPiAtIHk8c3ViPmk8XC9zdWI+fCA9IHx4PHN1Yj4xPFwvc3ViPiAtIHk8c3ViPjE8XC9zdWI+fCArICZoZWxsaXA7ICsgfHg8c3ViPk48XC9zdWI+IC0geTxzdWI+TjxcL3N1Yj58LjxcL2xpPlxyXG48XC9vbD5cclxuXHJcbjxwPkZvciB0aGUgaW5wdXQgc2VxdWVuY2UgMiwgMiwgMiwgMiwgMiwgNDYsIDIsIDIgd2l0aCBXID0gMTAwLDxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPndlIGNhbiB0cmFuc21pdCB0aGUgc2VxdWVuY2UgeTxzdWI+MTxcL3N1Yj4sICZoZWxsaXA7LCB5PHN1Yj44PFwvc3ViPiA9IDEsIDEsIDEsIDEsIDEsIDg2LCAxLCAxIGJ5IHRyYW5zbWl0dGluZyB0aGUgc3RyaW5nIDAwMDAwMDEwMTEwMDAgd2l0aCBhIGNvc3Qgb2YgNDcgKyAxMDAgJnRpbWVzOyAxMyA9IDEzNDc7PFwvbGk+XHJcblx0PGxpPm9yIHdlIGNhbiB0cmFuc21pdCB0aGUgc2VxdWVuY2UgeTxzdWI+MTxcL3N1Yj4sICZoZWxsaXA7LCB5PHN1Yj44PFwvc3ViPiA9IDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEgYnkgdHJhbnNtaXR0aW5nIHRoZSBzdHJpbmcgMDAwMDAwMDAwIHdpdGggYSBjb3N0IG9mIDUyICsgMTAwICZ0aW1lczsgOSA9IDk1Mi48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5JbiB0aGlzIGNhc2UsIHRoZSBzZWNvbmQgb3B0aW9uIGhhcyBsb3dlciBjb3N0LiZuYnNwOzxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIGlucHV0IGNvbnNpc3RzIG9mIHNldmVyYWwgbGluZXMuIFRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIHR3byBpbnRlZ2VycyBOICgxICZsZTsmbmJzcDtOICZsZTsmbmJzcDs1MCkgYW5kIFcgKDEgJmxlOyZuYnNwO1cgJmxlOyZuYnNwOzEwMCkgaW4gdGhpcyBvcmRlci4gSW50ZWdlciBOIGRlbm90ZXMgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgc2VxdWVuY2UgYW5kIGludGVnZXIgVyBpcyB0aGUgd2VpZ2h0LiBFYWNoIG9mIHRoZSBzdWJzZXF1ZW50IE4gbGluZXMgY29udGFpbnMgYW4gaW50ZWdlciB4ICgxICZsZTsmbmJzcDt4ICZsZTsmbmJzcDsyNTYpIG9mIHRoZSBzZXF1ZW5jZS48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5UaGUgb3V0cHV0IGNvbnRhaW5zIGEgc2luZ2xlIGludGVnZXIgd2hpY2ggaXMgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGNvc3QgcmVxdWlyZWQgdG8gdHJhbnNtaXQgdGhlIGlucHV0IHNlcXVlbmNlIHdpdGggdGhlIGdpdmVuIHZhbHVlIG9mIFcuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d