시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
7 초 256 MB 89 24 22 30.556%

문제

린셰핑(Linköping)의 수도 시설은 복잡하다. 린셰핑 근교에는 지하수를 뽑는 수원지가 몇개 있다. 지하수는 파이프를 통해서 전달되는데, 파이프는 직선으로 한 수원지와 한 도시의 지점을 잇는다.

파이프의 지하 깊이는 모두 같아서. 두 파이프가 교차하면 교차점을 만든다. 교차점에서는 정확히 두개의 파이프만이 만남을 보장한다. 수원지는 교차점으로 치지 않으며, 수원지에서는 0개 이상의 파이프가 출발할 수 있다.

교차점에는 가끔 이물질이 막히는데, 이러한 이물질은 파이프에 큰 부담을 주어서 싱크홀 현상을 만든다. 최근 캠릿브지 대학의 연구에 의하면, 이러한 싱크홀을 본 린셰핑의 대학생들은 보통 인생의 회의를 느끼고, 공부를 그만두며, 결국 사회의 붕괴를 초래한다고 한다. 사회의 유지를 위해서, 린셰핑의 수도 시설 관리 기업인 Nordic Water Extraction and Redistribution Company (NWERC) 는 로봇을 설계했다. 로봇은 수원지에서 파이프로 집어넣을 수 있으며, 파이프를 한번 왔다갔다하면서 파이프에 있는 모든 교차점을 청소한다. 정부에서는, 교차점에서 로봇이 충돌하는 일을 막기 위해, 두 파이프가 만나는 교차점이 있다면, 오직 한 파이프만이 로봇을 포함할 수 있다는 규정을 만들었다.

파이프를 청소하는 동안에는 수도 시설이 닫힌다 (이것도 정부 규정이다). 고로, NWERC는 한번의 로봇 청소만으로 모든 파이프를 청소하고자 한다. 당신은, 어떠한 파이프의 부분집합에 동시에 로봇을 삽입해서, 로봇들이 모든 교차점을 청소하고, 두 로봇이 충돌하는 일이 없는지를 판별하여야 한다.

입력

입력은 다음과 같다.

  • 첫번째 줄에는 w (1 ≤ w ≤ 1,000), p(1 ≤ p ≤ 1,000) 가 주어진다. w는 수원지의 개수, p는 파이프의 개수를 뜻한다.
  • 이후 w개의 줄에 xi and yi (−10 000 ≤ x, y ≤ 10 000) 가 주어진다. i번 수원지의 위치를 뜻한다. (수원지는 1부터 w까지 순서대로 번호가 붙어있다)
  • 이후 p개의 줄에 세 정수 s (1 ≤ s ≤ w), x, y (−10 000 ≤ x, y ≤ 10 000) 가 주어진다. 파이프가 s번 수원지에서 출발해서 (x, y)에서 종료함을 뜻한다.

각각의 파이프는 1개의 수원지(=시작점) 만을 포함하며, 3개 이상의 파이프가 만나는 모든 점은 수원지다. 두 파이프는 많아야 1개의 교점을 가지며, 교점은 파이프의 끝점에 있을 수도 있다. 모든 파이프의 길이는 0 초과이다.

출력

판별 결과에 따라 가능하면 "possible", 아니면 "impossible"을 출력한다.

예제 입력 1

3 3
0 0
0 2
2 0
1 2 3
2 2 2
3 0 3

예제 출력 1

impossible

예제 입력 2

2 3
0 0
0 10
1 5 15
1 2 15
2 10 10

예제 출력 2

possible

힌트

