시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 24 10 10 41.667%

문제

격자점은 좌표가 정수인 점을 뜻한다.격자 다각형은 모든 꼭지점이 격자점인 다각형이다.

다각형의 경계에 있는 격자점을 경계점이라 한다. (위 그림에서 열린 점) 또한 다각형 위에 있지 않은 내부의 격자점을 내부점이라 한다. (위 그림에서 닫힌 점)

다각형의 내부에 있는 어떠한 두 점을 골라 만든 선분이 모두 다각형의 내부 또는 경계에 있다면 그 다각형을 볼록하다고 한다. 즉, 내각의 크기가 모두 180도보다 작다. 다각형 내부(경계 위의 점은 제외한다)에 있는 두 점 사이의 모든 선분도 다각형의 내부에 완벽하게 들어간다.

볼록 격자 다각형의 내부점 중 수평선 상의 점에는 가장 왼쪽 점과 가장 오른쪽 점이 존재한다. (가장 왼쪽 점과 가장 오른쪽 점이 같을 수 있다) 아래 그림 A처럼 내부점이 없거나, B처럼 하나뿐인 경우가 있을 수도 있다. 그림 C의 경우 아래 그림과 같다.

볼록 격자 다각형을 아래와 같은 순서로 입력 받아, 수평선을 이루는 내부점을 모두 출력하는 프로그램을 작성하시오.

1. 첫 번째 점은 y값이 가장 큰 점이다. 만약 y값이 같은 점이 있다면 x값이 작은 순으로 주어진다.

2. 점은 시계방향으로 주어진다.

입력

입력의 첫 줄에는 테스트의 개수 P(1 ≤ P ≤ 1000)가 주어진다.

각각의 테스트 첫 줄에는 다각형 점의 개수를 나타내는 정수 N(3 ≤ N ≤ 50)이 주어진다. 나머지 줄에는 위에 설명된 순서대로 점의 x좌표와 y좌표를 나타내는 정수 두 개가 공백을 사이에 두고 주어진다.

출력

첫 줄에는 수평선의 개수를 출력한다. 만약, 수평선이 하나 이상 있다면, 수평선의 y 좌표 값을 한 줄에 하나씩 출력한다. 이 때 y좌표 내림차순으로 출력한다. 각각의 y좌표 값 뒤에 공백을 사이에 두고 가장 왼쪽 x좌표와 가장 오른쪽 x좌표를 출력한다.

예제 입력 1

6
8
5 10
8 9
11 6
10 2
6 0
1 1
0 4
2 8
4
3 10
13 7
10 -3
0 0
3
1 3
3 1
1 1
3
1 4
4 1
1 1
4
0 6
2 3
3 0
1 3
6
1 3
3 3
4 2
3 1
1 1
0 2

예제 출력 1

