문제
노노그램은 직사각형 격자를 규칙에 맞게 색칠하는 퍼즐 게임이다. 격자의 각 행과 열에는 양의 정수의 배열이 힌트로 주어지는데, 이는 각 행 또는 열에서 연속한 칠해진 칸의 배열을 나타낸다.
예를 들어 위의 왼쪽 그림을 보자. 4행에 있는 힌트 $[10]$은 해당 행에서 연속한 10ドル$칸을 색칠해야 함을 나타낸다. 색칠할 10ドル$칸은 아무 곳에서나 시작해도 되고, 그 외의 칸은 비워 놔야 한다.
이번에는 9행에 있는 힌트 $[3,4,4]$에 주목하자. 이는 해당 행에서 순서대로 3ドル$칸, 4ドル$칸, 4ドル$칸의 연속한 칸을 색칠해야 함을 나타낸다. 힌트의 순서와 칠해진 칸의 순서는 일치해야 하며, 각 연속한 칠해진 칸 사이에는 하나 이상의 빈 칸이 있어야 한다.
이해를 돕기 위해 위의 오른쪽 그림에는 4행과 9행만 남겨 두었다.
윤이는 노노그램을 풀면서 반드시 색칠해야 하는 칸과 비워 둬야 하는 칸 몇 개를 알아냈지만, 더 이상 진행이 되지 않아 애를 쓰고 있다. 방법을 고민하던 윤이는 문득 어떤 행 하나에 대해서 조건에 맞게 색칠하는 경우의 수가 궁금해졌다. 행의 힌트와 행의 각 칸에 대해 윤이가 알아낸 정보가 주어지면, 해당 행을 조건에 맞게 색칠하는 경우의 수를 구하시오.
출력
조건에 맞게 행을 색칠하는 경우의 수를 10ドル^9+7$로 나눈 나머지를 출력한다.
조건에 맞게 행을 색칠하는 방법을 나열하면 다음과 같다.
OOX..XOOO.
OOX..X.OOO
..XOOXOOO.
..XOOX.OOO
노트
본문에 제공된 노노그램의 출처는 이곳이다. https://www.nonograms.org/nonograms/i/28098
W3sicHJvYmxlbV9pZCI6IjI2MTI3IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHViMTc4XHViMTc4XHVhZGY4XHViN2E4IiwiZGVzY3JpcHRpb24iOiI8cD5cdWIxNzhcdWIxNzhcdWFkZjhcdWI3YThcdWM3NDAgXHVjOWMxXHVjMGFjXHVhYzAxXHVkNjE1IFx1YWNhOVx1Yzc5MFx1Yjk3YyBcdWFkZGNcdWNlNTlcdWM1ZDAgXHViOWRlXHVhYzhjIFx1YzBjOVx1Y2U2MFx1ZDU1OFx1YjI5NCBcdWQzN2NcdWM5OTAgXHVhYzhjXHVjNzg0XHVjNzc0XHViMmU0LiBcdWFjYTlcdWM3OTBcdWM3NTggXHVhYzAxIFx1ZDU4OVx1YWNmYyBcdWM1ZjRcdWM1ZDBcdWIyOTQgXHVjNTkxXHVjNzU4IFx1YzgxNVx1YzIxOFx1Yzc1OCBcdWJjMzBcdWM1ZjRcdWM3NzQgXHVkNzhjXHVkMmI4XHViODVjIFx1YzhmY1x1YzViNFx1YzljMFx1YjI5NFx1YjM3MCwgXHVjNzc0XHViMjk0IFx1YWMwMSBcdWQ1ODkgXHViNjEwXHViMjk0IFx1YzVmNFx1YzVkMFx1YzExYyBcdWM1ZjBcdWMxOGRcdWQ1NWMgXHVjZTYwXHVkNTc0XHVjOWM0IFx1Y2U3OFx1Yzc1OCBcdWJjMzBcdWM1ZjRcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcLzlkNDZlMTM0LTc2OTktNDM0YS04OWZhLTczZjUxYjM1ODc3MFwvXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDEwMCU7IHdpZHRoOiAzMDBweDtcIiBcLz4gPGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC9iMjg5MTA1Ni1lNWE4LTRhYjktYTJhZC0wZWU3NWFhMDZhMmFcL1wiIHN0eWxlPVwibWF4LXdpZHRoOiAxMDAlOyB3aWR0aDogMzAwcHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQgXHVjNzA0XHVjNzU4IFx1YzY3Y1x1Y2FiZCBcdWFkZjhcdWI5YmNcdWM3NDQgXHViY2Y0XHVjNzkwLiA0XHVkNTg5XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWQ3OGNcdWQyYjggJFsxMF0kXHVjNzQwIFx1ZDU3NFx1YjJmOSBcdWQ1ODlcdWM1ZDBcdWMxMWMgXHVjNWYwXHVjMThkXHVkNTVjICQxMCRcdWNlNzhcdWM3NDQgXHVjMGM5XHVjZTYwXHVkNTc0XHVjNTdjIFx1ZDU2OFx1Yzc0NCBcdWIwOThcdWQwYzBcdWIwYjhcdWIyZTQuIFx1YzBjOVx1Y2U2MFx1ZDU2MCAkMTAkXHVjZTc4XHVjNzQwIFx1YzU0NFx1YmIzNCBcdWFjZjNcdWM1ZDBcdWMxMWNcdWIwOTggXHVjMmRjXHVjNzkxXHVkNTc0XHViM2M0IFx1YjQxOFx1YWNlMCwgXHVhZGY4IFx1YzY3OFx1Yzc1OCBcdWNlNzhcdWM3NDAgXHViZTQ0XHVjNmNjIFx1YjE5NFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc3NFx1YmM4OFx1YzVkMFx1YjI5NCA5XHVkNTg5XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWQ3OGNcdWQyYjggJFszLDQsNF0kXHVjNWQwIFx1YzhmY1x1YmFhOVx1ZDU1OFx1Yzc5MC4gXHVjNzc0XHViMjk0IFx1ZDU3NFx1YjJmOSBcdWQ1ODlcdWM1ZDBcdWMxMWMgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjICQzJFx1Y2U3OCwgJDQkXHVjZTc4LCAkNCRcdWNlNzhcdWM3NTggXHVjNWYwXHVjMThkXHVkNTVjIFx1Y2U3OFx1Yzc0NCBcdWMwYzlcdWNlNjBcdWQ1NzRcdWM1N2MgXHVkNTY4XHVjNzQ0IFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC4gXHVkNzhjXHVkMmI4XHVjNzU4IFx1YzIxY1x1YzExY1x1YzY0MCBcdWNlNjBcdWQ1NzRcdWM5YzQgXHVjZTc4XHVjNzU4IFx1YzIxY1x1YzExY1x1YjI5NCBcdWM3N2NcdWNlNThcdWQ1NzRcdWM1N2MgXHVkNTU4XHViYTcwLCBcdWFjMDEgXHVjNWYwXHVjMThkXHVkNTVjIFx1Y2U2MFx1ZDU3NFx1YzljNCBcdWNlNzggXHVjMGFjXHVjNzc0XHVjNWQwXHViMjk0IFx1ZDU1OFx1YjA5OCBcdWM3NzRcdWMwYzFcdWM3NTggXHViZTQ4IFx1Y2U3OFx1Yzc3NCBcdWM3ODhcdWM1YjRcdWM1N2MgXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM3NzRcdWQ1NzRcdWI5N2MgXHViM2Q1XHVhZTMwIFx1YzcwNFx1ZDU3NCBcdWM3MDRcdWM3NTggXHVjNjI0XHViOTc4XHVjYWJkIFx1YWRmOFx1YjliY1x1YzVkMFx1YjI5NCA0XHVkNTg5XHVhY2ZjIDlcdWQ1ODlcdWI5Y2MgXHViMGE4XHVhY2E4IFx1YjQ1MFx1YzVjOFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNzI0XHVjNzc0XHViMjk0IFx1YjE3OFx1YjE3OFx1YWRmOFx1YjdhOFx1Yzc0NCBcdWQ0ODBcdWJhNzRcdWMxMWMgXHViYzE4XHViNGRjXHVjMmRjIFx1YzBjOVx1Y2U2MFx1ZDU3NFx1YzU3YyBcdWQ1NThcdWIyOTQgXHVjZTc4XHVhY2ZjIFx1YmU0NFx1YzZjYyBcdWI0NmNcdWM1N2MgXHVkNTU4XHViMjk0IFx1Y2U3OCBcdWJhODcgXHVhYzFjXHViOTdjIFx1YzU0Y1x1YzU0NFx1YjBjOFx1YzljMFx1YjljYywgXHViMzU0IFx1Yzc3NFx1YzBjMSBcdWM5YzRcdWQ1ODlcdWM3NzQgXHViNDE4XHVjOWMwIFx1YzU0YVx1YzU0NCBcdWM1NjBcdWI5N2MgXHVjNGYwXHVhY2UwIFx1Yzc4OFx1YjJlNC4gXHViYzI5XHViYzk1XHVjNzQ0IFx1YWNlMFx1YmJmY1x1ZDU1OFx1YjM1OCBcdWM3MjRcdWM3NzRcdWIyOTQgXHViYjM4XHViNGRkIFx1YzViNFx1YjVhNCBcdWQ1ODkgXHVkNTU4XHViMDk4XHVjNWQwIFx1YjMwMFx1ZDU3NFx1YzExYyBcdWM4NzBcdWFjNzRcdWM1ZDAgXHViOWRlXHVhYzhjIFx1YzBjOVx1Y2U2MFx1ZDU1OFx1YjI5NCBcdWFjYmRcdWM2YjBcdWM3NTggXHVjMjE4XHVhYzAwIFx1YWQ4MVx1YWUwOFx1ZDU3NFx1Yzg0Y1x1YjJlNC4gXHVkNTg5XHVjNzU4IFx1ZDc4Y1x1ZDJiOFx1YzY0MCBcdWQ1ODlcdWM3NTggXHVhYzAxIFx1Y2U3OFx1YzVkMCBcdWIzMDBcdWQ1NzQgXHVjNzI0XHVjNzc0XHVhYzAwIFx1YzU0Y1x1YzU0NFx1YjBiOCBcdWM4MTVcdWJjZjRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWMwXHViYTc0LCBcdWQ1NzRcdWIyZjkgXHVkNTg5XHVjNzQ0IFx1Yzg3MFx1YWM3NFx1YzVkMCBcdWI5ZGVcdWFjOGMgXHVjMGM5XHVjZTYwXHVkNTU4XHViMjk0IFx1YWNiZFx1YzZiMFx1Yzc1OCBcdWMyMThcdWI5N2MgXHVhZDZjXHVkNTU4XHVjMmRjXHVjNjI0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiIFx1YmM4OFx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVkNTg5XHVjNzU4IFx1YWUzOFx1Yzc3NCAkTiRcdWFjZmMgXHVkNzhjXHVkMmI4IFx1YmMzMFx1YzVmNFx1Yzc1OCBcdWFlMzhcdWM3NzQgJEskXHVhYzAwIFx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MThcdWM1YjQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoJDFcXGxlIEtcXGxlIE5cXGxlIDNcXCAwMDAkKTxcL3A+XHJcblxyXG48cD5cdWI0NTAgXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMCBcdWQ3OGNcdWQyYjhcdWI5N2MgXHViMDk4XHVkMGMwXHViMGI0XHViMjk0ICRLJFx1YWMxY1x1Yzc1OCBcdWM4MTVcdWMyMThcdWFjMDAgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NFx1YjQxOFx1YzViNCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YWMwMSBcdWM4MTVcdWMyMThcdWIyOTQgJDEkIFx1Yzc3NFx1YzBjMSAkTiQgXHVjNzc0XHVkNTU4XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWMxMzggXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMCBcdWQ1ODlcdWM3NTggXHVjODE1XHViY2Y0XHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWFlMzhcdWM3NzQgJE4kXHVjNzU4IFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yzc0MCA8Y29kZT4mbHNxdW87LiZyc3F1bzs8XC9jb2RlPiwgPGNvZGU+JmxzcXVvO08mcnNxdW87PFwvY29kZT4sIFx1YjYxMFx1YjI5NCA8Y29kZT4mbHNxdW87WCZyc3F1bzs8XC9jb2RlPlx1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHVjNzNjXHViYTcwLCA8Y29kZT4mbHNxdW87LiZyc3F1bzs8XC9jb2RlPlx1Yzc0MCBcdWM1NDRcdWM5YzEgXHVjODE1XHViY2Y0XHViOTdjIFx1YzViYlx1YzljMCBcdWJhYmJcdWQ1NWMgXHViZTQ4IFx1Y2U3OCwgPGNvZGU+JmxzcXVvO08mcnNxdW87PFwvY29kZT5cdWIyOTQgXHViYzE4XHViNGRjXHVjMmRjIFx1YzBjOVx1Y2U2MFx1ZDU3NFx1YzU3YyBcdWQ1NThcdWIyOTQgXHVjZTc4LCA8Y29kZT4mbHNxdW87WCZyc3F1bzs8XC9jb2RlPlx1YjI5NCBcdWJjMThcdWI0ZGNcdWMyZGMgXHViZTQ0XHVjNmNjIFx1YjQ2Y1x1YzU3YyBcdWQ1NThcdWIyOTQgXHVjZTc4XHVjNzQ0IFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWM4NzBcdWFjNzRcdWM1ZDAgXHViOWRlXHVhYzhjIFx1ZDU4OVx1Yzc0NCBcdWMwYzlcdWNlNjBcdWQ1NThcdWIyOTQgXHVhY2JkXHVjNmIwXHVjNzU4IFx1YzIxOFx1Yjk3YyAkMTBeOSs3JFx1Yjg1YyBcdWIwOThcdWIyMDggXHViMDk4XHViYTM4XHVjOWMwXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiPHA+XHViY2Y4XHViYjM4XHVjNWQwIFx1YzgxY1x1YWNmNVx1YjQxYyBcdWIxNzhcdWIxNzhcdWFkZjhcdWI3YThcdWM3NTggXHVjZDljXHVjYzk4XHViMjk0IFx1Yzc3NFx1YWNmM1x1Yzc3NFx1YjJlNC4gaHR0cHM6XC9cL3d3dy5ub25vZ3JhbXMub3JnXC9ub25vZ3JhbXNcL2lcLzI4MDk4PFwvcD5cclxuIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4iLCJzYW1wbGVfZXhwbGFpbl8xIjoiPHA+XHVjODcwXHVhYzc0XHVjNWQwIFx1YjlkZVx1YWM4YyBcdWQ1ODlcdWM3NDQgXHVjMGM5XHVjZTYwXHVkNTU4XHViMjk0IFx1YmMyOVx1YmM5NVx1Yzc0NCBcdWIwOThcdWM1ZjRcdWQ1NThcdWJhNzQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT48Y29kZT5PT1guLlhPT08uPFwvY29kZT48XC9saT5cclxuXHQ8bGk+PGNvZGU+T09YLi5YLk9PTzxcL2NvZGU+PFwvbGk+XHJcblx0PGxpPjxjb2RlPi4uWE9PWE9PTy48XC9jb2RlPjxcL2xpPlxyXG5cdDxsaT48Y29kZT4uLlhPT1guT09PPFwvY29kZT48XC9saT5cclxuPFwvdWw+XHJcbiJ9LHsicHJvYmxlbV9pZCI6IjI2MTI3IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiTm9ub2dyYW0iLCJkZXNjcmlwdGlvbiI6IjxwPk5vbm9ncmFtIGlzIGEgcHV6emxlIGdhbWUgaW4gd2hpY2ggeW91IGNvbG9yIGEgcmVjdGFuZ3VsYXIgZ3JpZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBydWxlcy4gRm9yIGVhY2ggcm93IGFuZCBjb2x1bW4gb2YgdGhlIGdyaWQsIGFuIGFycmF5IG9mIHBvc2l0aXZlIGludGVnZXJzIGlzIGdpdmVuIGFzIGEgaGludC4gVGhlIGhpbnQgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGNvbG9yZWQgY2VsbHMgaW4gZWFjaCByb3cgb3IgY29sdW1uLjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcLzlkNDZlMTM0LTc2OTktNDM0YS04OWZhLTczZjUxYjM1ODc3MFwvXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDEwMCU7IHdpZHRoOiAzMDBweDtcIiBcLz4gPGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC9iMjg5MTA1Ni1lNWE4LTRhYjktYTJhZC0wZWU3NWFhMDZhMmFcL1wiIHN0eWxlPVwibWF4LXdpZHRoOiAxMDAlOyB3aWR0aDogMzAwcHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwPkZvciBleGFtcGxlLCB0YWtlIGEgbG9vayBhdCB0aGUgbGVmdCBmaWd1cmUgYWJvdmUuIFRoZSBoaW50ICRbMTBdJCBvbiB0aGUgNHRoIHJvdyBpbmRpY2F0ZXMgdGhhdCB5b3UgaGF2ZSB0byBjb2xvciAkMTAkIGNvbnNlY3V0aXZlIGNlbGxzIGluIHRoZSByb3cuIFRoZSAkMTAkIGNlbGxzIHRvIGJlIGNvbG9yZWQgY2FuIHN0YXJ0IGFueXdoZXJlLCBhbmQgdGhlIG90aGVyIGNlbGxzIG11c3QgcmVtYWluIGVtcHR5LjxcL3A+XHJcblxyXG48cD5UaGlzIHRpbWUsIG5vdGljZSB0aGUgaGludCAkWzMsNCw0XSQgb24gdGhlIDl0aCByb3cuIFRoaXMgaW5kaWNhdGVzIHRoYXQgeW91IG11c3QgY29sb3IgJDMkLCAkNCQsIGFuZCAkNCQgY29uc2VjdXRpdmUgY2VsbHMgaW4gb3JkZXIgaW4gdGhlIHJvdy4gVGhlIG9yZGVyIG9mIHRoZSBoaW50IGFuZCB0aGUgb3JkZXIgb2YgY29uc2VjdXRpdmUgY29sb3JlZCBjZWxscyBtdXN0IG1hdGNoLCBhbmQgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgZW1wdHkgY2VsbCBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBjb2xvcmVkIGNlbGxzLjxcL3A+XHJcblxyXG48cD5UbyBoZWxwIGJldHRlciB1bmRlcnN0YW5kLCBvbmx5IHRoZSA0dGggYW5kIDl0aCByb3dzIGFyZSBsZWZ0IGluIHRoZSByaWdodCBmaWd1cmUgYWJvdmUuPFwvcD5cclxuXHJcbjxwPll1bmVlIGlzIHNvbHZpbmcgYSBOb25vZ3JhbSBhbmQgaGFzIGZpZ3VyZWQgb3V0IHNvbWUgY2VsbHMgdGhhdCBtdXN0IGJlIGNvbG9yZWQgYW5kIGNlbGxzIHRoYXQgbXVzdCByZW1haW4gZW1wdHkuIEhvd2V2ZXIsIFl1bmVlIGlzIHN0cnVnZ2xpbmcgdG8gcHJvZ3Jlc3MgYW55IGZ1cnRoZXIuIFdoaWxlIHRyeWluZyB2YXJpb3VzIG1ldGhvZHMsIFl1bmVlIGJlZ2FuIHdvbmRlcmluZyBhYm91dCB0aGUgbnVtYmVyIG9mIHBvc3NpYmxlIHdheXMgdG8gZmlsbCBhIHJvdyBhY2NvcmRpbmcgdG8gdGhlIGhpbnQuIEdpdmVuIHRoZSBoaW50IGZvciBhIHJvdyBhbmQgdGhlIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggY2VsbCBpbiB0aGUgcm93LCBmaW5kIHRoZSBudW1iZXIgb2Ygd2F5cyB0byBmaWxsIHRoZSByb3cgYWNjb3JkaW5nIHRvIHRoZSBoaW50LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIGZpcnN0IGxpbmUgZ2l2ZXMgdGhlIHJvdyBsZW5ndGggJE4kIGFuZCB0aGUgaGludCBhcnJheSBsZW5ndGggJEskLiAoJDFcXGxlIEtcXGxlIE5cXGxlIDNcXCAwMDAkKTxcL3A+XHJcblxyXG48cD5UaGUgc2Vjb25kIGxpbmUgZ2l2ZXMgJEskIGludGVnZXJzIHJlcHJlc2VudGluZyB0aGUgaGludCBmb3IgdGhlIHJvdy4gRWFjaCBpbnRlZ2VyIHJhbmdlcyBmcm9tICQxJCB0byAkTiQsIGluY2x1c2l2ZS48XC9wPlxyXG5cclxuPHA+VGhlIHRoaXJkIGxpbmUgZ2l2ZXMgYSBzdHJpbmcgb2YgbGVuZ3RoICROJCByZXByZXNlbnRpbmcgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSByb3cuIFRoZSBzdHJpbmcgY29uc2lzdHMgb2YgY2hhcmFjdGVycyA8Y29kZT4mbHNxdW87LiZyc3F1bzs8XC9jb2RlPiwgPGNvZGU+JmxzcXVvO08mcnNxdW87PFwvY29kZT4sIG9yIDxjb2RlPiZsc3F1bztYJnJzcXVvOzxcL2NvZGU+LiA8Y29kZT4mbHNxdW87LiZyc3F1bzs8XC9jb2RlPiByZXByZXNlbnRzIGFuIGVtcHR5IGNlbGwgd2l0aG91dCBhbnkgaW5mb3JtYXRpb24sIDxjb2RlPiZsc3F1bztPJnJzcXVvOzxcL2NvZGU+IHJlcHJlc2VudHMgYSBjZWxsIHRvIGJlIGNvbG9yZWQsIGFuZCA8Y29kZT4mbHNxdW87WCZyc3F1bzs8XC9jb2RlPiByZXByZXNlbnRzIGEgY2VsbCB0aGF0IG11c3QgcmVtYWluIGVtcHR5LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlByaW50IHRoZSBudW1iZXIgb2Ygd2F5cyB0byBmaWxsIHRoZSByb3csIG1vZHVsbyAkMTBeOSs3JC48XC9wPlxyXG4iLCJoaW50IjoiPHA+SGVyZSBpcyB0aGUgc291cmNlIG9mIHRoZSBOb25vZ3JhbSBpbWFnZSB1c2VkIGluIHRoZSBwcm9ibGVtLjxcL3A+XHJcblxyXG48cD5odHRwczpcL1wvd3d3Lm5vbm9ncmFtcy5vcmdcL25vbm9ncmFtc1wvaVwvMjgwOTg8XC9wPlxyXG4iLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2giLCJzYW1wbGVfZXhwbGFpbl8xIjoiPHA+VGhlcmUgYXJlIGZvdXIgd2F5cyB0byBmaWxsIHRoZSByb3csIGFzIGZvbGxvd3MuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+PGNvZGU+T09YLi5YT09PLjxcL2NvZGU+PFwvbGk+XHJcblx0PGxpPjxjb2RlPk9PWC4uWC5PT088XC9jb2RlPjxcL2xpPlxyXG5cdDxsaT48Y29kZT4uLlhPT1hPT08uPFwvY29kZT48XC9saT5cclxuXHQ8bGk+PGNvZGU+Li5YT09YLk9PTzxcL2NvZGU+PFwvbGk+XHJcbjxcL3VsPlxyXG4ifV0=