시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 512 MB 8 8 5 100.000%

문제

수학 선생님 Albert는 사탕을 좋아하는 반 아이들을 위해 재미있는 놀이를 고안했다. 아이들은 아직 어려서 자연수만 알고 있고, 각 아이마다 알고 있는 자연수의 범위가 다르다. 편의상 아이들은 1부터 n까지 번호가 붙어있다고 하고, i번째 아이는 1이상 x[i] 이하의 자연수를 알고 있다고 가정하자. 

놀이는 아래와 같은 규칙에 따라 진행된다.

  1. 각 턴이 시작되면 아이들은 각자 알고 있는 자연수 중 아무 수나 골라서 종이에 적는다.
  2. 모두 원하는 수를 적었으면, Albert 선생님이 n장의 종이를 모은다.
  3. Albert 선생님은 이 수들을 비내림차순으로 정렬하여 길이 n인 수열을 만든다 (수열 A라고 하자).
  4. 만약 수열 A가 이전 턴에 한 번이라도 만들어진 적이 있으면 수열은 버려지고 게임은 계속 진행된다. 
  5. 만약 수열 A가 이전 턴에 만들어진 적이 없다면, Albert선생님이 아이들에게 사탕을 하나씩 나누어주고 게임이 계속 진행된다.
  6. 모든 가능한 (정렬된) 수열이 만들어진 후에 게임이 완전히 끝나게 된다.

모든 아이들이 자연수의 일부만 알고 있기 때문에 이 게임은 언젠가 끝나게 된다. 하지만 Albert 선생님은 미리 사탕을 준비해야 하므로 최대 몇 개를 나눠줘야 할지 알고 싶다. 학생 수 n과 각 학생이 알고 있는 자연수의 범위가 주어졌을 때, Albert 선생님이 나눠줘야 하는 사탕의 최대 수를 구해서 선생님을 도와주도록 하자. 다만 이 수는 매우 클 수 있으므로 1,000,000,007로 나눈 나머지를 구해주기로 했다.

예를 들어 Albert선생님의 반에 두 명의 아이가 있고 이 두 아이는 각자 1이상 3이하의 자연수만 안다고 해보자. 이 경우 총 여섯 종류의 (비내림차순으로) 정렬된 수열을 얻을 수 있다: {1, 1}, {1, 2}, {1, 3}, {2, 2}, {2, 3}, {3, 3}. 각 수열에 대해 처음으로 만들어지는 턴에 Albert 선생님이 사탕 두 개를 나누어 주어야 하므로 총 12개의 사탕을 미리 준비해놔야 한다.

입력

첫 줄에 테스트 케이스의 수 T가 주어진다 (1 <= T <= 10).

각 테스트 케이스는 두 줄에 걸쳐서 주어진다. 첫 줄에 학생 수 n이 주어지고 (1 <= n <= 200) 둘째 줄에 배열 x[]를 표현하는  n개의 자연수가 공백으로 구분되어 주어진다. 각 i에 대해 1 <= x[i] <= 200을 만족한다.

출력

각 테스트 케이스에 대해 Albert선생님이 준비해야 하는 사탕의 최대 수를 1,000,000,007로 나눈 나머지를 출력한다. 

예제 입력 1

4
1
3
2
3 3
3
1 2 3
6
95 96 97 98 99 100

예제 출력 1

3
12
15
627383157

힌트

  • 케이스 1: 아이 한 명이 1이상 3이하의 수를 알기 때문에 정답은 3이다. 정렬된 수열은 {1}, {2}, 그리고 {3} 이렇게 세 가지 존재한다.
  • 케이스 2: 문제에서 예시로 사용되었다.
  • 케이스 3: 이 경우 총 다섯 개의 정렬된 수열이 존재한다: {1, 1, 1}, {1, 1, 2}, {1, 1, 3}, {1, 2, 2}, {1, 2, 3}. 학생이 세 명 있기 때문에 이 수열 각각이 처음으로 만들어지는 턴에 Albert는 사탕을 3개씩 나눠주어야 하므로 총 15개의 사탕을 준비해야 한다.
  • 케이스 4: 답이 매우 커질 수 있으므로 1,000,000,007로 나눈 나머지를 출력해야 함에 유의하자. 이 경우 총 1,604,563,870 가지의 정렬된 수열이 존재하고 여섯 명의 아이가 있으므로 사탕은 총 9,627,383,220 개 필요하다. 9,627,383,220 를 1,000,000,007 으로 나눈 나머지는 627,383,157이다.