9
9 4 7
8 3 8
7 2 9
6 2 10
5 1 10
4 1 10
3 1 10
2 1 9
1 2 7
12
9 3 6
8 3 9
7 3 12
6 2 12
5 2 12
4 2 12
3 1 11
2 1 11
1 1 11
0 1 10
-1 4 10
-2 7 10
0
1
2 2 2
2
4 1 1
2 2 2
1
2 1 3
W3sicHJvYmxlbV9pZCI6IjI3MDAiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWJjZmNcdWI4NWQgXHVhY2E5XHVjNzkwIFx1YjJlNFx1YWMwMVx1ZDYxNVx1Yzc1OCBcdWIwYjRcdWJkODBcdWM4MTAiLCJkZXNjcmlwdGlvbiI6IjxwPlxyXG5cdFx1YWNhOVx1Yzc5MFx1YzgxMFx1Yzc0MCBcdWM4OGNcdWQ0NWNcdWFjMDAgXHVjODE1XHVjMjE4XHVjNzc4IFx1YzgxMFx1Yzc0NCBcdWI3M2JcdWQ1NWNcdWIyZTQuXHVhY2E5XHVjNzkwIFx1YjJlNFx1YWMwMVx1ZDYxNVx1Yzc0MCBcdWJhYThcdWI0ZTAgXHVhZjJkXHVjOWMwXHVjODEwXHVjNzc0IFx1YWNhOVx1Yzc5MFx1YzgxMFx1Yzc3OCBcdWIyZTRcdWFjMDFcdWQ2MTVcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlxyXG5cdDxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvcDFwMS5wbmdcIiBzdHlsZT1cIndpZHRoOiA1MDJweDsgaGVpZ2h0OiAyMjVweDtcIiBcLz48XC9wPlxyXG5cclxuPHA+XHJcblx0XHViMmU0XHVhYzAxXHVkNjE1XHVjNzU4IFx1YWNiZFx1YWNjNFx1YzVkMCBcdWM3ODhcdWIyOTQgXHVhY2E5XHVjNzkwXHVjODEwXHVjNzQ0IFx1YWNiZFx1YWNjNFx1YzgxMFx1Yzc3NFx1Yjc3YyBcdWQ1NWNcdWIyZTQuIChcdWM3MDQgXHVhZGY4XHViOWJjXHVjNWQwXHVjMTFjIFx1YzVmNFx1YjliMCBcdWM4MTApIFx1YjYxMFx1ZDU1YyBcdWIyZTRcdWFjMDFcdWQ2MTUgXHVjNzA0XHVjNWQwIFx1Yzc4OFx1YzljMCBcdWM1NGFcdWM3NDAgXHViMGI0XHViZDgwXHVjNzU4IFx1YWNhOVx1Yzc5MFx1YzgxMFx1Yzc0NCBcdWIwYjRcdWJkODBcdWM4MTBcdWM3NzRcdWI3N2MgXHVkNTVjXHViMmU0LiAoXHVjNzA0IFx1YWRmOFx1YjliY1x1YzVkMFx1YzExYyBcdWIyZWJcdWQ3OGMgXHVjODEwKTxcL3A+XHJcblxyXG48cD5cclxuXHRcdWIyZTRcdWFjMDFcdWQ2MTVcdWM3NTggXHViMGI0XHViZDgwXHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWM1YjRcdWI1YTBcdWQ1NWMgXHViNDUwIFx1YzgxMFx1Yzc0NCBcdWFjZThcdWI3N2MgXHViOWNjXHViNGUwIFx1YzEyMFx1YmQ4NFx1Yzc3NCBcdWJhYThcdWI0NTAgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzU4IFx1YjBiNFx1YmQ4MCBcdWI2MTBcdWIyOTQgXHVhY2JkXHVhY2M0XHVjNWQwIFx1Yzc4OFx1YjJlNFx1YmE3NCBcdWFkZjggXHViMmU0XHVhYzAxXHVkNjE1XHVjNzQ0IFx1YmNmY1x1Yjg1ZFx1ZDU1OFx1YjJlNFx1YWNlMCBcdWQ1NWNcdWIyZTQuIFx1Yzk4OSwgXHViMGI0XHVhYzAxXHVjNzU4IFx1ZDA2Y1x1YWUzMFx1YWMwMCBcdWJhYThcdWI0NTAgMTgwXHViM2M0XHViY2Y0XHViMmU0IFx1Yzc5MVx1YjJlNC4gXHViMmU0XHVhYzAxXHVkNjE1IFx1YjBiNFx1YmQ4MChcdWFjYmRcdWFjYzQgXHVjNzA0XHVjNzU4IFx1YzgxMFx1Yzc0MCBcdWM4MWNcdWM2NzhcdWQ1NWNcdWIyZTQpXHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWI0NTAgXHVjODEwIFx1YzBhY1x1Yzc3NFx1Yzc1OCBcdWJhYThcdWI0ZTAgXHVjMTIwXHViZDg0XHViM2M0IFx1YjJlNFx1YWMwMVx1ZDYxNVx1Yzc1OCBcdWIwYjRcdWJkODBcdWM1ZDAgXHVjNjQ0XHViY2JkXHVkNTU4XHVhYzhjIFx1YjRlNFx1YzViNFx1YWMwNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHJcblx0XHViY2ZjXHViODVkIFx1YWNhOVx1Yzc5MCBcdWIyZTRcdWFjMDFcdWQ2MTVcdWM3NTggXHViMGI0XHViZDgwXHVjODEwIFx1YzkxMSBcdWMyMThcdWQzYzlcdWMxMjAgXHVjMGMxXHVjNzU4IFx1YzgxMFx1YzVkMFx1YjI5NCBcdWFjMDBcdWM3YTUgXHVjNjdjXHVjYWJkIFx1YzgxMFx1YWNmYyBcdWFjMDBcdWM3YTUgXHVjNjI0XHViOTc4XHVjYWJkIFx1YzgxMFx1Yzc3NCBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQuIChcdWFjMDBcdWM3YTUgXHVjNjdjXHVjYWJkIFx1YzgxMFx1YWNmYyBcdWFjMDBcdWM3YTUgXHVjNjI0XHViOTc4XHVjYWJkIFx1YzgxMFx1Yzc3NCBcdWFjMTlcdWM3NDQgXHVjMjE4IFx1Yzc4OFx1YjJlNCkgXHVjNTQ0XHViNzk4IFx1YWRmOFx1YjliYyBBXHVjYzk4XHViN2ZjIFx1YjBiNFx1YmQ4MFx1YzgxMFx1Yzc3NCBcdWM1YzZcdWFjNzBcdWIwOTgsIEJcdWNjOThcdWI3ZmMgXHVkNTU4XHViMDk4XHViZmQwXHVjNzc4IFx1YWNiZFx1YzZiMFx1YWMwMCBcdWM3ODhcdWM3NDQgXHVjMjE4XHViM2M0IFx1Yzc4OFx1YjJlNC4gXHVhZGY4XHViOWJjIENcdWM3NTggXHVhY2JkXHVjNmIwIFx1YzU0NFx1Yjc5OCBcdWFkZjhcdWI5YmNcdWFjZmMgXHVhYzE5XHViMmU0LjxcL3A+XHJcblxyXG48cD5cclxuXHQ8aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL3AycDIucG5nXCIgc3R5bGU9XCJ3aWR0aDogNDYwcHg7IGhlaWdodDogMTU4cHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwPlxyXG5cdFx1YmNmY1x1Yjg1ZCBcdWFjYTlcdWM3OTAgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzQ0IFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWM3NDAgXHVjMjFjXHVjMTFjXHViODVjIFx1Yzc4NVx1YjgyNSBcdWJjMWJcdWM1NDQsIFx1YzIxOFx1ZDNjOVx1YzEyMFx1Yzc0NCBcdWM3NzRcdWI4ZThcdWIyOTQgXHViMGI0XHViZDgwXHVjODEwXHVjNzQ0IFx1YmFhOFx1YjQ1MCBcdWNkOWNcdWI4MjVcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG5cclxuPHA+XHJcblx0MS4gXHVjY2FiIFx1YmM4OFx1YzlmOCBcdWM4MTBcdWM3NDAgeVx1YWMxMlx1Yzc3NCBcdWFjMDBcdWM3YTUgXHVkMDcwIFx1YzgxMFx1Yzc3NFx1YjJlNC4gXHViOWNjXHVjNTdkIHlcdWFjMTJcdWM3NzQgXHVhYzE5XHVjNzQwIFx1YzgxMFx1Yzc3NCBcdWM3ODhcdWIyZTRcdWJhNzQgeFx1YWMxMlx1Yzc3NCBcdWM3OTFcdWM3NDAgXHVjMjFjXHVjNzNjXHViODVjIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG48cD5cclxuXHQyLiBcdWM4MTBcdWM3NDAgXHVjMmRjXHVhY2M0XHViYzI5XHVkNWE1XHVjNzNjXHViODVjIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlxyXG5cdFx1Yzc4NVx1YjgyNVx1Yzc1OCBcdWNjYWIgXHVjOTA0XHVjNWQwXHViMjk0IFx1ZDE0Y1x1YzJhNFx1ZDJiOFx1Yzc1OCBcdWFjMWNcdWMyMTggUCgxICZsZTsgUCAmbGU7IDEwMDApXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHJcblx0XHVhYzAxXHVhYzAxXHVjNzU4IFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNjYWIgXHVjOTA0XHVjNWQwXHViMjk0IFx1YjJlNFx1YWMwMVx1ZDYxNSBcdWM4MTBcdWM3NTggXHVhYzFjXHVjMjE4XHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWM4MTVcdWMyMTggTigzICZsZTsgTiAmbGU7IDUwKVx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YjA5OFx1YmEzOFx1YzljMCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjNzA0XHVjNWQwIFx1YzEyNFx1YmE4NVx1YjQxYyBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHVjODEwXHVjNzU4IHhcdWM4OGNcdWQ0NWNcdWM2NDAgeVx1Yzg4Y1x1ZDQ1Y1x1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHVjODE1XHVjMjE4IFx1YjQ1MCBcdWFjMWNcdWFjMDAgXHVhY2Y1XHViYzMxXHVjNzQ0IFx1YzBhY1x1Yzc3NFx1YzVkMCBcdWI0NTBcdWFjZTAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlxyXG5cdFx1Y2NhYiBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjMjE4XHVkM2M5XHVjMTIwXHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YjljY1x1YzU3ZCwgXHVjMjE4XHVkM2M5XHVjMTIwXHVjNzc0IFx1ZDU1OFx1YjA5OCBcdWM3NzRcdWMwYzEgXHVjNzg4XHViMmU0XHViYTc0LCBcdWMyMThcdWQzYzlcdWMxMjBcdWM3NTggeSBcdWM4OGNcdWQ0NWMgXHVhYzEyXHVjNzQ0IFx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHVkNTU4XHViMDk4XHVjNTI5IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHVjNzc0IFx1YjU0YyB5XHVjODhjXHVkNDVjIFx1YjBiNFx1YjliY1x1Y2MyOFx1YzIxY1x1YzczY1x1Yjg1YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YWMwMVx1YWMwMVx1Yzc1OCB5XHVjODhjXHVkNDVjIFx1YWMxMiBcdWI0YTRcdWM1ZDAgXHVhY2Y1XHViYzMxXHVjNzQ0IFx1YzBhY1x1Yzc3NFx1YzVkMCBcdWI0NTBcdWFjZTAgXHVhYzAwXHVjN2E1IFx1YzY3Y1x1Y2FiZCB4XHVjODhjXHVkNDVjXHVjNjQwIFx1YWMwMFx1YzdhNSBcdWM2MjRcdWI5NzhcdWNhYmQgeFx1Yzg4Y1x1ZDQ1Y1x1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiMjcwMCIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkludGVyaW9yIFBvaW50cyBvZiBMYXR0aWNlIFBvbHlnb25zIiwiZGVzY3JpcHRpb24iOiI8cD5BIGxhdHRpY2UgcG9pbnQgaXMgYSBwb2ludCB3aXRoIGludGVnZXIgY29vcmRpbmF0ZXMuIEEgbGF0dGljZSBwb2x5Z29uIGlzIGEgcG9seWdvbiB3aXRoIGFsbCB2ZXJ0aWNlcyBsYXR0aWNlIHBvaW50cy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9wMXAxLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjIyNXB4OyBvcGFjaXR5OjAuOTsgd2lkdGg6NTAycHhcIiBcLz48XC9wPlxyXG5cclxuPHA+VGhlIGxhdHRpY2UgcG9pbnRzIG9uIHRoZSBib3VuZGFyeSBvZiB0aGUgcG9seWdvbiBhcmUgYm91bmRhcnkgcG9pbnRzIChvcGVuIGRvdHMgaW4gdGhlIGZpZ3VyZSBhYm92ZSkgYW5kIHRoZSBwb2ludHMgaW5zaWRlIGFuZCBub3Qgb24gdGhlIHBvbHlnb24gYXJlIGludGVyaW9yIHBvaW50cyAoZmlsbGVkIGluIGRvdHMgaW4gdGhlIGZpZ3VyZSBhYm92ZSkuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkEgcG9seWdvbiBpcyBjb252ZXggaWYgYW55IGxpbmUgc2VnbWVudCBiZXR3ZWVuIHR3byBwb2ludHMgb2YgdGhlIHBvbHlnb24gaXMgaW5zaWRlIChvciBvbiB0aGUgYm91bmRhcnkgb2YpIHRoZSBwb2x5Z29uLiBFcXVpdmFsZW50bHksIHRoZSBpbnRlcmlvciBhbmdsZSBhdCBlYWNoIHBvbHlnb24gdmVydGV4IGlzIGxlc3MgdGhhbiAxODAgZGVncmVlcy4gTm90ZSB0aGF0IGFueSBsaW5lIGJldHdlZW4gdHdvIHBvaW50cyBpbnNpZGUgKGFuZCBub3Qgb24gdGhlIGJvdW5kYXJ5IG9mKSB0aGUgcG9seWdvbiBpcyBlbnRpcmVseSBpbnNpZGUgKGFuZCBub3Qgb24gdGhlIGJvdW5kYXJ5IG9mKSB0aGUgcG9seWdvbi48XC9wPlxyXG5cclxuPHA+VGhlIGludGVyaW9yIHBvaW50cyBvZiBhIGNvbnZleCBsYXR0aWNlIHBvbHlnb24gb24gYW55IGhvcml6b250YWwgbGluZSBmb3JtIGEgc2luZ2xlIHNlZ21lbnQgZnJvbSBhIGxlZnRtb3N0IHBvaW50IHRvIGEgcmlnaHRtb3N0IHBvaW50ICh3aGljaCBtYXkgYmUgdGhlIHNhbWUpLiBOb3RlIHRoYXQgdGhlcmUgbWF5IGJlIG5vIGludGVyaW9yIHBvaW50cyAoQSksIG9yIG9ubHkgb25lIChCKSwgb3IgaXNvbGF0ZWQgcG9pbnRzIChDKSBhcyBzaG93biBpbiB0aGUgZmlndXJlcyBiZWxvdy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9wMnAyLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjE1OHB4OyB3aWR0aDo0NjBweFwiIFwvPjxcL3A+XHJcblxyXG48cD5Xcml0ZSBhIHByb2dyYW0gdGhhdCByZWFkcyB0aGUgdmVydGljZXMgb2YgYSBjb252ZXggbGF0dGljZSBwb2x5Z29uIGluIHN0YW5kYXJkIG9yZGVyIGFuZCBvdXRwdXRzIHRoZSBpbnRlcmlvciBwb2ludHMgYXMgYSBsaXN0IG9mIGhvcml6b250YWwgbGluZSBzZWdtZW50cy4gVGhlIHZlcnRpY2VzIG9mIGEgbGF0dGljZSBwb2x5Z29uIGFyZSBpbiBzdGFuZGFyZCBvcmRlciBpZjombmJzcDs8XC9wPlxyXG5cclxuPHA+VGhlIGZpcnN0IHZlcnRleCBpcyB0aGUgb25lIHdpdGggdGhlIGxhcmdlc3QgeSB2YWx1ZS4gSWYgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgeSB2YWx1ZSwgdGhlIG9uZSB3aXRoIHRoZSBzbWFsbGVyIHggdmFsdWUgaXMgdGhlIGZpcnN0LiZuYnNwOzxiciBcLz5cclxuVmVydGljZXMgYXJlIGdpdmVuIGluIGNsb2Nrd2lzZSBvcmRlciBhcm91bmQgdGhlIHBvbHlnb24uPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiBpbnB1dCBjb250YWlucyBhIHNpbmdsZSBpbnRlZ2VyIFAsICgxICZsZTsgUCAmbGU7IDEwMDApLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGRhdGEgc2V0cyB0aGF0IGZvbGxvdy4gVGhlIGZpcnN0IGxpbmUgb2YgZWFjaCBkYXRhIHNldCBjb250YWlucyB0aGUgZGF0YSBzZXQgbnVtYmVyLCBmb2xsb3dlZCBieSBhIHNwYWNlLCBmb2xsb3dlZCBieSBhIGRlY2ltYWwgaW50ZWdlciBnaXZpbmcgdGhlIG51bWJlciB2ZXJ0aWNlcyBOLCAoMyAmbGU7IE4gJmxlOyA1MCksIG9mIHRoZSBwb2x5Z29uLiBUaGUgcmVtYWluaW5nIGxpbmVzIGluIHRoZSBkYXRhIHNldCBjb250YWluIHRoZSB2ZXJ0aWNlcywgb25lIHBlciBsaW5lIGluIHN0YW5kYXJkIG9yZGVyLiBFYWNoIGxpbmUgY29udGFpbnMgdGhlIGRlY2ltYWwgaW50ZWdlciB4IGNvb3JkaW5hdGUsIGEgc3BhY2UgYW5kIHRoZSBkZWNpbWFsIGludGVnZXIgeSBjb29yZGluYXRlLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIGRhdGEgc2V0IHRoZXJlIGFyZSBtdWx0aXBsZSBsaW5lcyBvZiBvdXRwdXQuIFRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIGEgZGVjaW1hbCBpbnRlZ2VyIGdpdmluZyB0aGUgZGF0YSBzZXQgbnVtYmVyIGZvbGxvd2VkIGJ5IGEgc2luZ2xlIHNwYWNlLCBmb2xsb3dlZCBieSBhIGRlY2ltYWwgaW50ZWdlciBnaXZpbmcgdGhlIG51bWJlciBvZiBob3Jpem9udGFsIGxpbmVzIHdoaWNoIGNvbnRhaW4gaW50ZXJpb3IgcG9pbnRzICh0aGlzIG1heSBiZSB6ZXJvICgwKSBvciBtb3JlKS4gVGhlIGxpbmVzIG9mIGludGVyaW9yIHBvaW50cywgaWYgYW55LCBmb2xsb3csIG9uZSBwZXIgbGluZSBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHkgdmFsdWUuIEVhY2ggbGluZSBjb250YWlucyB0aGUgZGVjaW1hbCBpbnRlZ2VyIHkgY29vcmRpbmF0ZSwgYSBzaW5nbGUgc3BhY2UgYW5kIHRoZSBkZWNpbWFsIGludGVnZXIgeCBjb29yZGluYXRlIG9mIHRoZSBsZWZ0IG1vc3QgcG9pbnQsIGEgc2luZ2xlIHNwYWNlIGFuZCB0aGUgZGVjaW1hbCBpbnRlZ2VyIHggY29vcmRpbmF0ZSBvZiB0aGUgcmlnaHQgbW9zdCBwb2ludC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWM2MDFcdWM1YjQifV0=