W3sicHJvYmxlbV9pZCI6IjExNjY4IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVkMzBjXHVjNzc0XHVkNTA0IFx1Y2NhZFx1YzE4YyIsImRlc2NyaXB0aW9uIjoiPHA+XHViOWIwXHVjMTcwXHVkNTUxKExpbmsmb3VtbDtwaW5nKVx1Yzc1OCBcdWMyMThcdWIzYzQgXHVjMmRjXHVjMTI0XHVjNzQwIFx1YmNmNVx1YzdhMVx1ZDU1OFx1YjJlNC4gXHViOWIwXHVjMTcwXHVkNTUxIFx1YWRmY1x1YWQ1MFx1YzVkMFx1YjI5NCBcdWM5YzBcdWQ1NThcdWMyMThcdWI5N2MgXHViZjUxXHViMjk0IFx1YzIxOFx1YzZkMFx1YzljMFx1YWMwMCBcdWJhODdcdWFjMWMgXHVjNzg4XHViMmU0LiBcdWM5YzBcdWQ1NThcdWMyMThcdWIyOTQgXHVkMzBjXHVjNzc0XHVkNTA0XHViOTdjIFx1ZDFiNVx1ZDU3NFx1YzExYyBcdWM4MDRcdWIyZWNcdWI0MThcdWIyOTRcdWIzNzAsIFx1ZDMwY1x1Yzc3NFx1ZDUwNFx1YjI5NCBcdWM5YzFcdWMxMjBcdWM3M2NcdWI4NWMgXHVkNTVjIFx1YzIxOFx1YzZkMFx1YzljMFx1YzY0MCBcdWQ1NWMgXHViM2M0XHVjMmRjXHVjNzU4IFx1YzljMFx1YzgxMFx1Yzc0NCBcdWM3ODdcdWIyOTRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDMwY1x1Yzc3NFx1ZDUwNFx1Yzc1OCBcdWM5YzBcdWQ1NTggXHVhZTRhXHVjNzc0XHViMjk0IFx1YmFhOFx1YjQ1MCBcdWFjMTlcdWM1NDRcdWMxMWMuIFx1YjQ1MCBcdWQzMGNcdWM3NzRcdWQ1MDRcdWFjMDAgXHVhZDUwXHVjYzI4XHVkNTU4XHViYTc0IFx1YWQ1MFx1Y2MyOFx1YzgxMFx1Yzc0NCBcdWI5Y2NcdWI0ZTBcdWIyZTQuIFx1YWQ1MFx1Y2MyOFx1YzgxMFx1YzVkMFx1YzExY1x1YjI5NCBcdWM4MTVcdWQ2NTVcdWQ3ODggXHViNDUwXHVhYzFjXHVjNzU4IFx1ZDMwY1x1Yzc3NFx1ZDUwNFx1YjljY1x1Yzc3NCBcdWI5Y2NcdWIwYThcdWM3NDQgXHViY2Y0XHVjN2E1XHVkNTVjXHViMmU0LiBcdWMyMThcdWM2ZDBcdWM5YzBcdWIyOTQgXHVhZDUwXHVjYzI4XHVjODEwXHVjNzNjXHViODVjIFx1Y2U1OFx1YzljMCBcdWM1NGFcdWM3M2NcdWJhNzAsIFx1YzIxOFx1YzZkMFx1YzljMFx1YzVkMFx1YzExY1x1YjI5NCAwXHVhYzFjIFx1Yzc3NFx1YzBjMVx1Yzc1OCBcdWQzMGNcdWM3NzRcdWQ1MDRcdWFjMDAgXHVjZDljXHViYzFjXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWQ1MFx1Y2MyOFx1YzgxMFx1YzVkMFx1YjI5NCBcdWFjMDBcdWIwNTQgXHVjNzc0XHViYjNjXHVjOWM4XHVjNzc0IFx1YjljOVx1ZDc4OFx1YjI5NFx1YjM3MCwgXHVjNzc0XHViN2VjXHVkNTVjIFx1Yzc3NFx1YmIzY1x1YzljOFx1Yzc0MCBcdWQzMGNcdWM3NzRcdWQ1MDRcdWM1ZDAgXHVkMDcwIFx1YmQ4MFx1YjJmNFx1Yzc0NCBcdWM4ZmNcdWM1YjRcdWMxMWMgXHVjMmYxXHVkMDZjXHVkNjQwIFx1ZDYwNFx1YzBjMVx1Yzc0NCBcdWI5Y2NcdWI0ZTBcdWIyZTQuIFx1Y2Q1Y1x1YWRmYyBcdWNlYTBcdWI5YmZcdWJlMGNcdWM5YzAgXHViMzAwXHVkNTU5XHVjNzU4IFx1YzVmMFx1YWQ2Y1x1YzVkMCBcdWM3NThcdWQ1NThcdWJhNzQsIFx1Yzc3NFx1YjdlY1x1ZDU1YyBcdWMyZjFcdWQwNmNcdWQ2NDBcdWM3NDQgXHViY2Y4IFx1YjliMFx1YzE3MFx1ZDU1MVx1Yzc1OCBcdWIzMDBcdWQ1NTlcdWMwZGRcdWI0ZTRcdWM3NDAgXHViY2Y0XHVkMWI1IFx1Yzc3OFx1YzBkZFx1Yzc1OCBcdWQ2OGNcdWM3NThcdWI5N2MgXHViMjkwXHViMDdjXHVhY2UwLCBcdWFjZjVcdWJkODBcdWI5N2MgXHVhZGY4XHViOWNjXHViNDUwXHViYTcwLCBcdWFjYjBcdWFkNmQgXHVjMGFjXHVkNjhjXHVjNzU4IFx1YmQ5NVx1YWQzNFx1Yjk3YyBcdWNkMDhcdWI3OThcdWQ1NWNcdWIyZTRcdWFjZTAgXHVkNTVjXHViMmU0LiZuYnNwO1x1YzBhY1x1ZDY4Y1x1Yzc1OCBcdWM3MjBcdWM5YzBcdWI5N2MgXHVjNzA0XHVkNTc0XHVjMTFjLCBcdWI5YjBcdWMxNzBcdWQ1NTFcdWM3NTggXHVjMjE4XHViM2M0IFx1YzJkY1x1YzEyNCBcdWFkMDBcdWI5YWMgXHVhZTMwXHVjNWM1XHVjNzc4IE5vcmRpYyBXYXRlciBFeHRyYWN0aW9uIGFuZCBSZWRpc3RyaWJ1dGlvbiBDb21wYW55IChOV0VSQykgXHViMjk0IFx1Yjg1Y1x1YmQwN1x1Yzc0NCBcdWMxMjRcdWFjYzRcdWQ1ODhcdWIyZTQuIFx1Yjg1Y1x1YmQwN1x1Yzc0MCBcdWMyMThcdWM2ZDBcdWM5YzBcdWM1ZDBcdWMxMWMgXHVkMzBjXHVjNzc0XHVkNTA0XHViODVjIFx1YzlkMVx1YzViNFx1YjEyM1x1Yzc0NCBcdWMyMTggXHVjNzg4XHVjNzNjXHViYTcwLCBcdWQzMGNcdWM3NzRcdWQ1MDRcdWI5N2MgXHVkNTVjXHViYzg4IFx1YzY1NFx1YjJlNFx1YWMxNFx1YjJlNFx1ZDU1OFx1YmE3NFx1YzExYyBcdWQzMGNcdWM3NzRcdWQ1MDRcdWM1ZDAgXHVjNzg4XHViMjk0IFx1YmFhOFx1YjRlMCBcdWFkNTBcdWNjMjhcdWM4MTBcdWM3NDQgXHVjY2FkXHVjMThjXHVkNTVjXHViMmU0LiBcdWM4MTVcdWJkODBcdWM1ZDBcdWMxMWNcdWIyOTQsIFx1YWQ1MFx1Y2MyOFx1YzgxMFx1YzVkMFx1YzExYyBcdWI4NWNcdWJkMDdcdWM3NzQgXHVjZGE5XHViM2NjXHVkNTU4XHViMjk0IFx1Yzc3Y1x1Yzc0NCBcdWI5YzlcdWFlMzAgXHVjNzA0XHVkNTc0LCBcdWI0NTAgXHVkMzBjXHVjNzc0XHVkNTA0XHVhYzAwIFx1YjljY1x1YjA5OFx1YjI5NCBcdWFkNTBcdWNjMjhcdWM4MTBcdWM3NzQgXHVjNzg4XHViMmU0XHViYTc0LCBcdWM2MjRcdWM5YzEgXHVkNTVjIFx1ZDMwY1x1Yzc3NFx1ZDUwNFx1YjljY1x1Yzc3NCBcdWI4NWNcdWJkMDdcdWM3NDQgXHVkM2VjXHVkNTY4XHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTRcdWIyOTQgXHVhZGRjXHVjODE1XHVjNzQ0IFx1YjljY1x1YjRlNFx1YzVjOFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVkMzBjXHVjNzc0XHVkNTA0XHViOTdjIFx1Y2NhZFx1YzE4Y1x1ZDU1OFx1YjI5NCBcdWIzZDlcdWM1NDhcdWM1ZDBcdWIyOTQgXHVjMjE4XHViM2M0IFx1YzJkY1x1YzEyNFx1Yzc3NCBcdWIyZWJcdWQ3OGNcdWIyZTQgKFx1Yzc3NFx1YWM4M1x1YjNjNCBcdWM4MTVcdWJkODAgXHVhZGRjXHVjODE1XHVjNzc0XHViMmU0KS4gXHVhY2UwXHViODVjLCBOV0VSQ1x1YjI5NCBcdWQ1NWNcdWJjODhcdWM3NTggXHViODVjXHViZDA3IFx1Y2NhZFx1YzE4Y1x1YjljY1x1YzczY1x1Yjg1YyBcdWJhYThcdWI0ZTAgXHVkMzBjXHVjNzc0XHVkNTA0XHViOTdjIFx1Y2NhZFx1YzE4Y1x1ZDU1OFx1YWNlMFx1Yzc5MCBcdWQ1NWNcdWIyZTQuIFx1YjJmOVx1YzJlMFx1Yzc0MCwgXHVjNWI0XHViNWEwXHVkNTVjIFx1ZDMwY1x1Yzc3NFx1ZDUwNFx1Yzc1OCBcdWJkODBcdWJkODRcdWM5ZDFcdWQ1NjlcdWM1ZDAgXHViM2Q5XHVjMmRjXHVjNWQwIFx1Yjg1Y1x1YmQwN1x1Yzc0NCBcdWMwYmRcdWM3ODVcdWQ1NzRcdWMxMWMsIFx1Yjg1Y1x1YmQwN1x1YjRlNFx1Yzc3NCBcdWJhYThcdWI0ZTAgXHVhZDUwXHVjYzI4XHVjODEwXHVjNzQ0IFx1Y2NhZFx1YzE4Y1x1ZDU1OFx1YWNlMCwgXHViNDUwIFx1Yjg1Y1x1YmQwN1x1Yzc3NCBcdWNkYTlcdWIzY2NcdWQ1NThcdWIyOTQgXHVjNzdjXHVjNzc0IFx1YzVjNlx1YjI5NFx1YzljMFx1Yjk3YyBcdWQzMTBcdWJjYzRcdWQ1NThcdWM1ZWNcdWM1N2MgXHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjNzg1XHViODI1XHVjNzQwIFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+XHVjY2FiXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCB3ICgxICZsZTsgdyAmbGU7IDEsMDAwKSwgcCgxICZsZTsgcCAmbGU7IDEsMDAwKSBcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiB3XHViMjk0IFx1YzIxOFx1YzZkMFx1YzljMFx1Yzc1OCBcdWFjMWNcdWMyMTgsIHBcdWIyOTQgXHVkMzBjXHVjNzc0XHVkNTA0XHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjk3YyBcdWI3M2JcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1Yzc3NFx1ZDZjNCB3XHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMCB4PHN1Yj5pPFwvc3ViPiBhbmQgeTxzdWI+aTxcL3N1Yj4gKCZtaW51czsxMCAwMDAgJmxlOyB4LCB5ICZsZTsgMTAgMDAwKSBcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBpXHViYzg4IFx1YzIxOFx1YzZkMFx1YzljMFx1Yzc1OCBcdWM3MDRcdWNlNThcdWI5N2MgXHViNzNiXHVkNTVjXHViMmU0LiAoXHVjMjE4XHVjNmQwXHVjOWMwXHViMjk0IDFcdWJkODBcdWQxMzAgd1x1YWU0Y1x1YzljMCBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHViYzg4XHVkNjM4XHVhYzAwIFx1YmQ5OVx1YzViNFx1Yzc4OFx1YjJlNCk8XC9saT5cclxuXHQ8bGk+XHVjNzc0XHVkNmM0IHBcdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwIFx1YzEzOCBcdWM4MTVcdWMyMTggcyAoMSAmbGU7IHMgJmxlOyB3KSwgeCwgeSAoJm1pbnVzOzEwIDAwMCAmbGU7IHgsIHkgJmxlOyAxMCAwMDApIFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1ZDMwY1x1Yzc3NFx1ZDUwNFx1YWMwMCBzXHViYzg4IFx1YzIxOFx1YzZkMFx1YzljMFx1YzVkMFx1YzExYyBcdWNkOWNcdWJjMWNcdWQ1NzRcdWMxMWMgKHgsIHkpXHVjNWQwXHVjMTFjIFx1Yzg4NVx1YjhjY1x1ZDU2OFx1Yzc0NCBcdWI3M2JcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+XHVhYzAxXHVhYzAxXHVjNzU4IFx1ZDMwY1x1Yzc3NFx1ZDUwNFx1YjI5NCAxXHVhYzFjXHVjNzU4IFx1YzIxOFx1YzZkMFx1YzljMCg9XHVjMmRjXHVjNzkxXHVjODEwKSBcdWI5Y2NcdWM3NDQgXHVkM2VjXHVkNTY4XHVkNTU4XHViYTcwLCAzXHVhYzFjIFx1Yzc3NFx1YzBjMVx1Yzc1OCBcdWQzMGNcdWM3NzRcdWQ1MDRcdWFjMDAgXHViOWNjXHViMDk4XHViMjk0IFx1YmFhOFx1YjRlMCBcdWM4MTBcdWM3NDAgXHVjMjE4XHVjNmQwXHVjOWMwXHViMmU0LiBcdWI0NTAgXHVkMzBjXHVjNzc0XHVkNTA0XHViMjk0IFx1YjljZVx1YzU0NFx1YzU3YyAxXHVhYzFjXHVjNzU4IFx1YWQ1MFx1YzgxMFx1Yzc0NCBcdWFjMDBcdWM5YzBcdWJhNzAsIFx1YWQ1MFx1YzgxMFx1Yzc0MCBcdWQzMGNcdWM3NzRcdWQ1MDRcdWM3NTggXHViMDVkXHVjODEwXHVjNWQwIFx1Yzc4OFx1Yzc0NCBcdWMyMThcdWIzYzQgXHVjNzg4XHViMmU0LiBcdWJhYThcdWI0ZTAgXHVkMzBjXHVjNzc0XHVkNTA0XHVjNzU4IFx1YWUzOFx1Yzc3NFx1YjI5NCAwIFx1Y2QwOFx1YWNmY1x1Yzc3NFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWQzMTBcdWJjYzQgXHVhY2IwXHVhY2ZjXHVjNWQwIFx1YjUzMFx1Yjc3YyBcdWFjMDBcdWIyYTVcdWQ1NThcdWJhNzQgJnF1b3Q7cG9zc2libGUmcXVvdDssIFx1YzU0NFx1YjJjOFx1YmE3NCAmcXVvdDtpbXBvc3NpYmxlJnF1b3Q7XHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWQ1NWNcdWFkNmRcdWM1YjQifSx7InByb2JsZW1faWQiOiIxMTY2OCIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkNsZWFuaW5nIFBpcGVzIiwiZGVzY3JpcHRpb24iOiI8cD5MaW5rJm91bWw7cGluZyBoYXMgYSBxdWl0ZSBjb21wbGV4IHdhdGVyIHRyYW5zcG9ydCBzeXN0ZW0uIEFyb3VuZCBMaW5rJm91bWw7cGluZyB0aGVyZSBhcmUgc2V2ZXJhbCB3ZWxscyBmcm9tIHdoaWNoIHdhdGVyIGlzIGRyYXduLiBUaGUgd2F0ZXIgaXMgdGhlbiB0cmFuc3BvcnRlZCB0byBvdGhlciBsb2NhdGlvbnMgdXNpbmcgcGlwZXMuIEVhY2ggcGlwZSBpcyBhIHN0cmFpZ2h0IGNhbmFsIGZyb20gb25lIG9mIHRoZSB3ZWxscyB0byBzb21lIGxvY2F0aW9uIGluIHRoZSBjaXR5LjxcL3A+XHJcblxyXG48cD5BbGwgdGhlIHBpcGVzIGFyZSBhdCB0aGUgc2FtZSBkZXB0aCB1bmRlciBncm91bmQuIFRoZXJlZm9yZSwgd2hlbmV2ZXIgdHdvIHBpcGVzIGNyb3NzLCB0aGV5IGZvcm0gYW4gaW50ZXJzZWN0aW9uLiBMdWNraWx5IHRoZSBwaXBlIHN5c3RlbSB3YXMgY29uc3RydWN0ZWQgaW4gc3VjaCBhIHdheSB0aGF0IGV4YWN0bHkgdHdvIHBpcGVzIG1lZXQgYXQgZWFjaCBzdWNoIGludGVyc2VjdGlvbi4gVGhlIHdlbGxzIGRvIG5vdCBjb3VudCBhcyBpbnRlcnNlY3Rpb25zLiBBbnkgbnVtYmVyIG9mIHBpcGVzIChpbmNsdWRpbmcgemVybyBvciBtb3JlIHRoYW4gdHdvKSBtYXkgb3JpZ2luYXRlIGF0IGVhY2ggd2VsbC48XC9wPlxyXG5cclxuPHA+VGhlIGludGVyc2VjdGlvbnMgcG9zZSBhIHByb2JsZW0sIHNpbmNlIGRpcnQgKGEgbWl4dHVyZSBvZiBsaW1lIGFuZCBvdGhlciAmbGRxdW87cmVtYWlucyZyZHF1bzspIHRlbmRzIHRvIGdldCBzdHVjayB0aGVyZS4gVGhpcyBkaXJ0IGNhdXNlcyB0aGUgcGlwZXMgdG8gZGVncmFkZSBhbmQgY29sbGFwc2UsIGxlYWRpbmcgdG8gdGhlIGZvcm1hdGlvbiBvZiBsYXJnZSBzaW5rIGhvbGVzLiBTdWNoIHNpbmsgaG9sZXMgaGF2ZSBhIG1lc21lcmlzaW5nIGVmZmVjdCBvbiB0aGUgc3R1ZGVudHMgaW4gTGluayZvdW1sO3BpbmcsIGNhdXNpbmcgdGhlbSB0byBuZWdsZWN0IHRoZWlyIHN0dWRpZXMgYW5kIHJlbWFpbiB1bmVkdWNhdGVkLCB3aGljaCBpbiB0aGUgbG9uZyBydW4gd2lsbCBsZWFkIHRvIGEgY29sbGFwc2Ugb2Ygbm90IGp1c3QgdGhlIHBpcGUgc3lzdGVtIGJ1dCBvZiB0aGUgdmVyeSBmYWJyaWMgb2Ygc29jaWV0eS4gVGhlcmVmb3JlIGl0IGlzIGltcGVyYXRpdmUgdGhhdCB0aGUgcGlwZXMgYXJlIHJlZ3VsYXJseSBjbGVhbmVkLiBUaGUgTm9yZGljIFdhdGVyIEV4dHJhY3Rpb24gYW5kIFJlZGlzdHJpYnV0aW9uIENvbXBhbnkgKE5XRVJDKSAmbmRhc2g7IHdoaWNoIGlzIGluIGNoYXJnZSBvZiBMaW5rJm91bWw7cGluZyZyc3F1bztzIHdhdGVycGlwZXMgJm5kYXNoOyBoYXMgYW4gYW1wbGUgZmxlZXQgb2Ygcm9ib3RzIHRvIHBlcmZvcm0gdGhpcyB0YXNrLiBBIHJvYm90IGNhbiBiZSBpbnNlcnRlZCBpbnRvIGEgcGlwZSBhdCB0aGUgd2VsbCB3aGVyZSB0aGUgcGlwZSBiZWdpbnMuIFRoZSByb2JvdCB0aGVuIGdvZXMgdGhyb3VnaCB0aGUgcGlwZSBhbGwgdGhlIHdheSB0byBpdHMgZW5kIGFuZCBjbGVhbnMgYWxsIGludGVyc2VjdGlvbnMgYWxvbmcgdGhlIHdheS4gQWZ0ZXIgcmVhY2hpbmcgdGhlIGVuZCwgdGhlIHJvYm90IHR1cm5zIGFyb3VuZCBhbmQgcmV0dXJucyBiYWNrIHRvIHRoZSB3ZWxsIHdoZXJlIGl0IHN0YXJ0ZWQuIEluIG9yZGVyIHRvIHByZXZlbnQgcm9ib3QgY29sbGlzaW9ucywgZ292ZXJubWVudCByZWd1bGF0aW9ucyBzdGlwdWxhdGUgdGhhdCB3aGVuZXZlciB0d28gcGlwZXMgaW50ZXJzZWN0LCBhdCBtb3N0IG9uZSBvZiB0aGVtIG1heSBjb250YWluIGEgcm9ib3QuPFwvcD5cclxuXHJcbjxwPlNpbmNlIHRoZSB3aG9sZSB3YXRlciBzeXN0ZW0gaGFzIHRvIGJlIHNodXQgZG93biB3aGlsZSBpdCBpcyBiZWluZyBjbGVhbmVkIChhbm90aGVyIGdvdmVybm1lbnQgcmVndWxhdGlvbiksIHRoZSBOV0VSQyB3b3VsZCBsaWtlIHRvIGRvIHRoZSBjbGVhbmluZyBxdWlja2x5LCBieSB1c2luZyBhIHNpbmdsZSBiYXRjaCBvZiBjbGVhbmluZyByb2JvdHMsIGFsbCBzdGFydGVkIGF0IHRoZSBzYW1lIHRpbWUuPFwvcD5cclxuXHJcbjxwPllvdXIgdGFzayBpcyB0byB2ZXJpZnkgd2hldGhlciB0aGlzIGNhbiBiZSBkb25lICZuZGFzaDsgaS5lLiwgd2hldGhlciB3ZSBjYW4gc2ltdWx0YW5lb3VzbHkgaW5zZXJ0IHJvYm90cyBpbnRvIGEgc3Vic2V0IG9mIHRoZSBwaXBlcyBpbiBzdWNoIGEgd2F5IHRoYXQgdGhlIHJvYm90cyB3aWxsIGNsZWFuIGFsbCBpbnRlcnNlY3Rpb25zIGFuZCB0aGVyZSB3aWxsIGJlIG5vIHJpc2sgb2YgdHdvIHJvYm90cyBjb2xsaWRpbmcuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgaW5wdXQgY29uc2lzdHMgb2Y6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+b25lIGxpbmUgd2l0aCB0d28gaW50ZWdlcnMgdyAoMSAmbGU7IHcgJmxlOyAxIDAwMCksIHRoZSBudW1iZXIgb2Ygd2VsbHMsIGFuZCBwICgxICZsZTsgcCAmbGU7IDEgMDAwKSwgdGhlIG51bWJlciBvZiBwaXBlczs8XC9saT5cclxuXHQ8bGk+dyBsaW5lcywgdGhlIGl0aCBvZiB3aGljaCBjb250YWlucyB0d28gaW50ZWdlcnMgeDxzdWI+aTxcL3N1Yj4gYW5kIHk8c3ViPmk8XC9zdWI+ICgmbWludXM7MTAgMDAwICZsZTsgeCwgeSAmbGU7IDEwIDAwMCksIHRoZSBwb3NpdGlvbiBvZiB3ZWxsIG51bWJlciBpICh0aGUgd2VsbHMgYXJlIG51bWJlcmVkIGZyb20gMSB0byB3KTs8XC9saT5cclxuXHQ8bGk+cCBsaW5lcyBlYWNoIHdpdGggdGhyZWUgaW50ZWdlcnMgcyAoMSAmbGU7IHMgJmxlOyB3KSwgdGhlIHdlbGwgYXQgd2hpY2ggdGhlIHBpcGUgc3RhcnRzLCBhbmQgeCBhbmQgeSAoJm1pbnVzOzEwIDAwMCAmbGU7IHgsIHkgJmxlOyAxMCAwMDApLCB0aGUgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHBpcGUgZW5kcy48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5FYWNoIHBpcGUgd2lsbCBjb250YWluIGV4YWN0bHkgb25lIHdlbGwsIHRoZSBvbmUgYXQgd2hpY2ggaXQgc3RhcnRzLiBBbnkgcG9pbnQgc2hhcmVkIGJ5IG1vcmUgdGhhbiB0d28gcGlwZXMgd2lsbCBiZSBhIHdlbGwuIEFueSB0d28gcGlwZXMgc2hhcmUgYXQgbW9zdCBvbmUgY29tbW9uIHBvaW50LiBUaGUgY29tbW9uIHBvaW50IG9mIHR3byBwaXBlcyBtYXkgYmUgdGhlIGVuZHBvaW50IG9mIG9uZSBvciBib3RoIG9mIHRoZW0uIEFsbCBwaXBlcyBoYXZlIHBvc2l0aXZlIGxlbmd0aC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5JZiBpdCBpcyBwb3NzaWJsZSB0byBjbGVhbiBhbGwgaW50ZXJzZWN0aW9ucyBhcyBkZXNjcmliZWQgYWJvdmUsIG91dHB1dCAmbGRxdW87cG9zc2libGUmcmRxdW87LiBPdGhlcndpc2UsIG91dHB1dCAmbGRxdW87aW1wb3NzaWJsZSZyZHF1bzsuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d