W3sicHJvYmxlbV9pZCI6IjE3MTM3IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVjMGFjXHVkMGQ1IFx1YjE4MFx1Yzc3NCIsImRlc2NyaXB0aW9uIjoiPHA+XHVjMjE4XHVkNTU5IFx1YzEyMFx1YzBkZFx1YjJkOCBBbGJlcnRcdWIyOTQgXHVjMGFjXHVkMGQ1XHVjNzQ0IFx1Yzg4Ylx1YzU0NFx1ZDU1OFx1YjI5NCBcdWJjMTggXHVjNTQ0XHVjNzc0XHViNGU0XHVjNzQ0IFx1YzcwNFx1ZDU3NCBcdWM3YWNcdWJiZjhcdWM3ODhcdWIyOTQgXHViMTgwXHVjNzc0XHViOTdjIFx1YWNlMFx1YzU0OFx1ZDU4OFx1YjJlNC4gXHVjNTQ0XHVjNzc0XHViNGU0XHVjNzQwIFx1YzU0NFx1YzljMSBcdWM1YjRcdWI4MjRcdWMxMWMgXHVjNzkwXHVjNWYwXHVjMjE4XHViOWNjIFx1YzU0Y1x1YWNlMCBcdWM3ODhcdWFjZTAsIFx1YWMwMSBcdWM1NDRcdWM3NzRcdWI5YzhcdWIyZTQgXHVjNTRjXHVhY2UwIFx1Yzc4OFx1YjI5NCBcdWM3OTBcdWM1ZjBcdWMyMThcdWM3NTggXHViYzk0XHVjNzA0XHVhYzAwIFx1YjJlNFx1Yjk3NFx1YjJlNC4gXHVkM2I4XHVjNzU4XHVjMGMxIFx1YzU0NFx1Yzc3NFx1YjRlNFx1Yzc0MCAxXHViZDgwXHVkMTMwIG5cdWFlNGNcdWM5YzAgXHViYzg4XHVkNjM4XHVhYzAwIFx1YmQ5OVx1YzViNFx1Yzc4OFx1YjJlNFx1YWNlMCBcdWQ1NThcdWFjZTAsIGlcdWJjODhcdWM5ZjggXHVjNTQ0XHVjNzc0XHViMjk0IDFcdWM3NzRcdWMwYzEgeFtpXSBcdWM3NzRcdWQ1NThcdWM3NTggXHVjNzkwXHVjNWYwXHVjMjE4XHViOTdjIFx1YzU0Y1x1YWNlMCBcdWM3ODhcdWIyZTRcdWFjZTAgXHVhYzAwXHVjODE1XHVkNTU4XHVjNzkwLiZuYnNwOzxcL3A+XHJcblxyXG48cD5cdWIxODBcdWM3NzRcdWIyOTQgXHVjNTQ0XHViNzk4XHVjNjQwIFx1YWMxOVx1Yzc0MCBcdWFkZGNcdWNlNTlcdWM1ZDAgXHViNTMwXHViNzdjIFx1YzljNFx1ZDU4OVx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT5cdWFjMDEgXHVkMTM0XHVjNzc0IFx1YzJkY1x1Yzc5MVx1YjQxOFx1YmE3NCBcdWM1NDRcdWM3NzRcdWI0ZTRcdWM3NDAgXHVhYzAxXHVjNzkwIFx1YzU0Y1x1YWNlMCBcdWM3ODhcdWIyOTQgXHVjNzkwXHVjNWYwXHVjMjE4IFx1YzkxMSBcdWM1NDRcdWJiMzQgXHVjMjE4XHViMDk4IFx1YWNlOFx1Yjc3Y1x1YzExYyBcdWM4ODVcdWM3NzRcdWM1ZDAgXHVjODAxXHViMjk0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWJhYThcdWI0NTAgXHVjNmQwXHVkNTU4XHViMjk0IFx1YzIxOFx1Yjk3YyBcdWM4MDFcdWM1YzhcdWM3M2NcdWJhNzQsIEFsYmVydCBcdWMxMjBcdWMwZGRcdWIyZDhcdWM3NzQgblx1YzdhNVx1Yzc1OCBcdWM4ODVcdWM3NzRcdWI5N2MgXHViYWE4XHVjNzQwXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5BbGJlcnQgXHVjMTIwXHVjMGRkXHViMmQ4XHVjNzQwIFx1Yzc3NCBcdWMyMThcdWI0ZTRcdWM3NDQgXHViZTQ0XHViMGI0XHViOWJjXHVjYzI4XHVjMjFjXHVjNzNjXHViODVjIFx1YzgxNVx1YjgyY1x1ZDU1OFx1YzVlYyBcdWFlMzhcdWM3NzQgblx1Yzc3OCBcdWMyMThcdWM1ZjRcdWM3NDQgXHViOWNjXHViNGUwXHViMmU0IChcdWMyMThcdWM1ZjQgQVx1Yjc3Y1x1YWNlMCBcdWQ1NThcdWM3OTApLjxcL2xpPlxyXG5cdDxsaT5cdWI5Y2NcdWM1N2QgXHVjMjE4XHVjNWY0IEFcdWFjMDAgXHVjNzc0XHVjODA0IFx1ZDEzNFx1YzVkMCBcdWQ1NWMgXHViYzg4XHVjNzc0XHViNzdjXHViM2M0IFx1YjljY1x1YjRlNFx1YzViNFx1YzljNCBcdWM4MDFcdWM3NzQgXHVjNzg4XHVjNzNjXHViYTc0IFx1YzIxOFx1YzVmNFx1Yzc0MCBcdWJjODRcdWI4MjRcdWM5YzBcdWFjZTAgXHVhYzhjXHVjNzg0XHVjNzQwIFx1YWNjNFx1YzE4ZCBcdWM5YzRcdWQ1ODlcdWI0MWNcdWIyZTQuJm5ic3A7PFwvbGk+XHJcblx0PGxpPlx1YjljY1x1YzU3ZCBcdWMyMThcdWM1ZjQgQVx1YWMwMCBcdWM3NzRcdWM4MDQgXHVkMTM0XHVjNWQwIFx1YjljY1x1YjRlNFx1YzViNFx1YzljNCBcdWM4MDFcdWM3NzQgXHVjNWM2XHViMmU0XHViYTc0LCBBbGJlcnRcdWMxMjBcdWMwZGRcdWIyZDhcdWM3NzQgXHVjNTQ0XHVjNzc0XHViNGU0XHVjNWQwXHVhYzhjIFx1YzBhY1x1ZDBkNVx1Yzc0NCBcdWQ1NThcdWIwOThcdWM1MjkgXHViMDk4XHViMjA0XHVjNWI0XHVjOGZjXHVhY2UwIFx1YWM4Y1x1Yzc4NFx1Yzc3NCBcdWFjYzRcdWMxOGQgXHVjOWM0XHVkNTg5XHViNDFjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWJhYThcdWI0ZTAgXHVhYzAwXHViMmE1XHVkNTVjIChcdWM4MTVcdWI4MmNcdWI0MWMpIFx1YzIxOFx1YzVmNFx1Yzc3NCBcdWI5Y2NcdWI0ZTRcdWM1YjRcdWM5YzQgXHVkNmM0XHVjNWQwIFx1YWM4Y1x1Yzc4NFx1Yzc3NCBcdWM2NDRcdWM4MDRcdWQ3ODggXHViMDVkXHViMDk4XHVhYzhjIFx1YjQxY1x1YjJlNC48XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5cdWJhYThcdWI0ZTAgXHVjNTQ0XHVjNzc0XHViNGU0XHVjNzc0IFx1Yzc5MFx1YzVmMFx1YzIxOFx1Yzc1OCBcdWM3N2NcdWJkODBcdWI5Y2MgXHVjNTRjXHVhY2UwIFx1Yzc4OFx1YWUzMCBcdWI1NGNcdWJiMzhcdWM1ZDAgXHVjNzc0IFx1YWM4Y1x1Yzc4NFx1Yzc0MCBcdWM1YjhcdWM4MjBcdWFjMDAgXHViMDVkXHViMDk4XHVhYzhjIFx1YjQxY1x1YjJlNC4gXHVkNTU4XHVjOWMwXHViOWNjIEFsYmVydCBcdWMxMjBcdWMwZGRcdWIyZDhcdWM3NDAgXHViYmY4XHViOWFjIFx1YzBhY1x1ZDBkNVx1Yzc0NCBcdWM5MDBcdWJlNDRcdWQ1NzRcdWM1N2MgXHVkNTU4XHViYmMwXHViODVjIFx1Y2Q1Y1x1YjMwMCBcdWJhODcgXHVhYzFjXHViOTdjIFx1YjA5OFx1YjIyMFx1YzkxOFx1YzU3YyBcdWQ1NjBcdWM5YzAgXHVjNTRjXHVhY2UwIFx1YzJmNlx1YjJlNC4gXHVkNTU5XHVjMGRkIFx1YzIxOCBuXHVhY2ZjIFx1YWMwMSBcdWQ1NTlcdWMwZGRcdWM3NzQgXHVjNTRjXHVhY2UwIFx1Yzc4OFx1YjI5NCBcdWM3OTBcdWM1ZjBcdWMyMThcdWM3NTggXHViYzk0XHVjNzA0XHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIEFsYmVydCBcdWMxMjBcdWMwZGRcdWIyZDhcdWM3NzQgXHViMDk4XHViMjIwXHVjOTE4XHVjNTdjIFx1ZDU1OFx1YjI5NCBcdWMwYWNcdWQwZDVcdWM3NTggXHVjZDVjXHViMzAwIFx1YzIxOFx1Yjk3YyBcdWFkNmNcdWQ1NzRcdWMxMWMgXHVjMTIwXHVjMGRkXHViMmQ4XHVjNzQ0IFx1YjNjNFx1YzY0MFx1YzhmY1x1YjNjNFx1Yjg1ZCBcdWQ1NThcdWM3OTAuIFx1YjJlNFx1YjljYyBcdWM3NzQgXHVjMjE4XHViMjk0IFx1YjllNFx1YzZiMCBcdWQwNzQgXHVjMjE4IFx1Yzc4OFx1YzczY1x1YmJjMFx1Yjg1YyAxLDAwMCwwMDAsMDA3XHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWI5N2MgXHVhZDZjXHVkNTc0XHVjOGZjXHVhZTMwXHViODVjIFx1ZDU4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHViOTdjIFx1YjRlNFx1YzViNCBBbGJlcnRcdWMxMjBcdWMwZGRcdWIyZDhcdWM3NTggXHViYzE4XHVjNWQwIFx1YjQ1MCBcdWJhODVcdWM3NTggXHVjNTQ0XHVjNzc0XHVhYzAwIFx1Yzc4OFx1YWNlMCBcdWM3NzQgXHViNDUwIFx1YzU0NFx1Yzc3NFx1YjI5NCBcdWFjMDFcdWM3OTAgMVx1Yzc3NFx1YzBjMSAzXHVjNzc0XHVkNTU4XHVjNzU4IFx1Yzc5MFx1YzVmMFx1YzIxOFx1YjljYyBcdWM1NDhcdWIyZTRcdWFjZTAgXHVkNTc0XHViY2Y0XHVjNzkwLiBcdWM3NzQgXHVhY2JkXHVjNmIwIFx1Y2QxZCBcdWM1ZWNcdWMxMmYgXHVjODg1XHViOTU4XHVjNzU4IChcdWJlNDRcdWIwYjRcdWI5YmNcdWNjMjhcdWMyMWNcdWM3M2NcdWI4NWMpIFx1YzgxNVx1YjgyY1x1YjQxYyBcdWMyMThcdWM1ZjRcdWM3NDQgXHVjNWJiXHVjNzQ0IFx1YzIxOCBcdWM3ODhcdWIyZTQ6IHsxLCAxfSwgezEsIDJ9LCB7MSwgM30sIHsyLCAyfSwgezIsIDN9LCB7MywgM30uIFx1YWMwMSBcdWMyMThcdWM1ZjRcdWM1ZDAgXHViMzAwXHVkNTc0IFx1Y2M5OFx1Yzc0Y1x1YzczY1x1Yjg1YyBcdWI5Y2NcdWI0ZTRcdWM1YjRcdWM5YzBcdWIyOTQgXHVkMTM0XHVjNWQwIEFsYmVydCBcdWMxMjBcdWMwZGRcdWIyZDhcdWM3NzQgXHVjMGFjXHVkMGQ1IFx1YjQ1MCBcdWFjMWNcdWI5N2MgXHViMDk4XHViMjA0XHVjNWI0IFx1YzhmY1x1YzViNFx1YzU3YyBcdWQ1NThcdWJiYzBcdWI4NWMgXHVjZDFkIDEyXHVhYzFjXHVjNzU4IFx1YzBhY1x1ZDBkNVx1Yzc0NCBcdWJiZjhcdWI5YWMgXHVjOTAwXHViZTQ0XHVkNTc0XHViMTk0XHVjNTdjIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYiBcdWM5MDRcdWM1ZDAgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1Yzc1OCBcdWMyMTggVFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQgKDEgJmx0Oz0gVCAmbHQ7PSAxMCkuPFwvcD5cclxuXHJcbjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHViMjk0IFx1YjQ1MCBcdWM5MDRcdWM1ZDAgXHVhYzc4XHVjY2QwXHVjMTFjIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVjY2FiIFx1YzkwNFx1YzVkMCBcdWQ1NTlcdWMwZGQgXHVjMjE4IG5cdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWMwXHVhY2UwICgxICZsdDs9IG4gJmx0Oz0gMjAwKSBcdWI0NThcdWM5ZjggXHVjOTA0XHVjNWQwIFx1YmMzMFx1YzVmNCB4W11cdWI5N2MgXHVkNDVjXHVkNjA0XHVkNTU4XHViMjk0ICZuYnNwO25cdWFjMWNcdWM3NTggXHVjNzkwXHVjNWYwXHVjMjE4XHVhYzAwIFx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MThcdWM1YjQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWFjMDEgaVx1YzVkMCBcdWIzMDBcdWQ1NzQgMSAmbHQ7PSB4W2ldICZsdDs9IDIwMFx1Yzc0NCBcdWI5Y2NcdWM4NzFcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM1ZDAgXHViMzAwXHVkNTc0IEFsYmVydFx1YzEyMFx1YzBkZFx1YjJkOFx1Yzc3NCBcdWM5MDBcdWJlNDRcdWQ1NzRcdWM1N2MgXHVkNTU4XHViMjk0IFx1YzBhY1x1ZDBkNVx1Yzc1OCBcdWNkNWNcdWIzMDAgXHVjMjE4XHViOTdjIDEsMDAwLDAwMCwwMDdcdWI4NWMgXHViMDk4XHViMjA4IFx1YjA5OFx1YmEzOFx1YzljMFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuJm5ic3A7PFwvcD5cclxuIiwiaGludCI6Ijx1bD5cclxuXHQ8bGk+XHVjZjAwXHVjNzc0XHVjMmE0IDE6IFx1YzU0NFx1Yzc3NCBcdWQ1NWMgXHViYTg1XHVjNzc0IDFcdWM3NzRcdWMwYzEgM1x1Yzc3NFx1ZDU1OFx1Yzc1OCBcdWMyMThcdWI5N2MgXHVjNTRjXHVhZTMwIFx1YjU0Y1x1YmIzOFx1YzVkMCBcdWM4MTVcdWIyZjVcdWM3NDAgM1x1Yzc3NFx1YjJlNC4gXHVjODE1XHViODJjXHViNDFjIFx1YzIxOFx1YzVmNFx1Yzc0MCB7MX0sIHsyfSwgXHVhZGY4XHViOWFjXHVhY2UwIHszfSBcdWM3NzRcdWI4MDdcdWFjOGMgXHVjMTM4IFx1YWMwMFx1YzljMCBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1Y2YwMFx1Yzc3NFx1YzJhNCAyOiBcdWJiMzhcdWM4MWNcdWM1ZDBcdWMxMWMgXHVjNjA4XHVjMmRjXHViODVjIFx1YzBhY1x1YzZhOVx1YjQxOFx1YzVjOFx1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVjZjAwXHVjNzc0XHVjMmE0IDM6IFx1Yzc3NCBcdWFjYmRcdWM2YjAgXHVjZDFkIFx1YjJlNFx1YzEyZiBcdWFjMWNcdWM3NTggXHVjODE1XHViODJjXHViNDFjIFx1YzIxOFx1YzVmNFx1Yzc3NCBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQ6IHsxLCAxLCAxfSwgezEsIDEsIDJ9LCB7MSwgMSwgM30sIHsxLCAyLCAyfSwgezEsIDIsIDN9LiBcdWQ1NTlcdWMwZGRcdWM3NzQgXHVjMTM4IFx1YmE4NSBcdWM3ODhcdWFlMzAgXHViNTRjXHViYjM4XHVjNWQwIFx1Yzc3NCBcdWMyMThcdWM1ZjQgXHVhYzAxXHVhYzAxXHVjNzc0IFx1Y2M5OFx1Yzc0Y1x1YzczY1x1Yjg1YyBcdWI5Y2NcdWI0ZTRcdWM1YjRcdWM5YzBcdWIyOTQgXHVkMTM0XHVjNWQwIEFsYmVydFx1YjI5NCBcdWMwYWNcdWQwZDVcdWM3NDQgM1x1YWMxY1x1YzUyOSBcdWIwOThcdWIyMjBcdWM4ZmNcdWM1YjRcdWM1N2MgXHVkNTU4XHViYmMwXHViODVjIFx1Y2QxZCAxNVx1YWMxY1x1Yzc1OCBcdWMwYWNcdWQwZDVcdWM3NDQgXHVjOTAwXHViZTQ0XHVkNTc0XHVjNTdjIFx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVjZjAwXHVjNzc0XHVjMmE0IDQ6IFx1YjJmNVx1Yzc3NCBcdWI5ZTRcdWM2YjAgXHVjZWU0XHVjOWM4IFx1YzIxOCBcdWM3ODhcdWM3M2NcdWJiYzBcdWI4NWMgMSwwMDAsMDAwLDAwN1x1Yjg1YyBcdWIwOThcdWIyMDggXHViMDk4XHViYTM4XHVjOWMwXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3YyBcdWQ1NjhcdWM1ZDAgXHVjNzIwXHVjNzU4XHVkNTU4XHVjNzkwLiBcdWM3NzQgXHVhY2JkXHVjNmIwIFx1Y2QxZCAxLDYwNCw1NjMsODcwIFx1YWMwMFx1YzljMFx1Yzc1OCBcdWM4MTVcdWI4MmNcdWI0MWMgXHVjMjE4XHVjNWY0XHVjNzc0IFx1Yzg3NFx1YzdhY1x1ZDU1OFx1YWNlMCBcdWM1ZWNcdWMxMmYgXHViYTg1XHVjNzU4IFx1YzU0NFx1Yzc3NFx1YWMwMCBcdWM3ODhcdWM3M2NcdWJiYzBcdWI4NWMgXHVjMGFjXHVkMGQ1XHVjNzQwIFx1Y2QxZCA5LDYyNywzODMsMjIwIFx1YWMxYyBcdWQ1NDRcdWM2OTRcdWQ1NThcdWIyZTQuIDksNjI3LDM4MywyMjAgXHViOTdjIDEsMDAwLDAwMCwwMDcgXHVjNzNjXHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWIyOTQgNjI3LDM4MywxNTdcdWM3NzRcdWIyZTQuPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJvcmlnaW5hbCI6IjEiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1ZDU1Y1x1YWQ2ZFx1YzViNCJ9LHsicHJvYmxlbV9pZCI6IjE3MTM3IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiTnVtYmVyIEdhbWUiLCJkZXNjcmlwdGlvbiI6IjxwPkFsYmVydCBpcyBhIHRlYWNoZXIsIGFuZCBoZSZyc3F1bztzIHRlYWNoaW5nIG4gY2hpbGRyZW4gaW4gaGlzIG1hdGggY2xhc3MuIEV2ZXJ5b25lIGxvdmVzIGNhbmRpZXMsIHNvIGhlJnJzcXVvO3MgaW52ZW50ZWQgYSBmdW4gZ2FtZSBmb3IgdGhlbSB0byBwbGF5IHdoaWxlIGhlIGNhbiBnZXQgdGhlaXIgYXR0ZW50aW9uIGJ5IGdpdmluZyBvdXQgY2FuZGllcy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+SGVyZSBpcyBob3cgdGhlIGdhbWUgd29ya3MuIEFzc3VtZSB0aGF0IHRoZSBjaGlsZHJlbiBpbiBBbGJlcnQmcnNxdW87cyBjbGFzcyBhcmUgbnVtYmVyZWQgZnJvbSAxIHRvIG4gKHRoZXJlIGFyZSBuIGNoaWxkcmVuIGluIGhpcyBjbGFzcykuIENoaWxkIGkga25vd3Mgb2YgaW50ZWdlcnMgYmV0d2VlbiAxIGFuZCB4W2ldLCBpbmNsdXNpdmUuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZSBnYW1lIHBsYXlzIG91dCBmb3IgcG9zc2libHkgbWFueSB0dXJucyBhcyBmb2xsb3dzLjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPkF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCB0dXJuLCBldmVyeSBjaGlsZCBwaWNrcyBhbiBhcmJpdHJhcnkgbnVtYmVyIHRoYXQgaGVcL3NoZSBrbm93cyBvZiwgYW5kIHdyaXRlcyBpdCBkb3duIG9uIGEgcGllY2Ugb2YgcGFwZXIuJm5ic3A7PFwvbGk+XHJcblx0PGxpPkFmdGVyIGV2ZXJ5b25lIGZpbmlzaGVzIHdyaXRpbmcsIEFsYmVydCBjb2xsZWN0cyBuIHBpZWNlcyBvZiBwYXBlci48XC9saT5cclxuXHQ8bGk+QWxiZXJ0IHRoZW4gc29ydHMgdGhlIG51bWJlcnMgaW4gbm9uLWRlY3JlYXNpbmcgb3JkZXIsIGFuZCBvYnRhaW5zIGEgc29ydGVkIGxpc3Qgb2YgbnVtYmVycy48XC9saT5cclxuXHQ8bGk+SWYgdGhpcyBzb3J0ZWQgbGlzdCB3YXMgb2J0YWluZWQgaW4gYW55IG9mIHRoZSBwcmV2aW91cyB0dXJucywgdGhlIGxpc3QgaXMgZGlzY2FyZGVkIGFuZCB0aGUgZ2FtZSBjb250aW51ZXMuIElmIGl0IGhhcyBub3QgYmVlbiBvYnRhaW5lZCBwcmV2aW91c2x5LCB0aGVuIGV2ZXJ5IGNoaWxkIHdpbGwgZ2V0IGEgY2FuZHkgZnJvbSBBbGJlcnQsIGFuZCB0aGUgZ2FtZSBjb250aW51ZXMuPFwvbGk+XHJcblx0PGxpPlRoZSBnYW1lIHdpbGwgZW5kIHdoZW4gZXZlcnkgcG9zc2libGUgc29ydGVkIGxpc3Qgb2YgbnVtYmVycyBoYXMgYmVlbiBvYnRhaW5lZC48XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5CZWNhdXNlIGV2ZXJ5b25lIGtub3dzIG9mIG9ubHkgYSBmaW5pdGUgbnVtYmVyIG9mIGludGVnZXJzLCB0aGUgZ2FtZSB3aWxsIGV2ZW50dWFsbHkgZW5kLCBidXQgQWxiZXJ0IG5lZWRzIHRvIGZpZ3VyZSBvdXQgaG93IG1hbnkgY2FuZGllcyBoZSBuZWVkcyB0byBwcmVwYXJlIGluIHRoZSB3b3JzdCBjYXNlLiBHaXZlbiBuICh0aGUgbnVtYmVyIG9mIGNoaWxkcmVuKSBhbmQgYW4gYXJyYXkgeFtdICh3aGVyZSB4W2ldIGlzIHRoZSBsYXJnZXN0IG51bWJlciBjaGlsZCBpIGtub3dzIG9mKSwgY29tcHV0ZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2FuZGllcyBBbGJlcnQgd2lsbCBuZWVkIHRvIGdpdmUgb3V0IGlmIHRoZSBnYW1lIHBsYXlzIG91dCB1bnRpbCBldmVyeSBzb3J0ZWQgbGlzdCBoYXMgYmVlbiBvYnRhaW5lZC4gVGhpcyBudW1iZXIgY2FuIGJlIHF1aXRlIGxhcmdlLCBzbyB5b3Ugb25seSBuZWVkIHRvIGNvbXB1dGUgdGhpcyBudW1iZXIgbW9kdWxvIDEsMDAwLDAwMCwwMDcuPFwvcD5cclxuXHJcbjxwPkZvciBpbnN0YW5jZSwgc3VwcG9zZSB0aGF0IHRoZXJlIGFyZSB0d28gY2hpbGRyZW4gQWxpY2UgYW5kIEVsaXNlIGluIEFsYmVydCZyc3F1bztzIGNsYXNzIGFuZCBBbGljZSBrbm93cyAzIGludGVnZXJzICgxLCAyLCBhbmQgMykgYW5kIEVsaXNlIGtub3dzIDMgaW50ZWdlcnMgKDEsIDIsIGFuZCAzKS4gSW4gdGhpcyBjYXNlLCB0aGVyZSBhcmUgc2l4IHNvcnRlZCBsaXN0cyBvZiB0d28gaW50ZWdlcnMgdGhhdCBjYW4gYmUgb2J0YWluZWQgZHVyaW5nIHRoZSBnYW1lOiB7MSwgMX0sIHsxLCAyfSwgezEsIDN9LCB7MiwgMn0sIHsyLCAzfSwgYW5kIHszLCAzfS4gRWFjaCB0aW1lIG9uZSBvZiB0aGVzZSBsaXN0cyBpcyBvYnRhaW5lZCBmb3IgdGhlIGZpcnN0IHRpbWUsIEFsYmVydCB3aWxsIG5lZWQgdG8gZ2l2ZSBvdXQgdHdvIGNhbmRpZXMsIGFuZCB0aGVyZWZvcmUgQWxiZXJ0IHdpbGwgbmVlZCAxMiBjYW5kaWVzLiZuYnNwOzxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIGZpcnN0IGxpbmUgd2lsbCBjb250YWluIFQgKDEgJmx0Oz0gVCAmbHQ7PSAxMCksIHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlcy48XC9wPlxyXG5cclxuPHA+RWFjaCB0ZXN0IGNhc2Ugd2lsbCBjb25zaXN0IG9mIHR3byBsaW5lcy4gVGhlIGZpcnN0IGxpbmUgd2lsbCBjb250YWluIG4gKDEgJmx0Oz0gbiAmbHQ7PSAyMDApLCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIEFsYmVydCZyc3F1bztzIG1hdGggY2xhc3MuIFRoZSBzZWNvbmQgbGluZSB3aWxsIGNvbnRhaW4gbiBpbnRlZ2VycyAoZGVsaW1pdGVkIGJ5IGEgd2hpdGVzcGFjZSkgdGhhdCBkZXNjcmliZSB0aGUgYXJyYXkgeFtdLiBBc3N1bWUgdGhhdCAxICZsdDs9IHhbaV0gJmx0Oz0gMjAwIGZvciBhbGwgaS48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Gb3IgZWFjaCB0ZXN0IGNhc2UsIG91dHB1dCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2FuZGllcyBBbGJlcnQgbmVlZHMgdG8gZ2l2ZSBvdXQuPFwvcD5cclxuIiwiaGludCI6Ijx1bD5cclxuXHQ8bGk+Q2FzZSAxOiBXaXRoIG9ubHkgb25lIGNoaWxkIHdobyBrbm93cyAzIGludGVnZXJzLCB0aGUgYW5zd2VyIGlzIHRyaXZpYWxseSAzLiBUaGUgdGhyZWUgc29ydGVkIGxpc3RzIGFyZTogezF9LCB7Mn0sIGFuZCB7M30gYW5kIGVhY2ggdGltZSBvbmUgb2YgdGhlc2UgbGlzdHMgaXMgb2J0YWluZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCBBbGJlcnQgd2lsbCBuZWVkIHRvIGdpdmUgb3V0IG9uZSBjYW5keS48XC9saT5cclxuXHQ8bGk+Q2FzZSAyOiBUaGlzIGlzIGRlc2NyaWJlZCBpbiB0aGUgcHJvYmxlbSBzdGF0ZW1lbnQuJm5ic3A7PFwvbGk+XHJcblx0PGxpPkNhc2UgMzogVGhlIG51bWJlciBvZiBzb3J0ZWQgbGlzdHMgaXMgZml2ZTogezEsIDEsIDF9LCB7MSwgMSwgMn0sIHsxLCAxLCAzfSwgezEsIDIsIDJ9LCB7MSwgMiwgM30uIFNpbmNlIHRoZXJlIGFyZSB0aHJlZSBjaGlsZHJlbiwgQWxiZXJ0IHdpbGwgbmVlZCB0byBwcmVwYXJlIDE1IGNhbmRpZXMuPFwvbGk+XHJcblx0PGxpPkNhc2UgNDogUmVjYWxsIHRoYXQgeW91IHdpbGwgbmVlZCB0byBjb21wdXRlIHRoZSBhbnN3ZXIgbW9kdWxvIDEsMDAwLDAwMCwwMDcgYmVjYXVzZSB0aGUgYW5zd2VyIGNhbiBiZWNvbWUgcXVpdGUgbGFyZ2UuIFRoZXJlIGFyZSAxLDYwNCw1NjMsODcwIHNvcnRlZCBsaXN0cyBpbiB0aGlzIGNhc2UsIGFuZCB0aGVyZSBhcmUgc2l4IGNoaWxkcmVuIChoZW5jZSBBbGJlcnQgbmVlZHMgdG8gcHJlcGFyZSA5LDYyNywzODMsMjIwIGNhbmRpZXMpLiA5LDYyNywzODMsMjIwIG1vZHVsbyAxLDAwMCwwMDAsMDA3IGlzIGVxdWFsIHRvIDYyNywzODMsMTU3LjxcL2xpPlxyXG48XC91bD5cclxuIiwib3JpZ2luYWwiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWM2MDFcdWM1YjQifV0=